用C++编写一个小的游戏 可以运行的
答案:3 悬赏:80
解决时间 2021-02-07 21:42
- 提问者网友:冷场帝
- 2021-02-07 17:59
用C++编写一个小的游戏 可以运行的
最佳答案
- 二级知识专家网友:茫然不知崩溃
- 2021-02-07 19:02
五子棋
这是编写的人人对战,虽然不是人机对战,但是希望对你可以提供点帮助,
问题还是自己研究的掌握的好...只需要别人给点思路,自己实践
#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;
}
这是编写的人人对战,虽然不是人机对战,但是希望对你可以提供点帮助,
问题还是自己研究的掌握的好...只需要别人给点思路,自己实践
#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;
}
全部回答
- 1楼网友:嗷呜我不好爱
- 2021-02-07 21:39
五子棋
这是编写的人人对战,虽然不是人机对战,但是希望对你可以提供点帮助,
问题还是自己研究的掌握的好...只需要别人给点思路,自己实践
- 2楼网友:浪女动了心
- 2021-02-07 20:33
<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>
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |