C++实现三字棋专题小游戏代码(详细)
#C++实现三字棋专题小游戏代码(详细)
##二维数组的运用
引言:首发博客。学习C语言ing~以后将以周为频率发一些学习C中的重要题目代码及个人理解,以作个人学习小结与记录。或以供作参考(过程较详细~)并希望各位对一些不足予以批评并指出,谢谢!
以下为实现“三字棋”游戏的代码~
图片说明:此图片来源于网络游戏页面截图
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
char a[3][3];
int m,n,k=1;
memset(a,'o',sizeof(a));
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
printf("%c ",a[i][j]);
}printf("\n");
}//始:组件原始3×3棋盘
while(1){
while(1){
printf("player1:*, player2:#\n请player%d落子:",k);
scanf("%d %d",&m,&n);
m--;n--;
if(a[m][n]!='o') {
printf("此处不能落子,请重新输入···\n");
continue;
}
else{
if(k==1){
a[m][n]='*';
}
if(k==2){
a[m][n]='#';
}break;
}
}//过程 :对弈
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
printf("%c ",a[i][j]);
}
printf("\n");
}//输出新棋盘
//重点!判断
int e=0;
for(int i=0;i<3;i++){
if(a[i][0]==a[i][1]&&a[i][0]==a[i][2]){
if(a[i][0]=='*') {
e=1;
break;
}
if(a[i][0]=='#'){
e=2;
break;
}
}
}//case1 判断行相等
for(int j=0;j<3;j++){
if(a[0][j]==a[1][j]&&a[0][j]==a[2][j]){
if(a[0][j]=='*') {
e=1;
break;
}
if(a[0][j]=='#'){
e=2;
break;
}
}
}//case2 判断列相等
if(a[0][0]==a[1][1]&&a[0][0]==a[2][2]){
if(a[0][0]=='*') {
e=1;
}
if(a[0][0]=='#'){
e=2;
}
}//case3 判断斜行1相等
if(a[0][2]==a[1][1]&&a[0][2]==a[2][0]){
if(a[0][2]=='*') {
e=1;
}
if(a[0][2]=='#'){
e=2;
}
}//case 4判断斜行2相等
if(e==0){
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
if(a[i][j]=='o'){
e=-1;
}
}
}
}// case5 未完继续
//结:宣判结果~
if(e==0){
printf("平局!\n按回车结束");
break;
}
if(e==1){
printf("player1胜\n按回车结束");
break;
}
if(e==2){
printf("player2胜\n按回车结束");
break;
}
if(e==-1){
k++;
if(k>2){
k=1;
}
}
}
return 0;
}
图片说明:游戏各情况范例输出