【GXZ的原创】C++小游戏——五子棋
2024-10-13 00:56:56
前些时候考完试自己编的带有胜负判定的五子棋。
操作方法:WSAD或↑↓←→移动下棋位置,Space或Enter放置。
如果游戏出现bug,欢迎大家在评论区反馈。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include <math.h> #include <algorithm> #include <conio.h> #include <windows.h> using namespace std; #define fblack() SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE) , BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE) #define fwhite() SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE) , FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE); ][] , mx = , my = , turn = , nap; char ch; void go(int x , int y) { COORD pos = {x , y}; HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(hOut , pos); } void pmap() { puts(""); puts(" ┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐"); puts(" │ │ │ │ │ │ │ │ │ │ │ │ │ │ │"); puts(" ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤"); puts(" │ │ │ │ │ │ │ │ │ │ │ │ │ │ │"); puts(" ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤"); puts(" │ │ │ │ │ │ │ │ │ │ │ │ │ │ │"); puts(" ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤"); puts(" │ │ │ │ │ │ │ │ │ │ │ │ │ │ │"); puts(" ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤"); puts(" │ │ │ │ │ │ │ │ │ │ │ │ │ │ │"); puts(" ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤"); puts(" │ │ │ │ │ │ │ │ │ │ │ │ │ │ │"); puts(" ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤"); puts(" │ │ │ │ │ │ │↘│↙│ │ │ │ │ │ │"); puts(" ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤"); puts(" │ │ │ │ │ │ │↗│↖│ │ │ │ │ │ │"); puts(" ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤"); puts(" │ │ │ │ │ │ │ │ │ │ │ │ │ │ │"); puts(" ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤"); puts(" │ │ │ │ │ │ │ │ │ │ │ │ │ │ │"); puts(" ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤"); puts(" │ │ │ │ │ │ │ │ │ │ │ │ │ │ │"); puts(" ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤"); puts(" │ │ │ │ │ │ │ │ │ │ │ │ │ │ │"); puts(" ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤"); puts(" │ │ │ │ │ │ │ │ │ │ │ │ │ │ │"); puts(" ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤"); puts(" │ │ │ │ │ │ │ │ │ │ │ │ │ │ │"); puts(" └─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘\n"); } void movemouse(int ax , int ay , int bx , int by) { go( + ay * - , ax * - ); printf(" "); go( + ay * - , ax * - ); printf(" "); go( + ay * - , ax * ); printf(" "); go( + ay * - , ax * ); printf(" "); go( + by * - , bx * - ); printf("↘"); go( + by * - , bx * - ); printf("↙"); go( + by * - , bx * ); printf("↗"); go( + by * - , bx * ); printf("↖"); go( , ); } void changechess(int x , int y , int p) { go( + y * - , x * - ); ) { fblack(); printf("●"); } else { fwhite(); printf("●"); } map[x][y] = p; fblack(); go( , ); } bool judge(int lx , int ly , int p) { int x , y , n; x = lx; y = ly; n = ; && map[x][y] == p) { n ++ ; x -- ; } x = lx + ; y = ly; && map[x][y] == p) { n ++ ; x ++ ; } ) { ; } x = lx; y = ly; n = ; && map[x][y] == p) { n ++ ; y -- ; } x = lx; y = ly + ; && map[x][y] == p) { n ++ ; y ++ ; } ) { ; } x = lx; y = ly; n = ; && y >= && map[x][y] == p) { n ++ ; x -- ; y -- ; } x = lx + ; y = ly + ; && y <= && map[x][y] == p) { n ++ ; x ++ ; y ++ ; } ) { ; } x = lx; y = ly; n = ; && y <= && map[x][y] == p) { n ++ ; x -- ; y ++ ; } x = lx + ; y = ly - ; && y >= && map[x][y] == p) { n ++ ; x ++ ; y -- ; } ) { ; } ; } int main() { system("color 70"); system("mode con cols=80 lines=35"); pmap(); ) { while(ch = getch()) { ) { ch = getch(); && my > ) //l { movemouse(mx , my , mx , my - ); my -- ; } && my < ) //r { movemouse(mx , my , mx , my + ); my ++ ; } && mx > ) //u { movemouse(mx , my , mx - , my); mx -- ; } && mx < ) //d { movemouse(mx , my , mx + , my); mx ++ ; } } else if(ch == 'a') //l { movemouse(mx , my , mx , my - ); my -- ; } else if(ch == 'd') //r { movemouse(mx , my , mx , my + ); my ++ ; } else if(ch == 'w') //u { movemouse(mx , my , mx - , my); mx -- ; } else if(ch == 's') //d { movemouse(mx , my , mx + , my); mx ++ ; } || ch == )&& !map[mx][my]) { changechess(mx , my , turn); nap ++ ; break; } } if(judge(mx , my , turn)) { ) { printf(" 黑方胜!\n\n"); } else { printf(" 白方胜!\n\n"); } break; } ) { printf(" 平局!\n\n"); break; } turn = - turn; } Sleep(); printf(" "); system("pause"); ; }
最新文章
- ExtJS 4.2 业务开发(二)数据展示和查询
- 设计 api, url 的原则
- Spring声明式事务管理
- 局部(或全局)设置<;a>;标签的target属性
- [读书笔记] CSS权威指南2: 结构和层叠
- vs2010 release 模式加了断点,跑代码无法跟踪,解决方法
- MyEclipse 关闭拼写检查、JavaScript的检查Build、xml、JSP的Bulid检查
- Android手机一键Root原理分析
- (3/18)重学Standford_iOS7开发_Objective-C_课程笔记
- 大小中型数据库和Oracle的常用命令
- cocos2d-x游戏开发系列教程-超级玛丽01-前言
- 10.TCP连接的建立与终止
- selenium+java破解极验滑动验证码
- POI tools 参数化生成excel表格
- C语言函数嵌套调用作业总结
- Oracle rac 监听状态异常远程连接问题解决(TNS-12541 TNS-12560 TNS-00511 Linux Error:111 ORA-12502)
- 《Java开发学习大纲文档》V7.0
- [No0000FC]C# 预处理器指令
- BeanShell用法(摘抄至网络)
- Centos6.5 防火墙设置详解