在linux下ubuntu的五子棋游戏c语言代码Word格式文档下载.docx
- 文档编号:19269319
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:23
- 大小:17.99KB
在linux下ubuntu的五子棋游戏c语言代码Word格式文档下载.docx
《在linux下ubuntu的五子棋游戏c语言代码Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《在linux下ubuntu的五子棋游戏c语言代码Word格式文档下载.docx(23页珍藏版)》请在冰豆网上搜索。
inth;
intbpp;
int*mem;
}fb;
staticu32_tcursor_pixel[C_H][C_W]=
{
{BORD,T___,T___,T___,T___,T___,T___,T___,T___,T___},
{BORD,BORD,T___,T___,T___,T___,T___,T___,T___,T___},
{BORD,X___,BORD,T___,T___,T___,T___,T___,T___,T___},
{BORD,X___,X___,BORD,T___,T___,T___,T___,T___,T___},
{BORD,X___,X___,X___,BORD,T___,T___,T___,T___,T___},
{BORD,X___,X___,X___,X___,BORD,T___,T___,T___,T___},
{BORD,X___,X___,X___,X___,X___,BORD,T___,T___,T___},
{BORD,X___,X___,X___,X___,X___,X___,BORD,T___,T___},
{BORD,X___,X___,X___,X___,X___,X___,X___,BORD,T___},
{BORD,X___,X___,X___,X___,X___,X___,X___,X___,BORD},
{BORD,X___,X___,X___,X___,X___,BORD,BORD,BORD,BORD},
{BORD,X___,X___,BORD,X___,X___,BORD,T___,T___,T___},
{BORD,X___,BORD,T___,BORD,X___,X___,BORD,T___,T___},
{BORD,BORD,T___,T___,BORD,X___,X___,BORD,T___,T___},
{T___,T___,T___,T___,T___,BORD,X___,X___,BORD,T___},
{T___,T___,T___,T___,T___,T___,BORD,BORD,T___,T___}
};
intfb_open()
intfd;
int*mem;
fd=open("
/dev/fb0"
O_RDWR);
if(fd<
0)
{
printf("
openfileerror!
\n"
);
return1;
}
structfb_var_screeninfofb_var;
ioctl(fd,FBIOGET_VSCREENINFO,&
fb_var);
fb.w=fb_var.xres;
fb.h=fb_var.yres;
fb.bpp=fb_var.bits_per_pixel;
w:
%dh:
%dbpp:
%d\n"
fb_var.xres,fb_var.yres,fb_var.bits_per_pixel);
fb.mem=mmap(NULL,FB_H*FB_W*fb_var.bits_per_pixel/8,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
//printf("
mem);
return0;
}
voidfb_pixel(intx,inty,intcolor)
*(fb.mem+y*FB_W+x)=color;
voidfb_drawline(intx0,intx1,inty,intcolor)
inti;
for(i=x0;
i<
x1;
i++)
fb_pixel(i,y,color);
voidfb_drawretangle(intx0,inty0,intx1,inty1,intcolor)
inti,j;
for(i=x0;
for(j=y0;
j<
y1;
j++)
fb_pixel(i,j,color);
voidfb_drawline2(intx,inty0,inty1,intcolor)
for(i=y0;
fb_pixel(x,i,color);
voidfb_drawcycle(intx,inty,intr,intcolor)
inti,j;
for(i=-r;
r;
for(j=-r;
if(i*i+j*j<
=r*r)
fb_pixel(i+x,j+y,color);
intget_mouse_info(intfd,char*buf)
intn;
n=read(fd,buf,8);
returnn;
intsave_cursor(intx,inty)
for(i=0;
i<
C_H;
for(j=0;
C_W;
cursor_store[i][j]=*(fb.mem+j+x+(i+y)*FB_W);
return0;
intrestore_cursor(intx,inty)
for(i=0;
C_H;
for(j=0;
j<
C_W;
*(fb.mem+j+x+(i+y)*FB_W)=cursor_store[i][j];
voiddrawmouse(intx,inty)
if(cursor_pixel[i][j]!
=T___)
fb_pixel(x+j,y+i,cursor_pixel[i][j]);
kdjfk%d\n"
cursor_pixel[i][j]);
intprintboard()
fb_drawretangle(X_OFFSET-SPACE,Y_OFFSET-SPACE,X_OFFSET+SPACE*Y_CAPASITY,Y_OFFSET+SPACE*X_CAPASITY,BLUE);
Y_CAPASITY;
fb_drawline(X_OFFSET,X_OFFSET+SPACE*(Y_CAPASITY-1),i*SPACE+Y_OFFSET,RED);
X_CAPASITY;
fb_drawline2(i*SPACE+X_OFFSET,Y_OFFSET,Y_OFFSET+SPACE*(X_CAPASITY-1),RED);
voidprintqizi(introw,intcol,intcolor)
intx,y;
x=X_OFFSET+SPACE*col;
y=Y_OFFSET+SPACE*row;
fb_drawcycle(x,y,RADIO,color);
structnode_t{
intx;
inty;
intz;
//printthechessboard
voidprint(intboard[CHESSBOARD1][CHESSBOARD2])
inti,j;
"
for(j=0;
j<
CHESSBOARD2;
j++)
%d"
j);
-"
for(i=0;
i<
CHESSBOARD1;
i++){
%d|"
i);
j++){
%d"
board[i][j]);
printf("
//鍒濆鍖栨鐩?
voidinit(intmap[CHESSBOARD1][CHESSBOARD2])
for(i=0;
CHESSBOARD1;
for(j=0;
CHESSBOARD2;
map[i][j]=0;
voidinit2(intmap[CHESSBOARD1][CHESSBOARD2][4])
inti,j,k;
for(k=0;
k<
4;
k++)
map[i][j][k]=0;
voidinit3(intmap[CHESSBOARD1][CHESSBOARD2][1])
inti,j;
map[i][j][1]=0;
intdetection(intmap[CHESSBOARD1][CHESSBOARD2][4],intx,inty,intplayer)
inti,j,k,nx,ny,counter=0;
intdirx[4]={0,1,1,1};
intdiry[4]={1,0,1,-1};
if(board[x][y])
for(i=0;
nx=x;
ny=y;
while(board[nx+=dirx[i]][ny+=diry[i]]==player)
counter++;
nx=x;
ny=y;
while(board[nx-=dirx[i]][ny-=diry[i]]==player)
switch(counter)
case0:
map[x][y][i]=0;
break;
case1:
map[x][y][i]=5;
case2:
map[x][y][i]=10;
case3:
map[x][y][i]=15;
case4:
map[x][y][i]=20;
}
%d,%d,%d"
x,y,map[x][y][i]);
counter=0;
intget_max(intmap[CHESSBOARD1][CHESSBOARD2][4])
inti,j,k;
intmax=0;
for(k=0;
if(map[i][j][k]>
max)
max=map[i][j][k];
returnmax;
structnode_tget_max2(intmap[CHESSBOARD1][CHESSBOARD2][4])
structnode_tp;
intmax=0,cur;
for(k=0;
cur=map[i][j][k];
if(cur>
max=cur;
p.x=i;
p.y=j;
p.z=k;
returnp;
structnode_tget_max3(intmap[CHESSBOARD1][CHESSBOARD2][4])
=max)
structnode_tget_max4(intmap[CHESSBOARD1][CHESSBOARD2][1])
cur=map[i][j][1];
p.z=1;
//鏌ョ湅鍧愭爣xy鏄惁鑳借蛋
intif_done(intx,inty)
if(x>
=CHESSBOARD1||x<
0)
if(y>
=CHESSBOARD2||y<
return1;
voidcomputer()
init2(play1);
init2(com);
detection(play1,i,j,1);
detection(com,i,j,2);
//鏌ョ湅妫嬬洏鐨勬瀛愭儏鍐垫湁鍑犱釜杩炰竴璧?
intcheck(intx,inty,intboard[CHESSBOARD1][CHESSBOARD2])
inti=0,j=0,nextx,nexty;
intcounter=1;
intplayer;
intdirectionx[4]={0,1,1,1};
intdirectiony[4]={1,0,1,-1};
player=board[x][y];
if(player==0)
nextx=x;
nexty=y;
counter=1;
for(j=1;
5;
nextx+=directionx[i];
nexty+=directiony[i];
if(board[nextx][nexty]==player)
if(counter==5)
voiddrawbg(introw,intcol)
fb_drawcycle(x,y,RADIO,BLUE);
fb_drawline(x-RADIO,x+RADIO,y,RED);
fb_drawline2(x,y-RADIO,y+RADIO,RED);
intif_gameover(intboard[CHESSBOARD1][CHESSBOARD2])
if(check(i,j,board))
voidmouse_doing()
intfd,step=1;
introw,col,flag1=1;
intmax1,max2;
charbuf[8];
intmx,my,a,b,c,d,e;
mx=FB_W/2-100;
my=FB_H/2;
//drawmouse(mx,my);
fd=open("
/dev/input/mice"
O_RDWR|O_NONBLOCK);
if(fd<
openmouseerror!
save_cursor(mx,my);
drawmouse(mx,my);
while(flag1)
if(read(fd,buf,8)>
e=(buf[0]&
0x07);
c=2*buf[1];
d=2*buf[2];
if(e==NOKEY)
restore_cursor(mx,my);
mx+=c;
my-=d;
if(mx>
=FB_W-17)
mx=FB_W-17;
if(mx<
mx=0;
if(my>
FB_H-17)
my=FB_H-17;
if(my<
my=0;
save_cursor(mx,my);
drawmouse(mx,my);
}
elseif(e==1)
if(step%2==1)
//printf("
play1done!
col=(int)(mx-X_OFFSET+SPACE/2)/SPACE;
row=(int)(my-Y_OFFSET+SPACE/2)/SPACE;
if(!
(if_done(row,col))||board[row][col])
{
//printf("
youcan'
tdonehere!
col=(int)(mx-X_OFFSET)/SPACE;
row=(int)(my-Y_OFFSET)/SPACE;
continue;
board[row][col]=1;
restore_cursor(mx,my);
printqizi(row,col,BLACK);
//鐢婚粦鑹茬殑妫嬪瓙
save_cursor(mx,my);
array[row][col][1]=step;
step++;
computer();
//鏇存柊浼樺厛绾ц〃
flag2%d\n"
flag2);
//flag2=1;
else{
play2done!
max1=get_max(play1);
max2=get_max(com);
if(max1>
=max2)
p=get_max2(play1);
else{
p=get_max2(com);
row=p.x;
col=p.y;
if(!
{
//printf("
max1=get_max(play1);
max2=get_max(com);
if(max1>
p=get_max3(play1);
}
else{
p=get_max3(com);
row=p.x;
col=p.y;
continue;
board[row][col]=2;
computer(boar
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- linux ubuntu 五子棋 游戏 语言 代码