大福途网

C语言项目:一天时间写出《五子棋项目》,包含源码分享

admin
C语言项目:一天时间写出《五子棋项目》,包含源码分享-第1张-游戏相关-大福途网

前言:

此时看官们对“五子棋游戏单机版”大体比较关切,姐妹们都想要了解一些“五子棋游戏单机版”的相关文章。那么小编同时在网上网罗了一些对于“五子棋游戏单机版””的相关知识,希望小伙伴们能喜欢,咱们一起来了解一下吧!

一天时间开发出老师说需要一星期的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++的项目学习视频资料哦!已经设置好了关键词自动回复,自动领取就好了!

标签: #五子棋游戏单机版