C语言实现三子棋小游戏详解
在用C语言实现三子棋小游戏之前,我们应当了解三子棋的游戏规则:在九宫格棋盘上,哪一方三个棋子连成一线(一行或一列或对角线)即判定哪一方胜利。
以下为源代码:
1.首先打印出菜单。
voidmenu() { printf("**********************************\n"); printf("**********************************\n"); printf("*****0.play*************\n"); printf("*****1.exit*************\n"); printf("**********************************\n"); } menu(); do { printf("请输入要选的的选项:"); scanf("%d",&input); switch(input) { case0: game(); break; case1: printf("退出游戏"); break; default: printf("请输入要选的选项:\n"); break; } }while(input);
2.创建一个二维数组board用来储存三子棋的元素,并对其进行初始化。
voidInitboard(charboard[ROW][COL],introw,intcol) { inti=0; intj=0; for(i=0;i|
3.打印九宫格棋盘。
voidDisplayboard(charboard[ROW][COL],introw,intcol)//打印棋盘 { inti; intj; for(i=0;i|
4.使用Playermove和Computermove函数来对board数组进行更改,模拟玩家和电脑落子情况。
voidPlayermove(charboard[ROW][COL])//玩家输入坐标 { while(1) { intx=0; inty=0; printf("请玩家输入坐标"); scanf_s("%d%d",&x,&y); if(x<=ROW&&x>=1&&y<=COL&&y>=1)//判断输入的坐标是否越界 { if(board[x-1][y-1]=='')//输入的坐标必须为空才可以落子 { board[x-1][y-1]='*'; break; } else printf("坐标被占用,请重新输入\n"); } else printf("坐标有误,请重新输入\n"); } } voidComputermove(charboard[ROW][COL])//电脑输入坐标 { intx=0; inty=0; while(1) { x=rand()%3;//使用rand函数生成随机数并取余得到电脑落子坐标 y=rand()%3; if(board[x][y]=='') { printf("电脑输入坐标%d%d\n",x+1,y+1); board[x][y]='#'; break;//打印后跳出循环 } } }5.玩家和电脑每落一次子,就要进行一次判断是否获胜,根据返回值来进行判断游戏结果。
intIswin(charboard[ROW][COL],introw,intcol)//判断谁获胜 { inti; intj; //1为玩家获胜0为电脑获胜2为平局 for(i=0;i|
6.函数声明,宏定义,函数的定义实现,测试。
#include#include #include #include #include"game.h" #define_CRT_SECURE_NO_WARNINGS #defineROW3 #defineCOL3 voidInitboard(charboard[ROW][COL],introw,intcol); voidDisplayboard(charboard[ROW][COL],introw,intcol); voidPlayermove(charboard[ROW][COL]); voidComputer(charboard[ROW][COL]); intIswin(charboard[ROW][COL],introw,intcol); intFull(charboard[ROW][COL],introw,intcol); voidmenu() { printf("**********************************\n"); printf("**********************************\n"); printf("*****0.play*************\n"); printf("*****1.exit*************\n"); printf("**********************************\n"); } voidgame() { charboard[ROW][COL]={0}; intret; Initboard(board,ROW,COL);//用Initboard函数初始化数组,并用‘'初始化数组 printf("游戏开始\n"); while(1) { Playermove(board);//玩家输入坐标 Displayboard(board,ROW,COL); ret=Iswin(board,ROW,COL);//判断是否获胜 if(ret==1) { printf("玩家获胜"); break; } elseif(ret==0) { printf("电脑获胜"); break; } elseif(ret==2) { printf("平局"); break; } printf("\n\n"); Computer(board);//电脑输入坐标 Displayboard(board,ROW,COL); ret=Iswin(board,ROW,COL);//判断是否获胜 if(ret==1) { printf("玩家获胜"); break; } elseif(ret==0) { printf("电脑获胜"); break; } elseif(ret==2) { printf("平局"); break; } printf("\n\n"); } } intmain() { intinput=0; srand((unsignedint)time(NULL)); menu(); do { printf("请输入要选的的选项:"); scanf("%d",&input); switch(input) { case0: game(); break; case1: printf("退出游戏"); break; default: printf("请输入要选的选项:\n"); break; } }while(input); } voidInitboard(charboard[ROW][COL],introw,intcol) { inti=0; intj=0; for(i=0;i =1&&y<=COL&&y>=1) { if(board[x-1][y-1]=='') { board[x-1][y-1]='*'; break; } else printf("坐标被占用,请重新输入\n"); } else printf("坐标有误,请重新输入\n"); } } voidComputer(charboard[ROW][COL])//电脑输入坐标 { intx=0; inty=0; while(1) { x=rand()%3; y=rand()%3; if(board[x][y]=='') { printf("电脑输入坐标%d%d\n",x+1,y+1); board[x][y]='#'; break;//打印后跳出循环 } } } intIswin(charboard[ROW][COL],introw,intcol)//判断谁获胜 { inti; intj; //1为玩家获胜0为电脑获胜2为平局 for(i=0;i
|
更多有趣的经典小游戏实现专题,分享给大家:
C++经典小游戏汇总
python经典小游戏汇总
python俄罗斯方块游戏集合
JavaScript经典游戏玩不停
java经典小游戏汇总
javascript经典小游戏汇总
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。