五子棋c语言实验代码,一天时间写出五子棋项目
五子棋c语言实验代码,一天时间写出五子棋项目代码:C语言面向过程编程,变量名与函数名全部使用驼峰命名法。游戏功能:首先实现能够让双人进行对战,最后得出胜负(结果)。然后加入人机对战元素,也就是传统意义上一个人玩的单机游戏。编码风格:
一天时间开发出老师说需要一星期的C语言游戏:五子棋项目!给大家分享一下~
为了进一步了解C语言编程,熟悉优秀的编码风格,提升编码能力,丰富项目经验。所以在编程初期选择了控制台小游戏《单机五子棋》作为项目进行编码。
本项目定位:
控制台小程序,作为熟悉一个完整的项目流程存在。
游戏功能:
首先实现能够让双人进行对战,最后得出胜负(结果)。然后加入人机对战元素,也就是传统意义上一个人玩的单机游戏。
编码风格:
C语言面向过程编程,变量名与函数名全部使用驼峰命名法。
代码:
#include <stdio.h> // 标准库
#include <conio.h> // 按键
#include <Windows.h> // 屏幕刷新
#include <stdlib.h> // 随机数
static const int wArr = 15;
static const int hArr = 15;
int temp = 0;
int allRound = 0;
int iMap[wArr][hArr] = {};
void initMap();
void showMap();
void getUserInput();
void userInput(int width int height);
void whoIsWin();
void aiInput(int w int h);
bool notherUser = true; // 区分用户
int myChess = 0;
int whiteChess = 22;
int blackChess = 33;
int main()
{
int InputW = 0;
int InputH = 0;
initMap();
while (1)
{
showMap();
getUserInput();
system("CLS");
whoIsWin();
if (20000 == allRound)
break;
}
showMap();
if (notherUser)
{
printf("User2 Win\n");
}
else
{
printf("User1 Win\n");
}
return 0;
}
void initMap()
{
for (int i = 0; i < wArr; i)
{
for (int j = 0; j < hArr; j)
{
iMap[i][j] = NULL;
}
}
for (int i = 0; i < wArr; i)
{
iMap[i][0] = temp ;
}
temp = 0;
for (int i = 0; i < wArr; i)
{
iMap[0][i] = temp ;
}
temp = 0;
}
void showMap()
{
for (int i = 0; i < wArr; i)
{
for (int j = 0; j < hArr; j)
{
printf("%3.0d" iMap[i][j]);
}
printf("\n");
}
}
void getUserInput()
{
int w h;
if (notherUser)
{
printf("User1:\n");
myChess = whiteChess;
// ============ 用户输入
scanf_s("%d %d" &w &h);
userInput(w h);
}
else
{
printf("User2:\n");
myChess = blackChess;
// 下面是 AI 部分
aiInput(rand()%wArr rand()%hArr);
}
}
void userInput(int w int h)
{
if (w >= wArr || w <= 0 || h >= hArr || h <= 0)
{
return;
}
else if (iMap[w][h] == whiteChess || iMap[w][h] == blackChess)
{
return;
}
iMap[w][h] = myChess;
notherUser = !notherUser;
}
void aiInput(int w int h)
{
if (w >= wArr || w <= 0 || h >= hArr || h <= 0)
{
return;
}
else if (iMap[w][h] == whiteChess || iMap[w][h] == blackChess)
{
return;
}
iMap[w][h] = myChess;
notherUser = !notherUser;
}
void whoIsWin()
{
for (int i = 0; i < wArr; i)
{
for (int j = 0; j < hArr; j)
{
if(iMap[i][j] > 0)
// 竖排五个
if (iMap[i 0][j] == iMap[i 1][j]
&& iMap[i 1][j] == iMap[i 2][j]
&& iMap[i 2][j] == iMap[i 3][j]
&& iMap[i 3][j] == iMap[i 4][j]
//&& iMap[i 4][j] == iMap[i 5][j]
)
{
allRound = 20000;
}
// 右斜五个
else if (iMap[i 0][j 0] == iMap[i 1][j 1]
&& iMap[i 1][j 1] == iMap[i 2][j 2]
&& iMap[i 2][j 2] == iMap[i 3][j 3]
&& iMap[i 3][j 3] == iMap[i 4][j 4]
//&& iMap[i 4][j 4] == iMap[i 5][j 5]
)
{
allRound = 20000;
}
// 左斜五个
else if (iMap[i 0][j 0] == iMap[i - 1][j 1]
&& iMap[i - 1][j 1] == iMap[i - 2][j 2]
&& iMap[i - 2][j 2] == iMap[i - 3][j 3]
&& iMap[i - 3][j 3] == iMap[i - 4][j 4]
//&& iMap[i - 4][j 4] == iMap[i - 5][j 5]
)
{
allRound = 20000;
}
// 横排五个
else if (iMap[i][j 0] == iMap[i][j 1]
&& iMap[i][j 1] == iMap[i][j 2]
&& iMap[i][j 2] == iMap[i][j 3]
&& iMap[i][j 3] == iMap[i][j 4]
//&& iMap[i][j 4] == iMap[i][j 5]
)
{
allRound = 20000;
}
}
}
}
本次分享就到这里了,一起努力吧!
对于准备学习编程的小伙伴,如果你想更好的提升你的编程核心能力(内功)不妨从现在开始!
编程学习书籍分享:
编程学习视频分享:
整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)
欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!
对于C/C 感兴趣可以关注小编在后台私信我:【编程交流】一起来学习哦!可以领取一些C/C 的项目学习视频资料哦!已经设置好了关键词自动回复,自动领取就好了!