【GXZ的原创】C++小游戏——五子棋
前些时候考完试自己编的带有胜负判定的五子棋。
操作方法: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");
;
}
【GXZ的原创】C++小游戏——五子棋的更多相关文章
- 原创跑酷小游戏《Cube Duck Run》 - - 方块鸭快跑
自从unity5出来才开始关注unity,业余时间尝试做了个小游戏: <方块鸭快跑> (Cube Duck Run) 像素风,3d视角,色彩明快,有无尽和关卡两种模式. 应用连接: goo ...
- c++小游戏--五子棋
大家好,我是芝麻狐! 这是我自制的小游戏,目前仅支持devc++. 如果你没有c++软件, 请打开网站GDB online Debugger | Compiler - Code, Compile, R ...
- c++小游戏——五子棋
#include<iostream> #include<iomanip> #include<cstring> using namespace std; const ...
- 介绍一款Android小游戏--交互式人机对战五子棋
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6589025 学习Android系统开发之余,编 ...
- js小游戏:五子棋
使用纯js的小游戏,五子棋 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...
- 小游戏——js+h5[canvas]+cs3制作【五子棋】小游戏
五子棋小游戏学习—— 有一个问题是,棋盘线的颜色,在canvas中,明明设置了灰色,但在我的预览中还是黑色的,很重的颜色. 以下是复刻的源码: <!DOCTYPE html> <ht ...
- Java五子棋小游戏(控制台纯Ai算法)
Java五子棋小游戏(控制台纯Ai算法) 继续之前的那个五子棋程序 修复了一些已知的小Bug 这里是之前的五子棋程序 原文链接 修复了一些算法缺陷 本次增加了AI算法 可以人机对战 也可以Ai对Ai看 ...
- 基于FPGA的飞机的小游戏
基于FPGA的飞机的小游戏 实验原理 该实验主要分为4个模块,采用至上而下的设计方法进行设计.由50M的晶振电路提供时钟源,VGA显示控制模块.图形显示控制模块.移动模块的时钟为25M,由时钟分频电路 ...
- 12岁的少年教你用Python做小游戏
首页 资讯 文章 频道 资源 小组 相亲 登录 注册 首页 最新文章 经典回顾 开发 设计 IT技术 职场 业界 极客 创业 访谈 在国外 - 导航条 - 首页 最新文章 经典回顾 开发 ...
随机推荐
- 遵循PSR-4的自动加载
一.简介 首先这里要了解PSR,Proposing a Standards Recommendation(提出标准建议)的缩写,就是一种PHP开发规范,让我们研发出来的代码更合理.更好维护.可读性更高 ...
- Algorithmic Graph Drawing in TikZ
最近在写模板时需要画个图 ("图论"的"图"). 本来打算用Windows画图 (mspaint) 的, 但是效果不好, 还是决定用LaTeX的TikZ画. 这 ...
- PHP之:析构函数
如何正确理解PHP析构函数 参考文献:http://developer.51cto.com/art/200912/167023.htm 初次学习PHP语言的朋友们可能对PHP析构函数有些不太了解.我们 ...
- 数据结构与算法分析 – Disjoint Set(并查集)
什么是并查集?并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题. 并查集的主要操作1.合并两个不相交集合2.判断两个元素是否属于同一集合 主要操作的解释 ...
- 通过rsync搭建一个远程备份系统(一)
前言 我公司是电子商务公司,全部是linux系统,每天的网站数都在增加,为了保证安全,需要建立一个远程容灾系统,将网站数据每天凌晨1点备份到远程服务器上,由于数据量大,每天进行进行增量备份,仅仅备份当 ...
- BZOJ4445: [Scoi2015]小凸想跑步
裸半平面交. 记得把P0P1表示的半平面加进去,否则点可能在多边形外. #include<bits/stdc++.h> #define N 100009 using namespace s ...
- jquery的$.extend()、$.fn和$.fn.extend()
一种是类级别的插件开发,即给jquery添加新的全局函数,相当于给jquery类本身添加方法.如$.ajax()等,这就是用$.extend()实现 jquery的全局函数就是属于jquery命名空间 ...
- ubuntu server设置时区和更新时间
ubuntu server设置时区和更新时间 今天测试时,发现时间不对,查了一下时区: data -R 结果时区是:+0000 我需要的是东八区,这儿显示不是,所以需要设置一个时区 一.运行 ...
- 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【三】——Web Api入门
系列导航地址http://www.cnblogs.com/fzrain/p/3490137.html 前言 经过前2节的介绍,我们已经把数据访问层搭建好了,从本章开始就是Web Api部分了.在正式开 ...
- typedef和#define的用法与区别
typedef和#define的用法与区别 typedef和#define的用法与区别 一.typedef的用法 在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程 ...