#include
#include
#include
#define R 3
#define C 3
void game_start()
{
printf("#################################################################\n");
printf("#############################开始游戏############################\n");
printf("##请输入: 1/0 \n");
printf("############1.开始 ###################0.结束 ##############\n");
printf("#################################################################\n");
printf("#################################################################\n");
printf("#################################################################\n");
printf("#################################################################\n");
}
void gezi(int x[R][C])
{
int i, j, k;
for (i = 0; i < R; i++)
{
for (j = 0; j < C; j++)
{
if (x[i][j] == 0)
printf(" |");
else if (x[i][j] ==-1)
printf(" * |");
else if (x[i][j]==1)
printf(" # |");
}
printf("\n");
for (k = 0; k < C; k++)
printf("----");
printf("\n");
}
}
void computer(int arr[R][C])
{
srand(time(NULL));
do
{
if (arr[rand() % (R-1)][rand() % (C-1)] == 0 ) //目前有问题
arr[rand() % (R-1)][rand() % (C-1)] = -1;
} while (arr[rand() % (R-1)][rand() % (C-1)] !=0 );
}
void game()
{
int x, y;
int arr[R][C] = { 0 };
do
{
do
{
printf("请输入棋子的坐标:x,y "); scanf("%d%*c%d", &x, &y);
if(arr[x - 1][y - 1] !=0)
printf("这个格子有棋子了\n");
}while (arr[x - 1][y - 1] !=0);
arr[x - 1][y - 1] = 1;
computer(arr);
gezi(arr);
} while (1);
}
int main()
{
int a;
do
{
game_start();
scanf("%d", &a);
} while (a == 0);
game();
}
我是想 让玩家输入# 电脑输入*
创建一个RC的数组初始化为零
1为# -1为
玩家输入这方面可能没啥问题 就是电脑这里我想利用时间戳来给数组的元素值附上-1 然而 我测试出的有时候可能-1的值会替换1的值
我自己不会函数内部的监控 所以找不出来问题
这个程序也没做完 输赢的判定还没做
先解决打印的这个问题吧
#define _CRT_SECURE_NO_WARNINGS 1
#include "game.h"
//菜单函数
void menu()
{
printf("*******************************************\n");
printf("************** 1. play ********************\n");
printf("************** 0. exit ********************\n");
printf("*******************************************\n");
}
void game()
{
char ret = 0;
//数据的存储需要一个3*3的二维数组
char board[ROW][COL] = { 0 };
init_board(board, ROW, COL);
display_board(board, ROW, COL);
//玩游戏
while (1)
{
player_move(board, ROW, COL);
display_board(board, ROW, COL);
ret = is_win(board, ROW, COL);
if (ret != 'C')
break;
computer_move(board, ROW, COL);
display_board(board, ROW, COL);
ret = is_win(board, ROW, COL);
if (ret != 'C')
break;
}
if (ret == '*')
{
printf("玩家赢\n");
}
else if (ret == '#')
{
printf("电脑赢\n");
}
else if (ret == 'Q')
{
printf("平局\n");
}
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));//生成随机数
do
{
menu();
printf("请输入选择>");
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("游戏结束!\n");
break;
default:
printf("输入错误,请重新输入>\n");
break;
}
} while (input);
return 0;
}