资源简介
【五子棋(控制台)】
【核心代码】
FIveChess
├── FIveChess
│ ├── Common.h
│ ├── Debug
│ │ ├── FIveChess.log
│ │ ├── FIveChess.obj
│ │ ├── FIveChess.tlog
│ │ │ ├── CL.command.1.tlog
│ │ │ ├── CL.read.1.tlog
│ │ │ ├── CL.write.1.tlog
│ │ │ ├── FIveChess.lastbuildstate
│ │ │ ├── link.command.1.tlog
│ │ │ ├── link.read.1.tlog
│ │ │ └── link.write.1.tlog
│ │ ├── Tool.obj
│ │ ├── vc141.idb
│ │ └── vc141.pdb
│ ├── Define.h
│ ├── FIveChess.cpp
│ ├── FIveChess.vcxproj
│ ├── FIveChess.vcxproj.filters
│ ├── FIveChess.vcxproj.user
│ ├── Head.h
│ ├── Tool.cpp
│ └── Tool.h
└── FIveChess.sln
3 directories, 22 files
代码片段和文件信息
#include “Common.h“
#include “Define.h“
#include “Head.h“
#include “Tool.h“
vector> g_vcMap; //地图
//T_chess g_chess; // 棋子的坐标和所属的玩家
int g_playerIdx = 1; // 当前玩家
bool g_finishNum = false; // 游戏是否结束
void InitializeGame(); //初始化游戏
long long GetSystemTime(); //时间更新的
void process(); //运行过程
void Update(int x int y); //更新界面棋子
bool victory(int x int y); //胜利条件
int main()
{
HideConCursor();//隐藏光标
long long time = GetSystemTime();
while (1) {
InitializeGame();//初始化游戏
long long timeTim = GetSystemTime();
while (timeTim - time >= 1000 / frame_NUM)
{
process();// 运行过程
time += 1000 / frame_NUM;
}
}
return 0;
}
void process()
{
for (int i = 0; i < MAP_HEIGHT; ++i) {
for (int j = 0; j < MAP_WIDTH; ++j) {
if (Preserve(g_vcMap[i][j].t)) {
if (g_vcMap[i][j].playerId != 0) {
break;
}
else
{
Update(i j);// 更新界面
g_finishNum = victory(i j); //游戏是否结束
if (g_finishNum == true)
{
system(“pause“);
};
g_playerIdx = (g_playerIdx == 1 ? 2 : 1);
}
}
}
}
}
void InitializeGame()//初始化游戏
{
for (int i = 0; i < MAP_HEIGHT; ++i) {
vector vc;
T_chess chess;
for (int j = 0; j < MAP_WIDTH; ++j) {
chess.playerId = 0;
chess.pos = { ij };
chess.t = NewButton(i j 6 “○“); //1 深蓝色 12 浅红色 2是绿色
vc.push_back(chess);
}
g_vcMap.push_back(vc);
}
}
void Update(int x int y)//更新界面棋子
{
g_vcMap[x][y].playerId = g_playerIdx;
if (g_playerIdx==1)
{
g_vcMap[x][y].t = NewButton(x y 10 “●“);
}
else
{
g_vcMap[x][y].t = NewButton(x y 30 “●“);
}
}
bool victory(int x int y) //胜利条件
{
int n1 = 0; //左右方向
int n2 = 0; //上下方向
int n3 = 0; //左上到右下方向
int n4 = 0; // 右上到左下方向y
//先从点击的位置向左寻找,相同颜色的棋子n1自加,直到不是相同颜色的棋子,则跳出循环
for (int i = y; i >= 0; i--) {
if (g_vcMap[x][i].playerId != g_playerIdx) {
break;
}
n1 += 1;
}
//然后从点击的位置向右位置寻找,相同颜色的棋子n1自加,直到不是相同颜色的棋子,则跳出循环
for (int i = y + 1; i < MAP_HEIGHT; i++) {
if (g_vcMap[x][i].playerId != g_playerIdx) {
break;
}
n1 += 1;
}
//****************上下方向************
for (int i = x; i >= 0; i--) {
if (g_vcMap[i][y].playerId != g_playerIdx) {
break;
}
n2 += 1;
}
for (int i = x + 1; i < MAP_WIDTH; i++) {
if (g_vcMap[i][y].playerId != g_playerIdx) {
break;
}
n2 += 1;
}
//****************右上到左下斜方向***********
for (int i = x j = y; i >= 0 j < MAP_WIDTH; i-- j++) {
if (i < 0 || j >= MAP_WIDTH || g_vcMap[i][j].playerId != g_playerIdx) {
break;
}
n3 += 1;
}
for (int i = x + 1 j = y - 1; i < MAP_HEIGHT j > 0; i++ j--) {
if (j <= 0 || i > MAP_HEIGHT || g_vcMap[i][j].playerId != g_playerIdx) {
break;
}
n3 += 1;
}
//****************左上到右下斜方向*************
for (int i = x j = y; i >= 0 j >= 0; i-- j--) {
if (i<0||j<0||g_vcMap[i][j].playerId != g_playerIdx) {
break;
}
n4 += 1
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 377 2020-07-06 09:34 FIveChess\FIveChess\Common.h
文件 219 2020-12-14 14:33 FIveChess\FIveChess\Debug\FIveChess.log
文件 325879 2020-12-14 14:33 FIveChess\FIveChess\Debug\FIveChess.obj
文件 1446 2020-12-14 14:33 FIveChess\FIveChess\Debug\FIveChess.tlog\CL.command.1.tlog
文件 67138 2020-12-14 14:33 FIveChess\FIveChess\Debug\FIveChess.tlog\CL.read.1.tlog
文件 1280 2020-12-14 14:33 FIveChess\FIveChess\Debug\FIveChess.tlog\CL.write.1.tlog
文件 202 2020-12-14 14:33 FIveChess\FIveChess\Debug\FIveChess.tlog\FIveChess.lastbuildstate
文件 1260 2020-12-14 14:33 FIveChess\FIveChess\Debug\FIveChess.tlog\li
文件 3384 2020-12-14 14:33 FIveChess\FIveChess\Debug\FIveChess.tlog\li
文件 512 2020-12-14 14:33 FIveChess\FIveChess\Debug\FIveChess.tlog\li
文件 66717 2020-07-06 09:38 FIveChess\FIveChess\Debug\Tool.obj
文件 617472 2020-12-14 14:33 FIveChess\FIveChess\Debug\vc141.idb
文件 552960 2020-12-14 14:33 FIveChess\FIveChess\Debug\vc141.pdb
文件 508 2020-07-06 09:31 FIveChess\FIveChess\Define.h
文件 4080 2020-12-14 14:33 FIveChess\FIveChess\FIveChess.cpp
文件 7842 2020-07-06 09:38 FIveChess\FIveChess\FIveChess.vcxproj
文件 1421 2020-07-06 09:38 FIveChess\FIveChess\FIveChess.vcxproj.filters
文件 165 2020-07-06 09:20 FIveChess\FIveChess\FIveChess.vcxproj.user
文件 244 2020-07-06 09:35 FIveChess\FIveChess\Head.h
文件 2823 2020-07-06 09:37 FIveChess\FIveChess\Tool.cpp
文件 425 2020-07-06 09:38 FIveChess\FIveChess\Tool.h
文件 1441 2020-07-06 09:20 FIveChess\FIveChess.sln
目录 0 2020-12-14 14:33 FIveChess\FIveChess\Debug\FIveChess.tlog
目录 0 2020-12-14 14:33 FIveChess\FIveChess\Debug
目录 0 2020-12-14 14:33 FIveChess\FIveChess
目录 0 2020-12-14 14:34 FIveChess
----------- --------- ---------- ----- ----
1657795 26
- 上一篇:c语言dos窗口扫雷.c
- 下一篇:推箱子小游戏源码
相关资源
- c++打飞机
- c++ 23种设计模式
- C++贪吃蛇控制台小游戏代码
- 五子棋c++控制台代码
- socket通讯c++源码(客户端+服务端)
- MFC五子棋游戏
- VC++ 大富翁4_大富翁游戏源码
- c++常用游戏算法及数据结构设计
- c++程序设计(全国)
- c++的飞行鸟游戏
- c++ 单链表
- c++ 编程修养(32条编程建议)
- VC++ 摄像头视频采集与回放源程序
- C++MFC模块讲解,黑发程序员课程整理
- 转 VC++ 实现电子邮件(Email)发送
- c++开发http服务端+客户端
- c++curllib传输json使用
- C++Builder XE7 update1 和谐文件亲测可用
- C++ Primer mobi
- c++调用C# COM 参数是结构体数组
- 基于MFC的VC++仿QQ浏览器源码(雏形)
- 高版本Xcode 中 创建 C++ Class
- 使用 IBM Rational Systems Developer 和 Rati
- C++设计模式-好书
- C++设计模式pdf高清完整版
- 23种设计模式(C++实现版本
- C++设计模式 23种设计模式
- VC++ 服务程序编写及安装与卸载
- VC++6.0番茄西红柿VAXvirsual assist X完美破
- C++17 The Complete Guide
评论
共有 条评论