三子棋游戏,哟西。

编程入门 行业动态 更新时间:2024-10-27 16:30:57

<a href=https://www.elefans.com/category/jswz/34/1769974.html style=三子棋游戏,哟西。"/>

三子棋游戏,哟西。

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

#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存在,不会有三,这就不行,因为玩家可能不理解内部程序,只会以为这只是普通游戏一样,一就代表第一行,这显然不行,所以后面的加一显得尤为重要。

更多推荐

三子棋游戏,哟西。

本文发布于:2023-06-28 00:34:03,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/919133.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:三子   游戏   哟西

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!