最好是用规则式,便于更改游戏.
游戏实现不是很难,主要就是判断函数用什么方法做,这样会决定程序的好坏!~这个程序小,可以一一列举,就是穷举法,如果要是复杂的游戏呢,例如麻将等.还是找一本人工职能的书,熟悉下里面的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;
}
美女交个朋友啊!~!~
支持了!!!!!!!!!!!!