VC++黑白棋

VC++黑白棋,第1张

本程序提供纳汪者五子棋、黑白棋双人对下的环境,以及黑白棋人机对下的功能。其界面模仿windows, *** 作简便,所有 *** 作都通过鼠标完成。

进入程序后,从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


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存