三子棋游戏,哟西。

news/2025/1/15 20:59:31/

今天来分享我的三子棋算法,会对其中的一些地方进行讲解,帮助大家避坑,犹如代码比较粗糙,只是一遍打的,不建议新手模仿。

#include <stdio.h>
#include <stdlib.h>#define ROW 3
#define COL 3void menu(void)
{printf("____________________\n");printf("  1 开始精彩的三字棋游戏\n");printf("  0   退出           \n");printf("____________________\n");
}void print(int a[ROW][COL])
{int i=0;int j=0;int x=0;for(i=0;i<ROW;i++){for(j=0;j<COL;j++){printf("%c",a[i][j]);if(j==2){break;}printf("|");}printf("\n");if(i==2){break;}for(x=0;x<ROW;x++){printf("一");}printf("\n");}
}void person(int a[ROW][COL])
{int i=0;int j=0;while(1){scanf("%d %d",&i,&j);if(i>=1&&i<=3&&j>=1&&j<=3&&a[i-1][j-1]==' '){a[i-1][j-1]='*';break;}else{printf("输入错误");}}
}void computer(int a[ROW][COL])
{while(1){int i=rand()%ROW+1;int j=rand()%COL+1;if(i>=1&&i<=3&&j>=1&&j<+3&&a[i-1][j-1]==' '){a[i-1][j-1]='+';break;}}
}void judge(int a[ROW][COL])
{if(a[0][0]=='*'&&a[0][1]=='*'&&a[0][2]=='*'){printf("person win\n");exit(-1);}if(a[1][1]=='*'&&a[1][0]=='*'&&a[1][2]=='*'){printf("person win\n");exit(-1);}if(a[2][0]=='*'&&a[2][1]=='*'&&a[2][2]=='*'){printf("person win\n");exit(-1);}if(a[0][0]=='+'&&a[0][1]=='+'&&a[0][2]=='+'){printf("computer win\n");exit(-1);}if(a[1][1]=='+'&&a[1][0]=='+'&&a[1][2]=='+'){printf("computer win\n");exit(-1);}if(a[2][0]=='+'&&a[2][1]=='+'&&a[2][2]=='+'){printf("computer win\n");exit(-1);}if(a[0][0]=='*'&&a[1][1]=='*'&&a[2][2]=='*'){printf("person win\n");exit(-1);}if(a[0][2]=='*'&&a[1][1]=='*'&&a[2][0]=='*'){printf("person win\n");exit(-1);}if(a[0][0]=='+'&&a[1][1]=='+'&&a[2][2]=='+'){printf("computer win\n");exit(-1);}if(a[0][2]=='+'&&a[1][1]=='+'&&a[2][0]=='+'){printf("computer win\n");exit(-1);}
}void game(int a[ROW][COL])
{while(1){person(a);print(a);printf("\n");judge(a);computer(a);print(a);printf("\n");judge(a);}
}int main()
{int a[ROW][COL]={0};int i=0;int j=0;for(i=0;i<ROW;i++){for(j=0;j<COL;j++){a[i][j]=' ';}}menu();int n=0;do{scanf("%d",&n);switch(n){case 1:game(a);break;case 0:break;default:printf("输入错误,笨狗");}}while(n);return 0;
}

上面就是我所打出来的代码,可以轻而易举的看到有些地方方法过于复杂,一眼就能看出来的部分就是判断谁赢了的时候,这是非常繁琐的,例如一行为相同的时候赢得时候完全可以借用for循环,听过使行不变,其余向数组后面遍历,并且通过两个简单的if语句就可以判断谁赢了游戏。
在这里插入图片描述
由于本人比较懒,也就不把调试好的简易版本呈上了,有时间会发在评论区(实际上根本不会)。
在这里插入图片描述
上面就是为了能够不断进行游戏,无论是玩家还是电脑选好地方填入后都会打印一次并且进行一次判断,防止有人赢了都不知道。
在这里插入图片描述
主函数就比较简单,三子棋就创建一个三位数组,并且把每一个元素都变成空格,方便后面填入,并且需要一个数来表明玩家的心意,也就是你到底玩不玩,不玩就可以退出,如果你输错,就会叫你笨狗。
在这里插入图片描述
玩家如果填错,必须得有机会才行,不能一棍打死,要让你再次输入,所以必须用一个while循环,并且要一直进行,如果填对了,就要走出循环,用一个break正好,computer也是如此,毕竟他是随机填入,可能需要填写好几次才能填对。
在这里插入图片描述
在这里插入图片描述
可以看到i和j,他们分别是除余,只可能会有0,1,2存在,不会有三,这就不行,因为玩家可能不理解内部程序,只会以为这只是普通游戏一样,一就代表第一行,这显然不行,所以后面的加一显得尤为重要。


