首页 > 文章资讯 > 新闻资讯
C语言项目:一天时间写出《五子棋项目》,包含源码分享
更新时间:2022-08-21 09:20:27 作者:云寺手游

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

猜你喜欢
最新资讯