中易网

用C++编写一个小的游戏 可以运行的

答案:3  悬赏:80  
解决时间 2021-02-07 21:42
用C++编写一个小的游戏 可以运行的
最佳答案
五子棋
这是编写的人人对战,虽然不是人机对战,但是希望对你可以提供点帮助,
问题还是自己研究的掌握的好...只需要别人给点思路,自己实践

#include <iostream>
using namespace std;
#include <cstring>//string.h

const int M=16;//行数
const int N=16;//列数

void showboard(char board[M][N])
{
// 1-2-1 显示每列的列号,列号不够两位在左边补空格
cout << " ";
for(int i=1; i<=N; i++)
cout << (i<10?" ":" ") << i;
cout << endl;
// 1-2-2 反复显示每一行
for(int i=0; i<M; i++){
// 1-2-2-1 先显示行号
cout << (i<9?" ":" ") << i+1 << " ";
// 1-2-2-2 再显示棋盘每一列的棋子
for(int j=0; j<N; j++)
cout << board[i][j] << " ";
cout << endl;
}
}
inline bool out(int row, int col)
{
return (row<1||row>M||col<1||col>N);
}
struct Size{
int row;
int col;
};
bool place(char board[M][N], bool blackwhite)
{
// 4-1 准备棋子
const char chess = blackwhite?'X':'O';
// 4-2 让玩家选择要下的位置(行列号),无效重来
int row, col;
do{
cout << "请" << (blackwhite?"黑方":"白方") << "下棋:";
cin >> row >> col;
// 4-2-1 不在棋盘中无效
// 4-2-2 那个位置已经有棋子了也无效
}while(out(row,col)||board[row-1][col-1]!='.');
// 4-3 把棋子放在棋盘上玩家选择的位置
board[row-1][col-1] = chess;
// 4-4 显示棋盘
showboard(board);
// 4-5 检查是否获胜
Size d[8]={ {0,1},{0,-1}, {-1,1},{1,-1},
{-1,0},{1,0}, {-1,-1},{1,1} };
int cnt, r, c;
// 4-5-1 反复检查从选定位置出发的8个(4对)方向,
for(int i=0; i<8; i++){
if((i&1)==0) cnt=1;//如果是偶数
r = row, c = col;
for(;;){
r += d[i].row, c += d[i].col;
// 4-5-2 统计跟新下的棋子同色的连续的棋子,
if(out(r,c)||board[r-1][c-1]!=chess) break;
++cnt;
}
// 4-5-3 任何一对方向上连续同色棋子数达到5个,当前玩家获胜。
if(cnt>=5){
cout << (blackwhite?"黑方胜":"白方胜") << endl;
return true;
}
}
return false;
}
int main()
{
//1、准备棋盘
// 1-1 定义一个二维数组,全部放上'.'
char board[M][N];
memset(board,'.',M*N);
// 1-2 显示棋盘
showboard(board);
//2、黑先
// 2-1 准备一个逻辑变量表示黑白方,初始为黑方
bool blackwhite = true;
//3、只要棋盘还有空位就反复4~5
// 3-1 循环,条件是空位数大于0
int space = M*N;
while(space>0){
//4、下一颗棋子,如果获胜,游戏就结束
if(place(board, blackwhite)) return 0;
//5、否则换对方
// 5-1 把逻辑变量的值反一下
blackwhite = !blackwhite;
}
//6、没有空位了就是和棋,游戏也结束
cout << "和棋" << endl;
return 0;
}
全部回答
五子棋 这是编写的人人对战,虽然不是人机对战,但是希望对你可以提供点帮助, 问题还是自己研究的掌握的好...只需要别人给点思路,自己实践
<p>双人奥特曼 <a href="http://wenwen.soso.com/z/urlalertpage.e?sp=shttp%3a%2f%2fwww.7k7w.com%2f26%2f13517%2f" target="_blank">http://www.7k7w.com/26/13517/</a></p>  <p>乖乖猪世界3.0 <a href="http://wenwen.soso.com/z/urlalertpage.e?sp=shttp%3a%2f%2fwww.4399ol.com%2f14%2f11051%2f" target="_blank">http://www.4399ol.com/14/11051/</a></p>  <p>超音鼠|超级索尼克 <a href="http://wenwen.soso.com/z/urlalertpage.e?sp=shttp%3a%2f%2fwww.2144.cc%2fhtml%2f17%2f2356%2f" target="_blank">http://www.2144.cc/html/17/2356/</a></p>  <p>就在2009年最热门、最大最好玩、最安全无毒、人气最高、可以边玩边下载的游戏网站:<br><a href="http://wenwen.soso.com/z/urlalertpage.e?sp=swww.7k7w.com" target="_blank">www.7k7w.com</a> <a href="http://wenwen.soso.com/z/urlalertpage.e?sp=swww.4399ol.com" target="_blank">www.4399ol.com</a> <a href="http://wenwen.soso.com/z/urlalertpage.e?sp=swww.2144.cc" target="_blank">www.2144.cc</a> <a href="http://wenwen.soso.com/z/urlalertpage.e?sp=swww.41717.com" target="_blank">www.41717.com</a></p>
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
three meters away from school=three meter
广源医药怎么去啊,有知道地址的么
墙角数枝梅、凌寒独自开 这首诗叫什么名字
中国古代造钟和西方造钟有什么不同?
湖南攸县攸衡北路3号离攸县汽车站有多远?
沈阳到法库怎么去啊?有没有公交车?或者班车
江苏哪里复读好
艾尔文网咖老街店这个地址在什么地方,我要处
关于海格立斯的资料
爱情公寓第二季胡一菲跳的MJ的舞好帅,求教学
人生本是一次时光的旅程,只有月白风清的淡定
辽宁理工学院女生宿舍有单独卫生间吗
中国邮政储蓄银行长滩支行这个地址在什么地方
漏电宝跳电
私人体育课塑形健身会所在哪里啊,我有事要去
推荐资讯
DVD放进电脑里面放不出来怎么回事
24k黄金美容棒需要早晚用吗
孙中山的墓里弄329级台阶有什么意思?
怎么样判断一个p2p平台安不安全?主要看什么啊
崇信县金源恒通汽车贸易有限责任公司地址在哪
联通号有没有像移动号的宜家亲情计划业务一样
最新的中国木地板十大品牌?
我的世界怪物乱斗里面那只三头金色巨龙中文叫
察布查尔锡伯自治县文物局地址有知道的么?有
Help! error C2720: storage-class specifier
精纯霜与乳液有什么区别,我是油性皮肤,介意使
自己家的风水被别人动手脚了 怎样破 最好反噬
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?