找五子棋源代码c++

小弟要程序设计实训,也就是和毕业实训差不多。2.课程设计的具体工作内容:1)开发二人对弈五子棋游戏,棋子分为黑白两种;2)当同一种颜色的棋子实现五子连珠时即为获胜;3)通... 小弟要程序设计实训,也就是和毕业实训差不多。
2.课程设计的具体工作内容:
1) 开发二人对弈五子棋游戏,棋子分为黑白两种;
2) 当同一种颜色的棋子实现五子连珠时即为获胜;
3) 通过按下棋盘上的状态键,用以标示该黑子落子还是白子落子;
4) 要求系统运行稳定、可靠。
所以求各位大大有经验的话把源代码给我下。。
小弟在此先谢过了。。
展开
 我来答
MsShadowprince
2021-01-02
知道答主
回答量:1
采纳率:0%
帮助的人:530
展开全部

devc++运行通过,含注释

#include<bits/stdc++.h>

#include<windows.h>

#include<conio.h>

#include<ctime>

using namespace std;

void gotoxy(int x,int y) {

COORD pos = {x,y};

HANDLE hOut =GetStdHandle(STD_OUTPUT_HANDLE);

SetConsoleCursorPosition(hOut,pos);

}//将光标移动到x,y点上 

int mp[16][16]= {0},x1=0,x2=0;//地图,用来搜索五子连成的 

void print(int x) {

gotoxy(x,1);

cout<<"┬";

for(int i=2; i<=14; i++) {

gotoxy(x,i);

cout<<"┼";

}

gotoxy(x,15);

cout<<"┴";

}//输出棋盘的中间部分 

void gotoc() {

system("cls");

gotoxy(55,10);

cout<<"五  子  棋";

gotoxy(56,20);

cout<<"加载中...";

gotoxy(55,21);

cout<<"作者:北辰";

for(int j=0; j<100; j++) {

Sleep(17);

gotoxy(j+3,15);

cout<<" "<<j<<"%";

gotoxy(j,15);

cout<<"■";

}

system("cls");

for(int i=0; i<100; i++) {

for(int j=0; j<40; j++) {

gotoxy(i,j);

cout<<"■";

//SetColor(rand()%10);

}

}

system("cls");

}//加载界面函数 

