求一个c++实现人机对战,人人对战的五子棋游戏源代码,急用,谢谢

求一个c++实现人机对战,人人对战的五子棋游戏源代码,急用,谢谢,第1张

五子棋范例的源程序:目录renju下的内容

程序在附件中,需要请免费下载

renju.dsw

renju.dsp

 这两个是项目文件。包含整个绝誉项目的文件配置等信息

RESOURCE.H

renju.rc

 这是整个工程中使用的Windows资源列表。包括置于res子目录下的图标,

位图以及光标等内容。

Renju.h

    这是应用程序的主头文件。包含了通用于工程的其他头文件。以及

CRenjuApp类的声明。

renju.cpp

    这是应用程序的主源程序。包含整个程序的入口点。CRenjuApp类的实现。

StdAfx.h

StdAfx.cpp

    这对文件由用于将一些预编译信息纳入程序。编译后将产生stdafx.obj

define.h

 这是一个包含程序中的数据表示的定高宏碧义的头文件。

NewGame.h

NewGame.cpp

 这一对文件定义并实现用于新游戏的设置的对话框。

renjuDlg.h

renjuDlg.cpp

 这一对文件定义并实现了,五子棋的主界面。

Eveluation.h

Eveluation.cpp

 这一对文件定义并实现了估值核心类。

MoveGenerator.h

MoveGenerator.cpp

 这一对文件定义并实现了走法产生器。

SearchEngine.h

SearchEngine.cpp

 这一对文件定义了搜索引擎接口。

HistoryHeuristic.h

HistoryHeuristic.cpp

 这一对文件定义并实现历史启发类。

TranspositionTable.h

TranspositionTable.cpp

 这一对文件定义并实现置换表类。

NegaScout_TT_HH.h

NegaScout_TT_HH.cpp

 这一对文件定义并实戚举现历史启发和置换表增强的NegaScout搜索引擎。

Directory of renju\res

chess.rc2//资源文件

chess.ico//图标文件

若满意请及时采纳,谢谢

#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=0k<=Nk++)

cout<<setw(3)<<setfill(' ')<<k

cout<<endl

for(i=1i<=Mi++)

{

cout<<setw(3)<<setfill(' ')<<i

for(j=1j<=Nj++)

{

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=0k<=Nk++)

cout<<setw(3)<<setfill(' ')<<k

cout<<endl

for(i=1i<=Mi++)

{

cout<<setw(3)<<setfill(' ')<<i

for(j=1j<=Nj++)

cout<<setw(3)<<setfill(' ')<<weizhi[i][j]

cout<<endl

}

}

else

{

cout<<"你不能在这落子,请重新选择落子位置:"<<endl

goto loop1

}

//判断胜利

for(i=1i<=M-4i++)

{

for(j=1j<=N-4j++)

{

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=0k<=Nk++)

cout<<setw(3)<<setfill(' ')<<k

cout<<endl

for(i=1i<=Mi++)

{

cout<<setw(3)<<setfill(' ')<<i

for(j=1j<=Nj++)

cout<<setw(3)<<setfill(' ')<<weizhi[i][j]

cout<<endl

}

}

else

{

cout<<"你不能在这落子,请重新选择落子位置:"

goto loop2

}

//判断胜利

for(i=1i<=M-4i++)

