五子棋范例的源程序:目录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()
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)