int main() {

gotoc();//加载 

for(int i=2; i<=30; i+=2) {

gotoxy(i,0);

cout<<i/2;

}//横坐标 

for(int i=1; i<=15; i++) {

gotoxy(0,i);

cout<<i;

}//纵坐标 

gotoxy(2,1);

cout<<"┌";

for(int i=2; i<=14; i++) {

gotoxy(2,i);

cout<<"├";

}

gotoxy(2,15);

cout<<"└";//输出棋盘左侧 

for(int i=4; i<=28; i+=2) {

print(i);

}//用一个循环来输出棋盘中间部分 

gotoxy(30,1);

cout<<"┐";

for(int i=2; i<=14; i++) {

gotoxy(30,i);

cout<<"┤";

}

gotoxy(30,15);

cout<<"┘";//输出棋盘右侧

bool l=0;//没什么用的flag 

long long m=2;//这个很重要,用来判断是该白棋走还是黑棋走,每次走完++,每次判断是偶数,该白棋,是奇数,该黑棋(一般用flag判断,这是我个人喜好) 

gotoxy(0,17);

cout<<"游戏说明:白棋先走,落子请输入坐标,其他的不用我说了吧";//说明,一定要看 

while(l=1) {

gotoxy(32,16);

int x,y;

cin>>x>>y;//读入xy坐标 

gotoxy(32,16);

cout<<"                              ";

if(mp[x][y]!=0) { 

gotoxy(32,16);

cout<<"此位置已有落子!";

Sleep(1000);

gotoxy(32,16);

cout<<"                   ";

continue;

}//很重要,用来判断此位置有没有落子 

if(x>15&&y<=15) {

gotoxy(32,16);

cout<<"x坐标超出棋盘范围!";

Sleep(1000);

gotoxy(32,16);

cout<<"                   ";

continue;

if(y>15&&x<=15) {

gotoxy(32,16);

cout<<"y坐标超出棋盘范围!";

Sleep(1000);

gotoxy(32,16);

cout<<"                   ";

continue;

}

if(y>15&&x>15) {

gotoxy(32,16);

cout<<"x和y坐标均超出棋盘范围!";

Sleep(1000);

gotoxy(32,16);

cout<<"                   ";

continue;

}//以上三个if用来判断有没有超出棋盘大小 

gotoxy(x*2,y);

if(m%2==0) {//是偶数,该白棋 

cout<<"●";//输出棋子 

mp[x][y]=1;

//横坐标搜索有没有连成五个 

if(mp[x+1][y]==1&&mp[x+2][y]==1&&mp[x+3][y]==1&&mp[x+4][y]==1) {

gotoxy(32,16);

cout<<"白棋获胜!";

return 0;

}

if(mp[x-1][y]==1&&mp[x+1][y]==1&&mp[x+2][y]==1&&mp[x+3][y]==1) {

gotoxy(32,16);

cout<<"白棋获胜!";

return 0;

}

if(mp[x-2][y]==1&&mp[x-1][y]==1&&mp[x+1][y]==1&&mp[x+2][y]==1) {

gotoxy(32,16);

cout<<"白棋获胜!";

return 0;

}

if(mp[x-3][y]==1&&mp[x-2][y]==1&&mp[x-1][y]==1&&mp[x+1][y]==1) {

gotoxy(32,16);

cout<<"白棋获胜!";

return 0;

}

if(mp[x-4][y]==1&&mp[x-3][y]==1&&mp[x-2][y]==1&&mp[x-1][y]==1) {

gotoxy(32,16);

cout<<"白棋获胜!";

return 0;

}

//竖

if(mp[x][y+1]==1&&mp[x][y+2]==1&&mp[x][y+3]==1&&mp[x][y+4]==1) {

gotoxy(32,16);

cout<<"白棋获胜!";

return 0;

}

if(mp[x][y-1]==1&&mp[x][y+1]==1&&mp[x][y+2]==1&&mp[x][y+3]==1) {

gotoxy(32,16);

cout<<"白棋获胜!";

return 0;

}

if(mp[x][y-2]==1&&mp[x][y-1]==1&&mp[x][y+1]==1&&mp[x][y+2]==1) {

gotoxy(32,16);

cout<<"白棋获胜!";

return 0;

}

if(mp[x][y-3]==1&&mp[x][y-2]==1&&mp[x][y-1]==1&&mp[x][y+1]==1) {

gotoxy(32,16);

cout<<"白棋获胜!";

return 0;

}

if(mp[x][y-4]==1&&mp[x][y-3]==1&&mp[x][y-2]==1&&mp[x][y-1]==1) {

gotoxy(32,16);

cout<<"白棋获胜!";

return 0;

}

//斜'\'

if(mp[x+1][y+1]==1&&mp[x+2][y+2]==1&&mp[x+3][y+3]==1&&mp[x+4][y+4]==1) {

gotoxy(32,16);

cout<<"白棋获胜!";

return 0;

}

if(mp[x-1][y-1]==1&&mp[x+1][y+1]==1&&mp[x+2][y+2]==1&&mp[x+3][y+3]==1) {

gotoxy(32,16);

cout<<"白棋获胜!";

return 0;

}

if(mp[x-2][y-2]==1&&mp[x-1][y-1]==1&&mp[x+1][y+1]==1&&mp[x+2][y+2]==1) {

gotoxy(32,16);

cout<<"白棋获胜!";

return 0;

}

if(mp[x-3][y-3]==1&&mp[x-2][y-2]==1&&mp[x-1][y-1]==1&&mp[x+1][y+1]==1) {

gotoxy(32,16);

cout<<"白棋获胜!";

return 0;

}

if(mp[x-4][y-4]==1&&mp[x-3][y-3]==1&&mp[x-2][y-2]==1&&mp[x-1][y-1]==1) {

gotoxy(32,16);

cout<<"白棋获胜!";

return 0;

}

//斜'/'

if(mp[x-1][y+1]==1&&mp[x-2][y+2]==1&&mp[x-3][y+3]==1&&mp[x-4][y+4]==1) {

gotoxy(32,16);

cout<<"白棋获胜!";

return 0;

}

if(mp[x+1][y-1]==1&&mp[x-1][y+1]==1&&mp[x-2][y+2]==1&&mp[x-3][y+3]==1) {

gotoxy(32,16);

cout<<"白棋获胜!";

return 0;

}

if(mp[x+2][y-2]==1&&mp[x+1][y-1]==1&&mp[x-1][y+1]==1&&mp[x-2][y+2]==1) {

gotoxy(32,16);

cout<<"白棋获胜!";

return 0;

}

if(mp[x+3][y-3]==1&&mp[x+2][y-2]==1&&mp[x+1][y-1]==1&&mp[x-1][y+1]==1) {

gotoxy(32,16);

cout<<"白棋获胜!";

return 0;

}

if(mp[x+4][y-4]==1&&mp[x+3][y-3]==1&&mp[x+2][y-2]==1&&mp[x+1][y-1]==1) {

gotoxy(32,16);

cout<<"白棋获胜!";

return 0;

}

} else if(m%2==1) {//为奇数,该黑棋 

cout<<"○";

mp[x][y]=2;

//横

if(mp[x+1][y]==2&&mp[x+2][y]==2&&mp[x+3][y]==2&&mp[x+4][y]==2) {

gotoxy(32,16);

cout<<"黑棋获胜!";

return 0;

}

if(mp[x-1][y]==2&&mp[x+1][y]==2&&mp[x+2][y]==2&&mp[x+3][y]==2) {

gotoxy(32,16);

cout<<"黑棋获胜!";

return 0;

}

if(mp[x-2][y]==2&&mp[x-1][y]==2&&mp[x+1][y]==2&&mp[x+2][y]==2) {

gotoxy(32,16);

cout<<"黑棋获胜!";

return 0;

}

if(mp[x-3][y]==2&&mp[x-2][y]==2&&mp[x-1][y]==2&&mp[x+1][y]==2) {

gotoxy(32,16);

cout<<"黑棋获胜!";

return 0;

}

if(mp[x-4][y]==2&&mp[x-3][y]==2&&mp[x-2][y]==2&&mp[x-1][y]==2) {

gotoxy(32,16);

cout<<"黑棋获胜!";

return 0;

}

//竖

if(mp[x][y+1]==2&&mp[x][y+2]==2&&mp[x][y+3]==2&&mp[x][y+4]==2) {

gotoxy(32,16);

cout<<"黑棋获胜!";

return 0;

}

if(mp[x][y-1]==2&&mp[x][y+1]==2&&mp[x][y+2]==2&&mp[x][y+3]==2) {

gotoxy(32,16);

cout<<"黑棋获胜!";

return 0;

}

if(mp[x][y-2]==2&&mp[x][y-1]==2&&mp[x][y+1]==2&&mp[x][y+2]==2) {

gotoxy(32,16);

cout<<"黑棋获胜!";

return 0;

}

if(mp[x][y-3]==2&&mp[x][y-2]==2&&mp[x][y-1]==2&&mp[x][y+1]==2) {

gotoxy(32,16);

cout<<"黑棋获胜!";

return 0;

}

if(mp[x][y-4]==2&&mp[x][y-3]==2&&mp[x][y-2]==2&&mp[x][y-1]==2) {

gotoxy(32,16);

cout<<"黑棋获胜!";

return 0;

}

//斜'\'

if(mp[x+1][y+1]==2&&mp[x+2][y+2]==2&&mp[x+3][y+3]==2&&mp[x+4][y+4]==2) {

gotoxy(32,16);

cout<<"黑棋获胜!";

return 0;

}

if(mp[x-1][y-1]==2&&mp[x+1][y+1]==2&&mp[x+2][y+2]==2&&mp[x+3][y+3]==2) {

gotoxy(32,16);

cout<<"黑棋获胜!";

return 0;

}

if(mp[x-2][y-2]==2&&mp[x-1][y-1]==2&&mp[x+1][y+1]==2&&mp[x+2][y+2]==2) {

gotoxy(32,16);

cout<<"黑棋获胜!";

return 0;

}

if(mp[x-3][y-3]==2&&mp[x-2][y-2]==2&&mp[x-1][y-1]==2&&mp[x+1][y+1]==2) {

gotoxy(32,16);

cout<<"黑棋获胜!";

return 0;

}

if(mp[x-4][y-4]==2&&mp[x-3][y-3]==2&&mp[x-2][y-2]==2&&mp[x-1][y-1]==2) {

gotoxy(32,16);

cout<<"黑棋获胜!";

return 0;

}

//斜'/'

if(mp[x-1][y+1]==2&&mp[x-2][y+2]==2&&mp[x-3][y+3]==2&&mp[x-4][y+4]==2) {

gotoxy(32,16);

cout<<"黑棋获胜!";

return 0;

}

if(mp[x+1][y-1]==2&&mp[x-1][y+1]==2&&mp[x-2][y+2]==2&&mp[x-3][y+3]==2) {

gotoxy(32,16);

cout<<"黑棋获胜!";

return 0;

}

if(mp[x+2][y-2]==2&&mp[x+1][y-1]==2&&mp[x-1][y+1]==2&&mp[x-2][y+2]==2) {

gotoxy(32,16);

cout<<"黑棋获胜!";

return 0;

}

if(mp[x+3][y-3]==2&&mp[x+2][y-2]==2&&mp[x+1][y-1]==2&&mp[x-1][y+1]==2) {

gotoxy(32,16);

cout<<"黑棋获胜!";

return 0;

}

if(mp[x+4][y-4]==2&&mp[x+3][y-3]==2&&mp[x+2][y-2]==2&&mp[x+1][y-1]==2) {

gotoxy(32,16);

cout<<"黑棋获胜!";

return 0;

}

}

m++;//不要忘记++m 

}

return 0;//这个没什么用了,不过比赛时不要忘记加哦,否则判0分 

}

MemoryDp
推荐于2017-11-25 · 超过11用户采纳过TA的回答
知道答主
回答量:51
采纳率:0%
帮助的人:9.7万
展开全部
#include "iostream"
#include <iomanip>
using namespace std;
const int M=20;
const int N=20;
int main()
{
char weizhi[M][N];
int k,i,j,x,y,flag=0;
cout<<"欢迎使用简易双人对战五子棋游戏"<<endl;
cout<<"五子棋棋谱如下:"<<endl;
for(k=0;k<=N;k++)
cout<<setw(3)<<setfill(' ')<<k;
cout<<endl;
for(i=1;i<=M;i++)
{
cout<<setw(3)<<setfill(' ')<<i;
for(j=1;j<=N;j++)
{
weizhi[i][j]='-';
cout<<setw(3)<<setfill(' ')<<weizhi[i][j];
}
cout<<endl;
}
while(flag==0)
{
//红方落子
cout<<"请红方输入落子位置:"<<endl;
loop1:
cout<<"请输入落子的行数:";
cin>>x;
cout<<"请输入落子的列数:";
cin>>y;
if(weizhi[x][y]=='-')
{
weizhi[x][y]='*';
for(k=0;k<=N;k++)
cout<<setw(3)<<setfill(' ')<<k;
cout<<endl;
for(i=1;i<=M;i++)
{
cout<<setw(3)<<setfill(' ')<<i;
for(j=1;j<=N;j++)
cout<<setw(3)<<setfill(' ')<<weizhi[i][j];
cout<<endl;
}
}
else
{
cout<<"你不能在这落子,请重新选择落子位置:"<<endl;
goto loop1;
}
//判断胜利
for(i=1;i<=M-4;i++)
{
for(j=1;j<=N-4;j++)
{
if(weizhi[i][j]=='*' && weizhi[i][j+1]=='*' && weizhi[i][j+2]=='*' && weizhi[i][j+3]=='*' && weizhi[i][j+4]=='*')
{
cout<<"恭喜红方获得简易双人对战五子棋的胜利!耶~~~"<<endl;
flag=1;
break;
}
if(weizhi[i][j]=='*' && weizhi[i+1][j]=='*' && weizhi[i+2][j]=='*' && weizhi[i+3][j]=='*' && weizhi[i+4][j]=='*')
{
cout<<"恭喜红方获得简易双人对战五子棋的胜利!耶~~~"<<endl;
flag=1;
break;
}
if(weizhi[i][j]=='*' && weizhi[i+1][j+1]=='*' && weizhi[i+2][j+2]=='*' && weizhi[i+3][j+3]=='*' && weizhi[i+4][j+4]=='*')
{
cout<<"恭喜红方获得简易双人对战五子棋的胜利!耶~~~"<<endl;
flag=1;
break;
}
if(flag==1)
break;
}
}

//蓝方落子
cout<<"请蓝方输入落子位置:"<<endl;
loop2:
cout<<"请输入落子的行数:";
cin>>x;
cout<<"请输入落子的列数:";
cin>>y;
if(weizhi[x][y]=='-')
{
weizhi[x][y]='#';
for(k=0;k<=N;k++)
cout<<setw(3)<<setfill(' ')<<k;
cout<<endl;
for(i=1;i<=M;i++)
{
cout<<setw(3)<<setfill(' ')<<i;
for(j=1;j<=N;j++)
cout<<setw(3)<<setfill(' ')<<weizhi[i][j];
cout<<endl;
}
}
else
{
cout<<"你不能在这落子,请重新选择落子位置:";
goto loop2;
}

//判断胜利
for(i=1;i<=M-4;i++)
{
for(j=1;j<=N-4;j++)
{
if(weizhi[i][j]=='#' && weizhi[i][j+1]=='#' && weizhi[i][j+2]=='#' && weizhi[i][j+3]=='#' && weizhi[i][j+4]=='#')
{
cout<<"恭喜蓝方获得简易双人对战五子棋的胜利!耶~~~"<<endl;
flag=1;
break;
}
if(weizhi[i][j]=='#' && weizhi[i+1][j]=='#' && weizhi[i+2][j]=='#' && weizhi[i+3][j]=='#' && weizhi[i+4][j]=='#')
{
cout<<"恭喜蓝方获得简易双人对战五子棋的胜利!耶~~~"<<endl;
flag=1;
break;
}
if(weizhi[i][j]=='#' && weizhi[i+1][j+1]=='#' && weizhi[i+2][j+2]=='#' && weizhi[i+3][j+3]=='#' && weizhi[i+4][j+4]=='#')
{
cout<<"恭喜蓝方获得简易双人对战五子棋的胜利!耶~~~"<<endl;
flag=1;
break;
}
if(flag==1)
break;
}
}
}
return 0;
}

我运行过,没有错误.
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友10f74db
2012-06-05 · 超过15用户采纳过TA的回答
知道答主
回答量:55
采纳率:0%
帮助的人:37.9万
展开全部
网上下载一个,再改改
追问
不会改啊。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式