{

for(j=1j<=N-4j++)

{

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

}

我运行过,没有错误.

这个是稍微好一点的了,以前没事试过

/*

五子棋

*/

#include<stdio.h>

#include<stdlib.h>

#include<graphics.h>

#include<bios.h>

#include<conio.h>

#define LEFT 0x4b00

#define RIGHT 0x4d00

#define DOWN 0x5000

#define UP 0x4800

#define ESC 0x011b

#define SPACE 0x3920

#define BILI 20

#define JZ 4

#define JS 3

#define N 19

int box[N][N]

int step_x,step_y

int key

int flag=1

void draw_box()

没派携void draw_cicle(int x,int y,int color)

void change()

void judgewho(int x,int y)

void judgekey()

int judgeresult(int x,int y)

void attentoin()

void attention()

{

char ch

window(1,1,80,25)

textbackground(LIGHTBLUE)

textcolor(YELLOW)

clrscr()

gotoxy(15,2)

printf("游戏 *** 作规则:")

gotoxy(15,4)

printf("Play Rules:")

gotoxy(15,6)

printf("1、按左右上下方向键移动棋子")

gotoxy(15,8)

printf("1. Press Left,Right,Up,Down Key to move Piece")

gotoxy(15,10)

printf("2、按空格确定落棋子枯伏")

gotoxy(15,12)

printf("2. Press Space to place the Piece")

gotoxy(15,14)

printf("3、禁止在棋盘外按空格")

gotoxy(15,16)

printf("3. DO NOT press Space outside of the chessboard")

gotoxy(15,18)

printf("你是否接受上述的游戏规则(Y/N)")

羡举gotoxy(15,20)

printf("Do you accept the above Playing Rules? [Y/N]:")

while(1)

{

gotoxy(60,20)

ch=getche()

if(ch=='Y'||ch=='y')

break

else if(ch=='N'||ch=='n')

{

window(1,1,80,25)

textbackground(BLACK)

textcolor(LIGHTGRAY)

clrscr()

exit(0)

}

gotoxy(51,12)

printf(" ")

}

}

void draw_box()

{

int x1,x2,y1,y2

setbkcolor(LIGHTBLUE)

setcolor(YELLOW)

gotoxy(7,2)

printf("Left, Right, Up, Down KEY to move, Space to put, ESC-quit.")

for(x1=1,y1=1,y2=18x1<=18x1++)

line((x1+JZ)*BILI,(y1+JS)*BILI,(x1+JZ)*BILI,(y2+JS)*BILI)

for(x1=1,y1=1,x2=18y1<=18y1++)

line((x1+JZ)*BILI,(y1+JS)*BILI,(x2+JZ)*BILI,(y1+JS)*BILI)

for(x1=1x1<=18x1++)

for(y1=1y1<=18y1++)

box[x1][y1]=0

}

void draw_circle(int x,int y,int color)

{

setcolor(color)

setlinestyle(SOLID_LINE,0,1)

x=(x+JZ)*BILI

y=(y+JS)*BILI

circle(x,y,8)

}

void judgekey()

{

int i

int j

switch(key)

{

case LEFT :

if(step_x-1<0)

break

else

{

for(i=step_x-1,j=step_yi>=1i--)

if(box[i][j]==0)

{

draw_circle(step_x,step_y,LIGHTBLUE)

break

}

if(i<1)break

step_x=i

judgewho(step_x,step_y)

break

}

case RIGHT :

if(step_x+1>18)

break

else

{

for(i=step_x+1,j=step_yi<=18i++)

if(box[i][j]==0)

{

draw_circle(step_x,step_y,LIGHTBLUE)

break

}

if(i>18)break

step_x=i

judgewho(step_x,step_y)

break

}

case DOWN :

if((step_y+1)>18)

break

else

{

for(i=step_x,j=step_y+1j<=18j++)

if(box[i][j]==0)

{

draw_circle(step_x,step_y,LIGHTBLUE)

break

}

if(j>18)break

step_y=j

judgewho(step_x,step_y)

break

}

case UP :

if((step_y-1)<0)

break

else

{

for(i=step_x,j=step_y-1j>=1j--)

if(box[i][j]==0)

{

draw_circle(step_x,step_y,LIGHTBLUE)

break

}

if(j<1)break

step_y=j

judgewho(step_x,step_y)

break

}

case ESC :

break

case SPACE :

if(step_x>=1&&step_x<=18&&step_y>=1&&step_y<=18)

{

if(box[step_x][step_y]==0)

{

box[step_x][step_y]=flag

if(judgeresult(step_x,step_y)==1)

{

sound(1000)

delay(1000)

nosound()

gotoxy(30,4)

if(flag==1)

{

setbkcolor(BLUE)

cleardevice()

setviewport(100,100,540,380,1)

/*定义一个图形窗口*/

setfillstyle(1,2)

/*绿色以实填充*/

setcolor(YELLOW)

rectangle(0,0,439,279)

floodfill(50,50,14)

setcolor(12)

settextstyle(1,0,5)

/*三重笔划字体, 水平放?5倍*/

outtextxy(20,20,"The White Win !")

setcolor(15)

settextstyle(3,0,5)

/*无衬笔划字体, 水平放大5倍*/

outtextxy(120,120,"The White Win !")

setcolor(14)

settextstyle(2,0,8)

getch()

closegraph()

exit(0)

}

if(flag==2)

{

setbkcolor(BLUE)

cleardevice()

setviewport(100,100,540,380,1)

/*定义一个图形窗口*/

setfillstyle(1,2)

/*绿色以实填充*/

setcolor(YELLOW)

rectangle(0,0,439,279)

floodfill(50,50,14)

setcolor(12)

settextstyle(1,0,8)

/*三重笔划字体, 水平放大8倍*/

outtextxy(20,20,"The Red Win !")

setcolor(15)

settextstyle(3,0,5)

/*无衬笔划字体, 水平放大5倍*/

outtextxy(120,120,"The Red Win !")

setcolor(14)

settextstyle(2,0,8)

getch()

closegraph()

exit(0)

}

}

change()

break

}

}

else

break

}

}

void change()

{

if(flag==1)

flag=2

else

flag=1

}

void judgewho(int x,int y)

{

if(flag==1)

draw_circle(x,y,15)

if(flag==2)

draw_circle(x,y,4)

}

int judgeresult(int x,int y)

{

int j,k,n1,n2

while(1)

{

n1=0

n2=0

/*水平向左数*/

for(j=x,k=yj>=1j--)

{

if(box[j][k]==flag)

n1++

else

break

}

/*水平向右数*/

for(j=x,k=yj<=18j++)

{

if(box[j][k]==flag)

n2++

else

break

}

if(n1+n2-1>=5)

{

return(1)

break

}

/*垂直向上数*/

n1=0

n2=0

for(j=x,k=yk>=1k--)

{

if(box[j][k]==flag)

n1++

else

break

}

/*垂直向下数*/

for(j=x,k=yk<=18k++)

{

if(box[j][k]==flag)

n2++

else

break

}

if(n1+n2-1>=5)

{

return(1)

break

}

/*向左上方数*/

n1=0

n2=0

for(j=x,k=yj>=1,k>=1j--,k--)

{

if(box[j][k]==flag)

n1++

else

break

}

/*向右下方数*/

for(j=x,k=yj<=18,k<=18j++,k++)

{

if(box[j][k]==flag)

n2++

else

break

}

if(n1+n2-1>=5)

{

return(1)

break

}

/*向右上方数*/

n1=0

n2=0

for(j=x,k=yj<=18,k>=1j++,k--)

{

if(box[j][k]==flag)

n1++

else

break

}

/*向左下方数*/

for(j=x,k=yj>=1,k<=18j--,k++)

{

if(box[j][k]==flag)

n2++

else

break

}

if(n1+n2-1>=5)

{

return(1)

break

}

return(0)

break

}

}

void main()

{

int gdriver=VGA,gmode=VGAHI

clrscr()

attention()

initgraph(&gdriver,&gmode,"c:\\tc")

/* setwritemode(XOR_PUT)*/

flag=1

draw_box()

do

{

step_x=0

step_y=0

/*draw_circle(step_x,step_y,8)*/

judgewho(step_x-1,step_y-1)

do

{

while(bioskey(1)==0)

key=bioskey(0)

judgekey()

}

while(key!=SPACE&&key!=ESC)

}

while(key!=ESC)

closegraph()

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12341619.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存