简单的“三子棋”
#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);
#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;
}
#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;
}