http://www.ppmy.cn/news/259847.html

相关文章

C++围棋小游戏1.2.2

/*Name: C围棋小游戏1.2.2Author: zfx1569Date: 2022.05.14 */#include <cstdio> #include <cstdlib> #include <cstring> #include <iostream> // #include<Windows.h> using namespace std; int a1, a2, w, z 0, af 0, bf 0; char a[1001][…

C++围棋小游戏1.1

这是我的第一篇文章 围棋围棋&#xff0c;一方把另一方的棋子完全围起来就能吃掉被围住的棋子。 围棋&#xff08;据我所知&#xff09;有两种&#xff0c;吃子和围地盘&#xff0c;这里展示的是吃子。 谁吃的子多&#xff0c;谁就能获胜。 怎么判断那些棋子是被围起来的呢&…

2020幻影围棋 playChess模块

PlayChess类 PlayChess类用于幻影围棋的行棋&#xff0c;对于平台发过来的每条指令有实现的处理逻辑。 """这是幻影围棋的行棋引擎"""def __init__(self, conditionNone, mctsNone, positionNone):self.condition condition if condition is…

一个让围棋软件自动对弈的工具

银星围棋5的目录下有一个GTool2.exe&#xff0c;利用它可以让两个不同的具有人机对弈功能的围棋软件互相对弈&#xff0c;感觉类似于左右手互搏。:) 步骤简单介绍如下: 1)分别启动两个具有围棋对弈功能的软件&#xff0c;例如MuiltiGo4(这里我采用Gnugo3.7.10做围棋引擎)和…

超级计算机比赛规则,介绍围棋的规则与玩法

介绍围棋的规则与玩法 围棋起源于中国古代&#xff0c;推测起源时间为大约公元前6世纪&#xff0c;是一种策略性二人棋类游戏&#xff0c;那么如何去玩围棋呢&#xff1f;以下是小编为大家搜集整理提供到的介绍围棋的规则与玩法&#xff0c;希望对您有所帮助。欢迎阅读参考学习…

围棋单机版-纵横十九道,迷煞多少人

纵横十九道&#xff0c;迷煞多少人&#xff0c;源于中国古代的围棋&#xff0c;虽历经千年&#xff0c;至今仍令无数人为之疯狂。下面分享几个完全免费的&#xff0c;好玩的单机版 围棋游戏软件 &#xff1a; &#xff11;、思佳围棋&#xff1a;棋力5级左右   思佳围棋采用…

Tom围棋(弈城围棋)运行错误:当前运行的版本是系统无法识别的版本

从http://duiyi.sports.tom.com/service/download.htm 下裁TOM围棋安装后。 管理员级别的用户可以正常运行&#xff0c;但是受限用户就报错&#xff1a;“当前运行的版本是系统无法识别的版本”&#xff0c;然后就退出了。 系统环境为Windows xp sp2 英文版。 解决办法分2大步&…

html游戏围棋源码,C++围棋游戏

【实例简介】 尚未完善的围棋游戏。使用vs2010开发。具有围棋棋盘&#xff0c;棋子界面&#xff0c;已经完成了提子算法。有兴趣的朋友可以与我一起来研究。欢迎大家前来交流 【实例截图】 【核心代码】 MyFirstMFC └── MyFirstMFC ├── MyFirstMFC │ ├── AssiDlg.c…