#include "game.h"
void initboard(char board[ROW][COL], int row, int col)
{
int i = 0;
int j = 0;
for (i = 0; i < row; i++)
for (j = 0; j < col; j++)
board[i][j] = ' ';
}
void displayboard(char board[ROW][COL], int row, int col)
{
int i = 0;
for (i = 0; i < row; i++)
{
int j = 0;
for (j = 0; j < col; j++)
{
printf(" %c ", board[i][j]);
if( j < col - 1)
printf("|");
}
printf("\n");
if (i < row - 1)
{
for (j = 0; j < col; j++)
{
printf("---");
if (j < col - 1)
printf("|");
}
printf("\n");
}
}
}
void playrmove(char board[ROW][COL], int row, int col)
{
int x, y;
printf("玩家走:");
while(1)
{
printf("请输入位置:〉");
scanf_s("%d,%d", &x, &y);
if (x >= 1 && x <= ROW && y >= 1 && y <= COL)
{
if (board[x - 1][y - 1] == ' ')
{
board[x - 1][y - 1] = '*';
break;
}
else
{
printf("以被占用\n");
}
}
else
{
printf("请重新输入:\n");
}
}
}
void playrmove2(char board[ROW][COL], int row, int col)
{
int x, y;
printf("玩家2走:");
while (1)
{
printf("请输入位置:〉");
scanf_s("%d,%d", &x, &y);
if (x >= 1 && x <= ROW && y >= 1 && y <= COL)
{
if (board[x - 1][y - 1] == ' ')
{
board[x - 1][y - 1] = '#';
break;
}
else
{
printf("以被占用\n");
}
}
else
{
printf("请重新输入:\n");
}
}
}
void computermove(char board[ROW][COL], int row, int col)
{
int x=0, y=0;
printf("电脑走:》\n");
while (1)
{
x = rand()%row;
y = rand()%col;
if (board[x][y] == ' ')
{
board[x][y] = '#';
break;
}
}
}
char iswin(char board[ROW][COL], int row, int col)
{
int i;
for (i = 0; i < row; i++)
{
if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][0] != ' ')
return board[i][0];
}
for (i = 0; i < col; i++)
{
if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[0][i] != ' ')
return board[0][i];
}
if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[0][0] != ' ')
return board[0][0];
if (board[2][0] == board[1][1] && board[1][1] == board[0][2] && board[2][0] != ' ')
return board[2][0];
if (1 == infull(board, ROW, COL))
{
return 'q';
}
return 'c';
}
int infull(char board[ROW][COL], int row, int col)
{
int i, j;
for (i = 0; i < row; i++)
for (j = 0; i < col; j++)
if (board[i][j] == ' ')return 0;
}
#pragma once
#define ROW 3
#define COL 3
#include
#include
#include
void initboard(char board[ROW][COL],int row,int col);
void displayboard(char board[ROW][COL], int row, int col);
void playrmove(char board[ROW][COL], int row, int col);
void computermove(char board[ROW][COL], int row, int col);
char iswin(char board[ROW][COL], int row, int col);
int infull(char board[ROW][COL], int row, int col);
void playrmove2(char board[ROW][COL], int row, int col);
#include "game.h"
void menu()
{
printf("***********************************************\n");
printf("***********************************************\n");
printf("*****0.退出 1.电脑对战 2.真人对战************\n");
printf("***********************************************\n");
printf("***********************************************\n");
}
void game()
{
char p;
char board[ROW][COL] = { 0 };
initboard(board, ROW, COL);
displayboard(board, ROW, COL);
while (1)
{
playrmove(board, ROW, COL);
displayboard(board, ROW, COL);
p=iswin(board, ROW, COL);
if (p != 'c')break;
computermove(board, ROW, COL);
displayboard(board, ROW, COL);
p=iswin(board, ROW, COL);
if (p != 'c')break;
}
if (p == '*')printf("玩家赢\n");
else if (p == '#')printf("电脑赢\n");
else printf("平局\n");
}
void game2()
{
char p;
char board[ROW][COL] = { 0 };
initboard(board, ROW, COL);
displayboard(board, ROW, COL);
while (1)
{
playrmove(board, ROW, COL);
displayboard(board, ROW, COL);
p = iswin(board, ROW, COL);
if (p != 'c')break;
playrmove2(board, ROW, COL);
displayboard(board, ROW, COL);
p = iswin(board, ROW, COL);
if (p != 'c')break;
}
if (p == '*')printf("玩家赢\n");
else if (p == '#')printf("电脑赢\n");
else printf("平局\n");
}
void text()
{
int input = 0;
srand((unsigned int)time(NULL));
do
{
menu();
printf("请选择:〉");
scanf_s("%d", &input);
switch (input)
{
case 2: game2(); break;
case 1: game(); break;
case 0: printf("退出游戏\n"); break;
default: printf("错误,请重新选择\n"); break;
}
} while (input);
}
int main()
{
text();
return 0;
}
然后就可以输入坐标玩游戏了。
文章多处存在借鉴,如有侵权请联系修改删除!