简单的“三子棋”

来源:互联网 发布:手机流量软件 编辑:程序博客网 时间:2024/06/07 09:09
#ifndef __GAME_H__
#define __GAME_H__
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


#define ROW 3
#define COLS 3


void init(char a[ROW][COLS],int row, int cols);
void display(char a[ROW][COLS],int row, int cols);
void player_move(char a[ROW][COLS],int row, int cols);
void computer_move(char a[ROW][COLS], int row,int cols);
int  is_full(char a[ROW][COLS], int row,int cols);
char is_win(char a[ROW][COLS], int row,int cols);








#endif //__GAME_H__



-------------------------------------------------------------------------------------------------------------------------------------





#include "Game.h"




void init(char a[ROW][COLS],int row, int cols)
{


int i = 0;
int j = 0;


for (i=0; i<row; i++)
{
for (j=0; j<cols; j++)
{
a[i][j] = ' ';

}

}
}


void display(char a[ROW][COLS],int row, int cols)
{
int i = 0;
for (i=0; i<row; i++)
{
printf(" %c | %c | %c \n",a[i][0],a[i][1],a[i][2]);
if (i!=2)
{
printf("---|---|---\n");
}
}




}
void player_move(char a[ROW][COLS],int row, int cols)
{
int x = 0;
int y = 0;
while (1)
{

printf("请输入你要走的坐标:》\n");

scanf("%d%d",&x,&y);
x--;
y--;
if (((x>=0)&&(x<=2))&&((y>=0)&&(y<=2)))
{
if (a[x][y] == ' ')
{
a[x][y] = 'X';
break;
}
else 
{
printf("输入错误,请重新输入");
}

else 
{
printf("输入错误,请重新输入");
}


}


}
void computer_move(char a[ROW][COLS], int row,int cols)
{
while (1)
{


int i = 0;
int j = 0;
i = rand()%3;
j = rand()%3;
if (a[i][j] == ' ')
{
a[i][j] = '0';
break;
}
}

   
}


int is_full(char a[ROW][COLS], int row,int cols)
{
int i = 0;
int j = 0;
for (i=0; i<3; i++)
{
for (j=0; j<3; j++)
{
if (a[i][j] == ' ')
return 0;
}
}
return 1;
}


char is_win(char a[ROW][COLS], int row,int cols)
{
int i = 0;
int j = 0;

for (i=0; i<row; i++)
{
if ((a[i][0]==a[i][1])&&(a[i][1]==a[i][2]) && (a[i][1]!=' '))
{
return a[i][1];
}

}
for (i=0; i<cols; i++)
{
if ((a[0][i]==a[1][i])&&(a[1][i]==a[2][i]) && (a[1][i]!=' '))
{
return a[1][i];
}
}
if ((a[0][2]==a[1][1])&&(a[1][1]==a[2][0]) && (a[1][1]!=' '))
{
return a[1][1];
}
if ((a[0][0]==a[1][1])&&(a[1][1]==a[2][2]) && (a[1][1]!=' '))
{
return a[1][1];
}
if (is_full(a,row,cols))
{
return 'q';
}
return ' ';





}






#include <time.h>
#include "Game.h"








void prtsc()
{
printf("*********************************\n");
printf("*********   1:玩游戏   **********\n");
printf("*********   0:退出游戏**********\n");
printf("*********************************\n");


}












 void game()
{
char a[ROW][COLS];
char ret = 0;
init(a,ROW,COLS);
display(a,ROW,COLS);
srand((unsigned int)time(NULL));
while (1)
{
player_move(a,ROW,COLS);
if ((ret=is_win(a,ROW,COLS)) != ' ')
break;
display(a,ROW,COLS);
computer_move
(a,ROW,COLS);
if ((ret=is_win(a,ROW,COLS) )!= ' ')
break;
display(a,ROW,COLS);
}
if (ret=='X')
{
printf("恭喜你赢了\n");
}
else if (ret=='0')
{
printf("电脑赢了\n");
}
else if (ret=='q')
{
printf("平局\n");
}

display(a,ROW,COLS);






}


int main()
{
int input = 0;


do
{
prtsc();
printf("请输入你要选择的模式\n");
scanf("%d",&input);
switch (input)
{
case 1:
game();

break;
case 0:
break;
default :
printf("erro 重新输入\n");
}

} while (input);
return 0;
}