首页 > 其他分享 >(求助)三子棋

(求助)三子棋

时间:2023-03-03 20:07:04浏览次数:43  
标签:arr return int 三子 求助 printf col row

#define row  3
#define col 3
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

//目录
void menu() {
printf("###############################\n");
printf("########1.play 0.end#########\n");
printf("###############################\n");
}
//初始化数组
void Init_arr(char arr[row][col], int x, int y) {
int i = 0;
int j = 0;
for (i = 0; i < x; i++) {
for (j = 0; j < y; j++) {
arr[i][j] = ' ';
}
}
}
//打印数组
void print(char arr[row][col],int x,int y) {
int i = 0;
int j = 0;
int m = 0;
for (i = 0; i < row; i++) {
for (j = 0; j < col; j++) {
if (j == col - 1) {
printf(" %c ", arr[i][j]);
}
else {
printf(" %c |", arr[i][j]);
}
}
printf("\n");
if (i != row - 1) {
for (m = 0; m < col; m++) {
if (m == col - 1) {
printf("---");
}
else {
printf("---|");
}
}
}
printf("\n");
}
}
//判断是否棋盘已满
int Is_full(char arr[row][col]) {
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
if (arr[i][j] == ' ') {
return 0;
}
}
}
return 1;
}
//玩家下棋
void Playermove(char arr[row][col], int x, int y) {
printf("请输入想要下棋的坐标:");
int i = 0;
int j = 0;
while (1) {
scanf_s("%d %d", &i, &j);
if (i >= 1 && i <= row && j >= 1 && j <= col) {
if (arr[i-1][j-1] == ' ') {
arr[i-1][j-1] = '*';
print(arr, row, col);
break;
}
else {
printf("此处已经下子,不可再下棋,请重新下\n");
}
}
else {
printf("您输入的不符合棋盘规格,请重新输入下棋坐标\n");
}
}
}
//电脑下棋
void Computermove(char arr[row][col], int x, int y) {
while (1) {
int a = rand() % x;
int b = rand() % y;
if (arr[a][b] == ' ') {
arr[a][b] = '#';
print(arr, row, col);
break;
}
if (Is_full(arr) == 1) {
break;
}
}
}
//判断输赢
char Is_win(char arr[row][col]) {
for (int i = 0; i < row; i++) {
if (arr[i][0] == arr[i][1] && arr[i][0] == arr[i][2] && arr[i][0] != ' ') {
return arr[i][0];
}
}
for (int i = 0; i < col; i++) {
if (arr[0][i] == arr[1][i] && arr[1][i] == arr[2][i] && arr[0][i] != ' ') {
return arr[0][i];
}
}
if (arr[0][0] == arr[1][1] && arr[0][0] == arr[2][2]) {
return arr[0][0];
}
if (arr[2][0] == arr[1][1] && arr[0][0] == arr[0][2]) {
return arr[2][0];
}
if (Is_full(arr) == 1) {
return 'P';
}
return 'C';
}
//游戏本身
void fly() {
char rea = 'C';
//创建数组
char arr[row][col] = { 0 };
//初始化数组
Init_arr(arr, row, col);
//打印
print(arr,row,col);
//下棋步骤
while (rea=='C') {
//玩家下棋
Playermove(arr, row, col);
rea=Is_win(arr);
//电脑下棋
Computermove(arr, row, col);
rea=Is_win(arr);
}
//判断结果
if (rea == '*') {
printf("玩家获胜\n");
}
else if(rea=='#') {
printf("电脑获胜\n");
}
else {
printf("平局\n");
}

}
int main() {
int input = 0;
srand((unsigned int)time(NULL));
do {
menu();//目录
printf("请输入是否开始游戏:");
scanf_s("%d", &input);
switch (input) {
case 1:
fly();
break;
case 0:
printf("游戏终止");
break;
default:
printf("您的输入有误,请在1/0中重新输入\n");
break;
}
} while (input);
return 0;
}

不能在原有棋盘上来玩,每次电脑或者玩家走完棋子,必须重新打印棋盘,有能帮助解决的吗,谢谢

标签:arr,return,int,三子,求助,printf,col,row
From: https://blog.51cto.com/u_13606048/6099072

相关文章

  • 领导催我优化SQL语句,偷偷求助ChatGPT:你们觉得这个答案靠谱吗
    作为一个程序员,无论在面试还是工作中,SQL优化都是绕不过去的难题。为啥?工作之后才会明白,随着公司的业务量增多,SQL的执行效率对程系统运行效率的影响逐渐增大,相对于改造代码,......
  • 【C语言】三子棋游戏与多子棋 (保姆级的实现过程)
    ......
  • 求助,为什么过不了编译???
    #include<bits/stdc++.h>#include<bits/ptr_traits.h>usingnamespacestd;intval;structmy_iterator{ usingelement_type=int; usingvalue_type=int; usin......
  • 求助,现在陷入了虚无主义的泥潭(未完)
    现在感觉人生没什么有意思的可能这不叫虚无主义更接近空虚?之前在Lyin宿舍夜聊Lyin似乎有这个虚无主义的趋势了)个人想法(未完)个人比较喜欢“老周其人”里面的“做什么......
  • 使用c语言完成简单的三子棋
    完成一个三子棋项目首先我们要知道要学会对头文件和不同源文件功能的划分首先创建一个头文件两个源文件如图其中我们将所有要引用函数的头文件放入头文件.h中主逻辑里面放的......
  • 三子棋游戏(巨详细)
    游戏规则三子棋是一种民间传统游戏,又叫九宫棋、圈圈叉叉棋、一条龙、井字棋等。游戏分为双方对战,双方依次在9宫格棋盘上摆放棋子,率先将自己的三个棋子走成一条线就视为胜利......
  • 设计一个三子棋游戏
    1.创建一个头文件,两个源文件game.h中放包含的头文件和自定义函数的声明,game.c中放游戏的算法实现,test.h中放游戏逻辑地实现。2.为游戏设计一个简单的菜单voidmenu(){prin......
  • 求助:我需要用Python中parsel模块提取文章的文本内容,有什么办法
    求助:像这样我想提取小说文章内容怎么提取我要用的模块有parsel<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-......
  • 程序:三子棋游戏
    头文件game.h#define_CRT_SECURE_NO_WARNINGS//头文件#include<stdio.h>#include<stdlib.h>#include<time.h>//定义行列#defineROW3#defineCOL3//函数声明voidmenu......
  • C语言实现三子棋游戏
    什么是三子棋游戏?三子棋是一种民间传统游戏,又叫九宫棋、圈圈叉叉棋、一条龙、井字棋等。游戏分为双方对战,双方依次在9宫格棋盘上摆放棋子,棋盘被占满前率先将自己的三个棋子......