进入程序后,从game菜单可选择游戏的种类,在游戏进行过程中采用鼠标左键下子,右键悔棋。
整个源程序总共由mouse.c、timedate.c、bmp.c、bww.c、bww.prj五个文件组成,约1500余行。其中mouse.c包含鼠标相关的语句;timedate.c用于显示当前的日期与时间;bmp.c用于显示16色位图作为程序的封面以及便于中文的显示;
bww.c是整个程序的核心部分,下面将就bww.c中的各个重要函数作一下简要的介绍:
void init():该函数用于图形以及鼠标的初始化。
void anniu(int x0, int y0, int x1, int y1, int color1, int color2):该函数通过在一块平面区域的四周用两种颜色画线,使之产生凸起或凹陷的立体效果。
void showmenu()
void helpmenu();
void filemenu() 这五个函数主要用于菜单栏及各级菜单的显示。
void topic()
void about()
void wuziqi():通过调用该函数进入五子棋的双人对下环境。
void heibaiqi():通过调用该函数进入黑白棋的双人对下环境。
void mind2cpu():通过调用该函数进入黑白棋的陵李人机对下环境。
void draw(int type):该函数根据type参数值的不同,画出符合需要的棋盘。
void win(int type, int winner):通过对该函数的调用,显示胜利的信息,并询问接着要执行的 *** 作。
void gameover():通过对该函数的调用,退出本程序。
int xiazi(int xx, int yy, int type):该函数在棋盘坐标为洞薯(xx, yy)处下type参数所定义的棋子。
void control(int type):该函数用于五子棋与黑白棋的双人对下环境,通过循环不断地接受鼠标的的按键信息,然后调用相应的函数执行所要求的功能。
void judge():该函数判断棋盘上是否有同种颜色的棋子连成了五颗以上或棋盘以被占满,即判断是否以分出了胜负,还是平手。
void huiqi():该函数用于执行五子棋的悔棋功能。
void hdisplay()
void display()
void copyqipan():该函数将每一步的棋盘状况复制到一个备份数组中,以实现黑白棋的悔棋功能。
int copy_chess (int source[8][8],int dest[8][8]):该函数将前一数组各项复制到后一数组当中。主要用于黑白棋的人工智能。
void hhuiqi(int type):该函数调用display()函数实现黑白棋的悔棋功能。
int hpass(int my_self):该函数判断my_self代表一方是否无处可下,但不在屏幕上显示,主要用于黑白棋的人工智能。
int pass(int turn):该函数判断turn代表一方是否无处可下,并在屏幕上显示“PASS”字样。
long hvalue(int pad[8][8], int turn):该函数根据分值表判断turn这一方在pad[8][8]数组所表示的情况下的的分。主要用于黑白棋的人工智能。
int core_think(int my_self):通过递归调用判断电脑走哪一步最合适,MAXSTEP定义了电脑所想的步数,目前我将其值定为4。
void hjudge():该函数计算棋盘当前状况双方的子数,并显示出来,用于两个黑白棋中。
int change(int cx, int cy, int playerorder, int a):判断playerorder一方在(cx, cy)处下子是否能引起改变,根据a的不同以决定是否要在棋盘上表示出来,用于pass的判断,和显示一方下子所引起的双方棋子的变化。
int try_xy(int x, int y, int chess[8][8], int my_self):判断my_self一方在(x, y)处下子是否能引起改变,将此改变记录在chess[8][8]中。
以上即是bww.c文件中主要函数的介绍。由于黑白棋的人工智能是后来才想到要编的,所以有些函数有些重复,并且黑白棋的人工智能很难达到非常高,我是编了好长时间才作成这一个让我可以接受的程度。而且这种算法的效率也很低,导致当MAXSTEP为5时,电脑每走一步就要等好长时间。希望今后我能够找到解决这些不足的好方法。
代码如下:
bmp.h:
#include<conio.h>
#include<stdio.h>
#include<process.h>
#include<graphics.h>
#include<dos.h>
#include<bios.h>
#include<stdlib.h>
#include<time.h>
struct bmphead{
unsigned char b
unsigned char m
unsigned long bfsize
unsigned int bfresterved1
unsigned int bfresterved2
unsigned long bfoffbits
unsigned long bitsize
unsigned long bmpwidth
unsigned long bmpheight
unsigned int bmpplanes
unsigned int bmpcount
unsigned long bmpcompression
unsigned long bmpimgsize
unsigned long bmpxpeispermeter
unsigned long bmpypeispermeter
unsigned long bmpcirused
unsigned long bmpimportant
}bmp
/*----------------------------------------------------------------------------------------------*/
struct ColorIndex
{
unsigned char Blue
unsigned char Green
unsigned char Red
unsigned char Reserved
}index[16]
int pageno
/*==============================================================================================*/
void SetPlate(int ColorIndex,char Red,char Green,char Blue)
{
outportb(0x3c8,ColorIndex)
outportb(0x3c9,Red)
outportb(0x3c9,Green)
outportb(0x3c9,Blue)
}
/*----------------------------------------------------------------------------------------------*/
showbmp(int x,int y,char*filename)
{
FILE *fp
char c,temp1,temp2
register int m
int n
register unsigned long i=0,j=0
struct palettetype *sq
HideCur()
if((fp=fopen(filename,"rb"))==NULL)
printf("can't open file!")
else
{
fread(&bmp,sizeof(struct bmphead),1,fp)
fread(index,sizeof(struct ColorIndex),16,fp)
}
if(bmp.bmpwidth%32==0)
n=bmp.bmpwidth/2
else n=4+bmp.bmpwidth/2-(bmp.bmpwidth/2)%4
m=9
SetPlate(57,index[m].Red,index[m].Green,index[m].Blue)
m++
SetPlate(58,index[m].Red,index[m].Green,index[m].Blue)
m++
SetPlate(59,index[m].Red,index[m].Green,index[m].Blue)
m++
SetPlate(60,index[m].Red,index[m].Green,index[m].Blue)
m++
SetPlate(61,index[m].Red,index[m].Green,index[m].Blue)
m++
SetPlate(62,index[m].Red,index[m].Green,index[m].Blue)
m++
SetPlate(63,index[m].Red,index[m].Green,index[m].Blue)
fseek(fp, bmp.bfoffbits,0)
for(m=0m<bmp.bmpheightm++){
j=0
for(i=0i<ni++)
{
c=fgetc(fp)
if(j<bmp.bmpwidth)
{
temp1=(c&0xF0)>>4
temp2=c&0x0F
putpixel(x+j,y-m,temp1)
j++
putpixel(x+j,y-m,temp2)
j++
}
}
}
fclose(fp)
ShowCur()
}
timedate.c:
#include<dos.h>
#include<graphics.h>
int hour=100, minute=100, second=100
void timedate(int x, int y, int n)
{
int i, j
settextstyle(0, 0, 1)
setfillstyle(1, LIGHTGRAY)
bar(x, y, x+16, y+7)
j=n%10
i=(n-j)/10
setcolor(BLUE)
switch(i){
case 0: outtextxy(x, y, "0")break
case 1: outtextxy(x, y, "1")break
case 2: outtextxy(x, y, "2")break
case 3: outtextxy(x, y, "3")break
case 4: outtextxy(x, y, "4")break
case 5: outtextxy(x, y, "5")break
case 6: outtextxy(x, y, "6")break
case 7: outtextxy(x, y, "7")break
case 8: outtextxy(x, y, "8")break
case 9: outtextxy(x, y, "9")break
}
switch(j){
case 0: outtextxy(x+8, y, "0")break
case 1: outtextxy(x+8, y, "1")break
case 2: outtextxy(x+8, y, "2")break
case 3: outtextxy(x+8, y, "3")break
case 4: outtextxy(x+8, y, "4")break
case 5: outtextxy(x+8, y, "5")break
case 6: outtextxy(x+8, y, "6")break
case 7: outtextxy(x+8, y, "7")break
case 8: outtextxy(x+8, y, "8")break
case 9: outtextxy(x+8, y, "9")break
}
}
void dat(int x, int y)
{ int a, b
struct date d
getdate(&d)
b=d.da_year%100
a=(d.da_year-b)/100
timedate(x, y, a)
timedate(x+16, y, b)
outtextxy(x+32, y, "-")
timedate(x+40, y, d.da_mon)
outtextxy(x+56, y, "-")
timedate(x+64, y, d.da_day)
}
void inittim(int x, int y)
{
struct time t
gettime(&t)
timedate(x, y, t.ti_hour)
outtextxy(x+16, y, ":")
hour=t.ti_hour
timedate(x+24, y, t.ti_min)
outtextxy(x+40, y, ":")
minute=t.ti_min
if(t.ti_sec!=second){
timedate(x+48,y,t.ti_sec)
second=t.ti_sec
}
}
void tim(int x, int y)
{
struct time t
gettime(&t)
if(t.ti_hour!=hour){
timedate(x, y, t.ti_hour)
outtextxy(x+16, y, ":")
hour=t.ti_hour
}
if(t.ti_min!=minute){
timedate(x+24, y, t.ti_min)
outtextxy(x+40, y, ":")
minute=t.ti_min
}
if(t.ti_sec!=second){
timedate(x+48,y,t.ti_sec)
second=t.ti_sec
}
}
bww.c:
#include <stdio.h>
#include <graphics.h>
#include <stdlib.h>
#include <alloc.h>
#include <bios.h>
#define PLAYER1 1
#define PLAYER2 -1
#define WUQIZI0
#define QBLACK1
#define QWHITE -1
#define WUZIQI0
#define HEIBAIQI 1
#define MAXSTEP 5
int x, y
int mx, my, state
int qx, qy
int zx[230], zy[230]
int zcount
int step_now=0
int qipan[15][15]
int hpad[8][8]
int order
int hcount
int hqipan[61][8][8]
int x_now, y_now
int value[8][8]={
1024,-64,128,128,128,128,-64,1024,
-64,-256,1,1,1,1,-256,-64,
128,1,16,16,16,16,1,128,
128,1,16,1,1,16,1,128,
128,1,16,1,1,16,1,128,
128,1,16,16,16,16,1,128,
-64,-256,1,1,1,1,-256,-64,
1024,-64,128,128,128,128,-64,1024
}
void showmenu()
void helpmenu()
void filemenu()
void topic()
void about()
void anniu(int x0, int y0, int x1, int y1, int color1, int color2)
void wuziqi()
void heibaiqi()
void mind2cpu()
void init()
void draw(int type)
void copyqipan()
long hvalue(int pad[8][8], int turn)
int core_think(int my_self)
void hdisplay()
void display()
int copy_chess (int source[8][8],int dest[8][8])
int hpass(int my_self)
void hhuiqi(int type)
void control(int type)
int pass(int turn)
int xiazi(int xx, int yy, int type)
void judge()
void huiqi()
void hjudge()
int change(int cx,int cy, int playerorder, int a)
int try_xy(int x, int y, int chess[8][8], int my_self)
void win(int type, int winner)
void gameover()
main()
{
init()
sleep(1)
cleardevice()
InitMouse()
showmenu()
}
void showmenu(){
int n=1
setfillstyle(1,LIGHTGRAY)
bar(1,1,638,478)
setfillstyle(1,BLUE)
bar(6,5,633,20)
anniu(6,5,633,20,DARKGRAY,WHITE)
setcolor(WHITE)
outtextxy(9,9,"Black and White World")
anniu(1,1,638,478,WHITE,DARKGRAY)
setcolor(BLACK)
outtextxy(12,30,"Game")
outtextxy(65,30,"Help")
outtextxy(118,30,"Exit")
setcolor(DARKGRAY)
line(2, 44, 637, 44)
line(54, 23, 54, 41)
line(107, 23, 107, 41)
setcolor(WHITE)
line(2,45,637,45)
line(55,23,55,41)
line(108,23,108,41)
ShowCur()
anniu(7, 50, 633, 458, BLACK, WHITE)
anniu(445, 464, 535, 475, DARKGRAY, WHITE)
anniu(545, 464, 625, 475, DARKGRAY, WHITE)
showbmp(7,458,"border.bmp")
dat(450, 466)
inittim(550,466)
while(1){
tim(550, 466)
Status(&mx, &my, &state)
if(mx>=8 &&mx<=48 &&my>=25 &&my<=40){
if(state&1){
filemenu()
n=0
}
}
else if(mx>=61 &&mx<=101 &&my>=25 &&my<=40){
if(state&1 &&n){
helpmenu()
n=0
}
}
else if(mx>=114 &&mx<=154 &&my>=25 &&my<=40){
if(state&1){
HideCur()
anniu(114,25,154,40,DARKGRAY,WHITE)
delay(10000)
gameover()
}
}
else if(!n) {
HideCur()
anniu(8,25,48,40,LIGHTGRAY,LIGHTGRAY)
anniu(61,25,101,40,LIGHTGRAY,LIGHTGRAY)
ShowCur()
n=1
}
}
}
void helpmenu(){
void *bitmap
int i1=0,i2=0,size
HideCur()
anniu(61, 25, 101, 40, DARKGRAY, WHITE)
size=imagesize(61, 45, 150, 75)
bitmap=malloc(size)
getimage(61, 45, 150, 75, bitmap)
setfillstyle(1, LIGHTGRAY)
bar(62, 46, 149, 74)
anniu(62, 46, 149, 74, WHITE, DARKGRAY)
setcolor(BLACK)
outtextxy(68, 50, "Topics")
outtextxy(68, 64, "About...")
setcolor(DARKGRAY)
line(63, 59, 148, 59)
setcolor(WHITE)
line(63, 60, 148, 60)
ShowCur()
while(1){
tim(550, 466)
Status(&mx, &my, &state)
if(mx>=62 &&mx<=149 &&my>=46 &&my<=59 &&!i1){
i1=1i2=0
HideCur()
setfillstyle(1, BLUE)
bar(63, 47, 148, 58)
setcolor(YELLOW)
outtextxy(68, 50, "Topics")
setfillstyle(1, LIGHTGRAY)
bar(63, 61, 148, 73)
setcolor(BLACK)
outtextxy(68, 64, "About...")
ShowCur()
}
else if(mx>=62 &&mx<=149 &&my>=46 &&my<=59 &&i1 &&state&1){
delay(500)
topic()
}
else if(mx>=62 &&mx<=149 &&my>=60 &&my<=74 &&i2 &&state&1){
delay(500)
HideCur() putimage(61, 45, bitmap, COPY_PUT)
free(bitmap)
i1=0i2=0
ShowCur()
about()
break
}
else if(mx>=62 &&mx<=149 &&my>=60 &&my<=74 &&!i2){
i2=1i1=0
HideCur()
setfillstyle(1,LIGHTGRAY)
bar(63,47,148,58)
setcolor(BLACK)
outtextxy(68,50,"Topics")
setfillstyle(1,BLUE)
bar(63,61,148,73)
setcolor(YELLOW)
outtextxy(68,64,"About...")
ShowCur()
}
else if(mx<=62 ||mx>=149 ||my<=43 ||my>=75){
if(i1 || i2 || mx<=60 || mx>=102){
HideCur()
putimage(61,45,bitmap,COPY_PUT)
free(bitmap)
i1=0i2=0
ShowCur()
break
}
}
}
}
void filemenu()
{
void *bitmap
int i1=0,i2=0,size
HideCur()
anniu(8, 25, 48, 40, DARKGRAY, WHITE)
size=imagesize(8, 45, 97, 75)
bitmap=malloc(size)
getimage(8, 45, 97, 75, bitmap)
setfillstyle(1, LIGHTGRAY)
bar(9, 46, 96, 74)
anniu(9, 46, 96, 74, WHITE, DARKGRAY)
setcolor(BLACK)
outtextxy(15,50,"WuZiQi")
outtextxy(15,64,"HeiBaiQi")
setcolor(DARKGRAY)
line(10,59, 95,59)
setcolor(WHITE)
line(10,60,95,60)
ShowCur()
while(1){
tim(550,466)
Status(&mx, &my, &state)
if(mx>=9 &&mx<=96 &&my>=46 &&my<=59 &&!i1){
i1=1i2=0
HideCur()
setfillstyle(1,BLUE)
bar(10,47,95,58)
setcolor(YELLOW)
outtextxy(15,50,"WuZiQi")
setfillstyle(1,LIGHTGRAY)
bar(10,61,95,73)
setcolor(BLACK)
outtextxy(15,64,"HeiBaiQi")
ShowCur()
}
else if(mx>=9 &&mx<=96 &&my>=60 &&my<=74 &&!i2){
i2=1i1=0
HideCur()
setfillstyle(1,LIGHTGRAY)
bar(10,47,95,58)
setcolor(BLACK)
outtextxy(15,50,"WuZiQi")
setfillstyle(1,BLUE)
bar(10,61,95,73)
setcolor(YELLOW)
outtextxy(15,64,"HeiBaiQi")
ShowCur()
}
else if(mx>=9 &&mx<=96 &&my>=46 &&my<=59 &&i1 &&state&1){
delay(500)
HideCur()
putimage(8, 45, bitmap, COPY_PUT)
free(bitmap)
i1=0i2=0
anniu(8, 25, 48, 40, LIGHTGRAY, LIGHTGRAY)
wuziqi()
}
else if(mx>=9 &&mx<=96 &&my>=60 &&my<=74 &&i2 &&state&1){
delay(500)
HideCur()
putimage(8, 45, bitmap, COPY_PUT)
free(bitmap)
i1=0i2=0
anniu(8, 25, 48, 40, LIGHTGRAY, LIGHTGRAY)
heibaiqi()
}
else if(mx<=9 ||mx>=96 ||my<=43 ||my>=75){
if(i1 || i2 || mx<=7 || mx>=49){
HideCur()
putimage(8,45,bitmap,COPY_PUT)
free(bitmap)
i1=0i2=0
ShowCur()
break
}
}
}
}
void topic()
{
showbmp(0,478,"topic.bmp")
ShowCur()
while(1){
Status(&mx, &my, &state)
if(state&1){
HideCur()
closegraph()
init()
cleardevice()
InitMouse()
showmenu()
}
}
}
void about()
{
int i=1
showbmp(175,320,"about.bmp")
ShowCur()
while(i){
Status(&mx, &my, &state)
tim(550,466)
if(state&1){
HideCur()
showbmp(7,458,"border.bmp")
ShowCur()
break
}
}
return
}
void anniu(int x0, int y0, int x1, int y1, int color1, int color2)
{
setcolor(color1)
line(x0-1, y0-1, x1+1, y0-1)
line(x0-1, y0-1, x0-1, y1+1)
setcolor(color2)
line(x1+1, y1+1, x1+1, y0-1)
line(x1+1, y1+1, x0-1, y1+1)
}
void wuziqi()
{
register int i, j
zcount=0
for (i=0i<=300i++){
zx[i]=0
zy[i]=0
}
for (i=0i<=14i++)
for (j=0j<=14j++)
qipan[i][j]=0
draw(WUZIQI)
control(WUZIQI)
}
void heibaiqi()
{
int i, j
for (i=0i<=8i++)
for (j=0j<=8j++)
hpad[i][j]=0
setfillstyle(1,LIGHTGRAY)
bar(210,190,430,310)
anniu(210,190,430,310,WHITE,DARKGRAY)
anniu(209,189,431,311,BLACK,BLACK)
anniu(220,205,310,295,WHITE,DARKGRAY)
anniu(330,205,420,295,WHITE,DARKGRAY)
setcolor(BLACK)
rectangle(218,203,312,297)
rectangle(328,203,422,297)
settextstyle(0, HORIZ_DIR, 2)
outtextxy(250,220,"1P")
outtextxy(250,265,"2P")
outtextxy(363,220,"1P")
outtextxy(355,265,"CPU")
settextstyle(0, HORIZ_DIR, 1)
outtextxy(257,245,"vs")
outtextxy(370,245,"vs")
ShowCur()
while(1){
tim(550,466)
Status(&mx, &my, &state)
if(mx>=220 &&mx<=310 &&my>=205 &&my<=295 &&state&1){
HideCur()
anniu(220,205,310,295,DARKGRAY,DARKGRAY)
delay(10000)
draw(HEIBAIQI)
ShowCur()
control(HEIBAIQI)
}
else if(mx>=330 &&mx<=420 &&my>=205 &&my<=295 &&state&1){
HideCur()
anniu(330,205,420,295,DARKGRAY,DARKGRAY)
delay(10000)
draw(HEIBAIQI)
ShowCur()
mind2cpu()
}
}
}
void mind2cpu()
{
int type, i, k, x ,y
hcount=0
copyqipan()
while(1){
tim(550,466)
Status(&mx, &my, &state)
qx=(mx-160)/40
qy=(my-93)/40
if(mx>=30 &&mx<=80 &&my>=240 &&my<=255 &&state&1){
setlinestyle(SOLID_LINE, 0, 1)
anniu(30, 240, 80, 255, DARKGRAY,WHITE)
delay(7000)
HideCur()
showmenu()
}
if (state&2 &&hcount>=1){
HideCur()
hhuiqi(0)
ShowCur()
delay(10000)
}
if (mx<=480 &&mx>=160 &&my<=413 &&my>=93 &&hpad[qx][qy]==WUQIZI &&state&1){
k=change(qx,qy,PLAYER1,0)
if(k){
order=PLAYER1
HideCur()
xiazi(qx,qy,HEIBAIQI)
change(qx,qy,PLAYER1,1)
hcount++
copyqipan()
hjudge()
ShowCur()
i=pass(PLAYER2)
if(i) {
delay(8000)
continue
}
do{
core_think(PLAYER2)
HideCur()
hdisplay()
hcount++
copyqipan()
ShowCur()
hjudge()
i=pass(PLAYER1)
}while(i)
} }
}
}
void init()
{
int Graphdriver = DETECT, Graphmode, Errorcode
/*registerbgidriver(EGAVGA_driver) */
initgraph(&Graphdriver, &Graphmode, "")
Errorcode=graphresult()
if (Errorcode!=0){
printf("Graphics system error:%s\n", grapherrormsg(Errorcode))
exit(1)
}
else return
}
void draw(int type)
{
int i, j, step
int size
if (type==WUZIQI) step=25
else step=40
setfillstyle(1, BROWN)
setcolor(CYAN)
bar(120, 53, 520, 453)
setlinestyle(0,0,1)
anniu(120,53,520,453,WHITE,0)
setcolor(BLACK)
rectangle(118,51,522,455)
setfillstyle(1,BLUE)
bar(7,50,117,458)
bar(523,50,633,458)
setfillstyle(1,LIGHTGRAY)
bar(30,240,80,255)
setlinestyle(SOLID_LINE, 0, 1)
anniu(30,240,80,255,WHITE,DARKGRAY)
setcolor(BLACK)
rectangle(28, 238, 82, 257)
setcolor(BLACK)
outtextxy(40,245,"QUIT")
setlinestyle(SOLID_LINE, 0, THICK_WIDTH)
setcolor(BLACK)
line(120+step, 53+step, 120+step, 453-step)
line(120+step, 53+step, 520-step, 53+step)
line(520-step, 453-step, 120+step, 453-step)
line(520-step, 53+step, 520-step, 453-step)
setlinestyle(SOLID_LINE, 0, NORM_WIDTH)
setcolor(BLACK)
for (i=120+2*step,j=53+2*stepi<=520-2*stepi+=step,j+=step){
line(i, 53+step, i, 453-step)
line(120+step, j, 520-step, j)
}
if (type==HEIBAIQI){
order=PLAYER1
xiazi(3, 3, HEIBAIQI)
xiazi(4, 4, HEIBAIQI)
order=PLAYER2
xiazi(3, 4, HEIBAIQI)
xiazi(4, 3, HEIBAIQI)
setlinestyle(SOLID_LINE, 0, THICK_WIDTH)
setcolor(LIGHTGREEN)
line(535, 130, 620, 130)
line(535, 210, 620, 210)
line(535, 290, 620, 290)
line(536, 130, 536, 290)
line(619, 130, 619, 290)
setlinestyle(SOLID_LINE, 0, NORM_WIDTH)
line(535, 240, 620, 240)
line(535, 160, 620, 160)
settextstyle(TRIPLEX_FONT,HORIZ_DIR,3)
outtextxy(542, 133, "BLACK")
outtextxy(542, 213, "WHITE")
settextstyle(TRIPLEX_FONT, HORIZ_DIR, 5)
setcolor(LIGHTMAGENTA)
outtextxy(555, 162, "02")
outtextxy(555, 242, "02")
}
return
}
void copyqipan()
{
register int i, j
for(i=0i<=7i++)
for(j=0j<=7j++)
hqipan[hcount][i][j]=hpad[i][j]
return
}
long hvalue(int pad[8][8], int turn)
{
register int i, j
long valueit=0
for(i=0i<=7i++)
for(j=0j<=7j++){
if(pad[x][y]==turn){
valueit+=value[i][j]
}
else if(pad[x][y]==-turn){
valueit-=value[i][j]
}
}
return valueit
}
int core_think(int my_self)
{ int chess_bak[8][8],oponent=-my_self
int tempscore
int value_temp,value_best=-30000
//我这有个源代码,不过是VC++的。你对照API就可以修改的。//Microsoft Developer Studio generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
///////////////////////////////////////////////////颤信//////////////茄雹轮////////////
// Chinese (P.R.C.) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
#ifdef _WIN32
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
#pragma code_page(936)
#endif //_WIN32
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE DISCARDABLE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE DISCARDABLE
BEGIN
"#include ""afxres.h""\r\n"
"\0"
END
3 TEXTINCLUDE DISCARDABLE
BEGIN
"#define _AFX_NO_SPLITTER_RESOURCES\r\n"
"#define _AFX_NO_OLE_RESOURCES\r\n"
"#define _AFX_NO_TRACKER_RESOURCES\r\n"
"#define _AFX_NO_PROPERTY_RESOURCES\r\n"
"\r\n"
"#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)\r\n"
"#ifdef _WIN32\r\n"
"LANGUAGE 4, 2\r\n"
"#pragma code_page(936)\r\n"
"#endif //_WIN32\r\n"
"#include ""res\\bw.rc2"" // non-Microsoft Visual C++ edited resources\r\n"
"#include ""l.chs\\afxres.rc"" // Standard components\r\n"
"#include ""l.chs\\afxprint.rc""// printing/print preview resources\r\n"
"#endif\r\n"
"\0"
END
#endif// APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDR_MAINFRAME ICONDISCARDABLE "res\\bw.ico"
IDR_BWTYPE ICONDISCARDABLE "res\\bwDoc.ico"
/////////////////////////////////////////////////////////////////////////////
//
// Bitmap
//
IDR_MAINFRAME BITMAP MOVEABLE PURE "res\\Toolbar.bmp"
IDB_BOARD BITMAP DISCARDABLE "res\\board1.bmp"
IDB_EMPTY BITMAP DISCARDABLE "res\\empty.bmp"
IDB_WHITE BITMAP DISCARDABLE "res\\肆滚white.bmp"
IDB_BLACK BITMAP DISCARDABLE "res\\black.bmp"
IDB_LASTBITMAP DISCARDABLE "res\\bitmap1.bmp"
/////////////////////////////////////////////////////////////////////////////
//
// Toolbar
//
IDR_MAINFRAME TOOLBAR DISCARDABLE 16, 16
BEGIN
BUTTON ID_BLACK
BUTTON ID_WHITE
BUTTON ID_REG
SEPARATOR
BUTTON ID_ONE
BUTTON ID_TWO
BUTTON ID_THREE
SEPARATOR
BUTTON ID_APP_ABOUT
END
/////////////////////////////////////////////////////////////////////////////
//
// Menu
//
IDR_MAINFRAME MENU PRELOAD DISCARDABLE
BEGIN
POPUP "棋局(&F)"
BEGIN
MENUITEM "执黑先手(&B)\tCtrl+B",ID_BLACK
MENUITEM "执白后手(&W)\tCtrl+W",ID_WHITE
MENUITEM "悔棋(&S)\tCtrl+S",ID_REG
MENUITEM SEPARATOR
MENUITEM "退出(&X)",ID_APP_EXIT
END
POPUP "选项(&O)"
BEGIN
MENUITEM "低难度", ID_ONE
MENUITEM "中难度", ID_TWO
MENUITEM "高难度", ID_THREE
END
POPUP "查看(&V)"
BEGIN
MENUITEM "工具栏(&T)", ID_VIEW_TOOLBAR
MENUITEM "状态栏(&S)", ID_VIEW_STATUS_BAR
END
POPUP "帮助(&H)"
BEGIN
MENUITEM "关于 黑白棋(&A)...", ID_APP_ABOUT
END
END
/////////////////////////////////////////////////////////////////////////////
//
// Accelerator
//
IDR_MAINFRAME ACCELERATORS PRELOAD MOVEABLE PURE
BEGIN
"N",ID_FILE_NEW,VIRTKEY, CONTROL
"O",ID_FILE_OPEN, VIRTKEY, CONTROL
"S",ID_FILE_SAVE, VIRTKEY, CONTROL
"P",ID_FILE_PRINT, VIRTKEY, CONTROL
"Z",ID_EDIT_UNDO, VIRTKEY, CONTROL
"X",ID_EDIT_CUT,VIRTKEY, CONTROL
"C",ID_EDIT_COPY, VIRTKEY, CONTROL
"V",ID_EDIT_PASTE, VIRTKEY, CONTROL
VK_BACK,ID_EDIT_UNDO, VIRTKEY, ALT
VK_DELETE, ID_EDIT_CUT,VIRTKEY, SHIFT
VK_INSERT, ID_EDIT_COPY, VIRTKEY, CONTROL
VK_INSERT, ID_EDIT_PASTE, VIRTKEY, SHIFT
VK_F6, ID_NEXT_PANE, VIRTKEY
VK_F6, ID_PREV_PANE, VIRTKEY, SHIFT
END
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_ABOUTBOX DIALOG DISCARDABLE 0, 0, 223, 49
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "关于 黑白棋"
FONT 9, "宋体"
BEGIN
ICONIDR_MAINFRAME,IDC_STATIC,11,17,21,21
LTEXT "黑白棋 ",IDC_STATIC,38,14,119,8,SS_NOPREFIX
LTEXT "版权所有 (C) 2002",IDC_STATIC,40,28,119,8
DEFPUSHBUTTON "确定",IDOK,166,7,50,14,WS_GROUP
END
#ifndef _MAC
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,1
PRODUCTVERSION 1,0,0,1
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "080404b0"
BEGIN
VALUE "Comments", "\0"
VALUE "CompanyName", "\0"
VALUE "FileDescription", "bw Microsoft 基础类应用程序\0"
VALUE "FileVersion", "1, 0, 0, 1\0"
VALUE "InternalName", "bw\0"
VALUE "LegalCopyright", "版权所有 (C) 2001\0"
VALUE "LegalTrademarks", "\0"
VALUE "OriginalFilename", "bw.EXE\0"
VALUE "PrivateBuild", "\0"
VALUE "ProductName", "bw 应用程序\0"
VALUE "ProductVersion", "1, 0, 0, 1\0"
VALUE "SpecialBuild", "\0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x804, 1200
END
END
#endif// !_MAC
/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//
#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO DISCARDABLE
BEGIN
IDD_ABOUTBOX, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 216
TOPMARGIN, 7
BOTTOMMARGIN, 42
END
END
#endif// APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// String Table
//
STRINGTABLE PRELOAD DISCARDABLE
BEGIN
IDR_MAINFRAME "黑白棋程序\n\nBw\n\n\nBw.Document\nBw Document"
END
STRINGTABLE PRELOAD DISCARDABLE
BEGIN
AFX_IDS_APP_TITLE " "
AFX_IDS_IDLEMESSAGE "就绪"
END
STRINGTABLE DISCARDABLE
BEGIN
ID_INDICATOR_EXT"扩展名"
ID_INDICATOR_CAPS "大写"
ID_INDICATOR_NUM"数字"
ID_INDICATOR_SCRL "滚动"
ID_INDICATOR_OVR"改写"
ID_INDICATOR_REC"记录"
END
STRINGTABLE DISCARDABLE
BEGIN
ID_FILE_NEW " "
ID_FILE_OPEN" "
ID_FILE_CLOSE " "
ID_FILE_SAVE_AS " "
ID_FILE_PAGE_SETUP "改变打印选项\n页面设置"
ID_FILE_PRINT_SETUP "改变打印机及打印选项\n打印设置"
ID_FILE_PRINT "打印活动文档\n打印"
ID_FILE_PRINT_PREVIEW "显示整页\n打印预览"
END
STRINGTABLE DISCARDABLE
BEGIN
ID_APP_ABOUT"显示程序信息,版本号和版权\n关于"
ID_APP_EXIT "退出应用程序;提示保存文档\n退出"
END
STRINGTABLE DISCARDABLE
BEGIN
ID_FILE_MRU_FILE1 "打开该文档"
ID_FILE_MRU_FILE2 "打开该文档"
ID_FILE_MRU_FILE3 "打开该文档"
ID_FILE_MRU_FILE4 "打开该文档"
ID_FILE_MRU_FILE5 "打开该文档"
ID_FILE_MRU_FILE6 "打开该文档"
ID_FILE_MRU_FILE7 "打开该文档"
ID_FILE_MRU_FILE8 "打开该文档"
ID_FILE_MRU_FILE9 "打开该文档"
ID_FILE_MRU_FILE10 "打开该文档"
ID_FILE_MRU_FILE11 "打开该文档"
ID_FILE_MRU_FILE12 "打开该文档"
ID_FILE_MRU_FILE13 "打开该文档"
ID_FILE_MRU_FILE14 "打开该文档"
ID_FILE_MRU_FILE15 "打开该文档"
ID_FILE_MRU_FILE16 "打开该文档"
END
STRINGTABLE DISCARDABLE
BEGIN
ID_NEXT_PANE"切换到下一个窗格\n下一窗格"
ID_PREV_PANE"切换回前一个窗格\n前一窗格"
END
STRINGTABLE DISCARDABLE
BEGIN
ID_WINDOW_SPLIT "将活动的窗口分隔成窗格\n分隔"
END
STRINGTABLE DISCARDABLE
BEGIN
ID_EDIT_CLEAR "删除被选对象\n删除"
ID_EDIT_CLEAR_ALL "全部删除\n全部删除"
ID_EDIT_COPY" "
ID_EDIT_CUT " "
ID_EDIT_FIND"查找指定的正文\n查找"
ID_EDIT_PASTE " "
ID_EDIT_REPEAT "重复上一步 *** 作\n重复"
ID_EDIT_REPLACE "用不同的正文替换指定的正文\n替换"
ID_EDIT_SELECT_ALL "选择整个文档\n选择全部"
ID_EDIT_UNDO"撤消最后一步 *** 作\n撤消"
ID_EDIT_REDO"重新执行先前已撤消的 *** 作\n重新执行"
END
STRINGTABLE DISCARDABLE
BEGIN
ID_VIEW_TOOLBAR "显示或隐藏工具栏\n显隐工具栏"
ID_VIEW_STATUS_BAR "显示或隐藏状态栏\n显隐状态栏"
END
STRINGTABLE DISCARDABLE
BEGIN
AFX_IDS_SCSIZE "改变窗口大小"
AFX_IDS_SCMOVE "改变窗口位置"
AFX_IDS_SCMINIMIZE "将窗口缩小成图标"
AFX_IDS_SCMAXIMIZE "把窗口放大到最大尺寸"
AFX_IDS_SCNEXTWINDOW"切换到下一个文档窗口"
AFX_IDS_SCPREVWINDOW"切换到先前的文档窗口"
AFX_IDS_SCCLOSE "关闭活动的窗口并提示保存所有文档"
END
STRINGTABLE DISCARDABLE
BEGIN
AFX_IDS_SCRESTORE "把窗口恢复到正常大小"
AFX_IDS_SCTASKLIST "激活任务表"
END
STRINGTABLE DISCARDABLE
BEGIN
AFX_IDS_PREVIEW_CLOSE "关闭打印预览模式\n取消预阅"
END
STRINGTABLE DISCARDABLE
BEGIN
ID_WHITE"执白后手"
ID_BLACK"执黑先手"
ID_REG "悔棋"
ID_ONE "低难度"
ID_THREE"高难度"
ID_TWO "中难度"
END
#endif// Chinese (P.R.C.) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#define _AFX_NO_SPLITTER_RESOURCES
#define _AFX_NO_OLE_RESOURCES
#define _AFX_NO_TRACKER_RESOURCES
#define _AFX_NO_PROPERTY_RESOURCES
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
#ifdef _WIN32
LANGUAGE 4, 2
#pragma code_page(936)
#endif //_WIN32
#include "res\bw.rc2" // non-Microsoft Visual C++ edited resources
#include "l.chs\afxres.rc" // Standard components
#include "l.chs\afxprint.rc"// printing/print preview resources
#endif
/////////////////////////////////////////////////////////////////////////////
#endif// not APSTUDIO_INVOKED
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)