当前位置: 代码迷 >> C语言 >> 请教各位前辈一个程序的编写
  详细解决方案

请教各位前辈一个程序的编写

热度:168   发布时间:2006-04-29 12:53:00.0

最好是用规则式,便于更改游戏.
游戏实现不是很难,主要就是判断函数用什么方法做,这样会决定程序的好坏!~这个程序小,可以一一列举,就是穷举法,如果要是复杂的游戏呢,例如麻将等.还是找一本人工职能的书,熟悉下里面的A算法和A*算法等等的东西,对你编写人机对战的程序帮助嗷嗷大,要写人机对战的程序,难,我也是初学,看过点东西,在此瞎说,见笑!


----------------解决方案--------------------------------------------------------
晕 发错了 不是这个帖子 怎么条到这里来了,不好意思.
汗!~~~~~
----------------解决方案--------------------------------------------------------

晕,真的明白?建议看一下数据结构,分块写,要不然写好这样一个程序要晕的


----------------解决方案--------------------------------------------------------

//完全按照楼主的意图写的

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 3

int main(void)
{
int iarra[SIZE][SIZE] = {0};

void Process(int iarra[][SIZE]);

Process(iarra);

getch();
return 0;
}

void Process(int iarra[][SIZE])
{
int irow, icolumn, icount = 0;

int Compare(int iarra[][SIZE]);

while (1)
{
{ //你放棋子的位置
printf("Enter irow, icolumn:\n " );
scanf("%d %d", &irow, &icolumn);
iarra[irow][icolumn] = 1;
printf("Person: irow = %d, icolumn = %d\n", irow, icolumn);
icount++;
}

{ //机器放棋子的位置
int ic, id;

srand(time(NULL));

ic = rand() % 3;
id = rand() % 3;
while (iarra[ic][id] == 1 || iarra[ic][id] == 2)
{
ic = rand() % 3;
id = rand() % 3;
}
iarra[ic][id] = 2;
printf("Machine: ic = %d, id = %d\n\n", ic, id);
icount++;
}
{
int flag;

flag = Compare(iarra);
if ( flag == 1)
{
printf("you win.\n");
return ;
}
else if (flag == 0)
{
printf("machine win.\n");
return ;
}
else if (flag == -1)
{
if (icount == 9)
{
printf("both failure.\n");
return ;
}
}
}
}//while
}//Process

int Compare(int iarra[][SIZE])
{
int ie, ig;

for (ie = 0; ie < SIZE; ie++) //行看输赢
{
if (iarra[ie][0] == 1 && iarra[ie][1] == 1 && iarra[ie][2] == 1)
{
return 1;
}
if (iarra[ie][0] == 2 && iarra[ie][1] == 2 && iarra[ie][2] == 2)
{
return 0;
}
}
for (ig = 0; ig < SIZE; ig++) //列看输赢
{
if (iarra[0][ig] == 1 && iarra[1][ig] == 1 && iarra[2][ig] == 1)
{
return 1;
}
if (iarra[0][ig] == 2 && iarra[1][ig] == 2 && iarra[2][ig] == 2)
{
return 0;
}
}

if (iarra[0][0] == 1 && iarra[1][1] == 1 && iarra[2][2] == 1)
{
return 1;
}
if (iarra[0][0] == 2 && iarra[1][1] == 2 && iarra[2][2] == 2)
{
return 0;
}

if (iarra[0][2] == 1 && iarra[1][1] == 1 && iarra[2][0] == 1)
{
return 1;
}
if (iarra[0][2] == 2 && iarra[1][1] == 2 && iarra[2][0] == 2)
{
return 0;
}

return -1;
}

美女交个朋友啊!~!~





























































----------------解决方案--------------------------------------------------------
太清楚了,非常感谢!
第一次来这里,这里的人真好啊,很热情啊!
----------------解决方案--------------------------------------------------------
严重B4 24楼的最后一句话~

----------------解决方案--------------------------------------------------------

支持了!!!!!!!!!!!!


----------------解决方案--------------------------------------------------------

我也是广东金融学院的哦,你是大一哪个班的?


----------------解决方案--------------------------------------------------------
请问小女子你学什么专业,初学者就编这种等程序,你们老师是不是很厉害?
----------------解决方案--------------------------------------------------------

不能在这里拉关系,这是知识交流的地方


----------------解决方案--------------------------------------------------------
  相关解决方案