| 221.234.222.* |
1楼 小弟不才,急需此程序来交差. 程序是这样实现的,在一条线上,只有三粒籽是相邻的情况下,若有两粒相邻且相同颜色的棋子,第三籽就被吃丢,否则,换色走棋.若一方棋子数为一后,在一条线上的相邻的三粒籽,在中间的棋颜色与相邻棋子颜色不同,则相同颜色的棋子被吃丢. 下面是此程序的代码(我未能将它运行成功,望哪位朋友给予帮助,谢谢!): #include "graphics.h" /*图形系统头文件*/ #include<stdlib.h> #include<dos.h> #define LEFT 0x4b00 /*光标左键值*/ #define S 0x1f73 #define RIGHT 0x4d00 /*光标右键值*/ #define F 0x2166 #define DOWN 0x5000 /*光标下键值*/ #define D 0x2064 #define UP 0x4800 /*光标上键值*/ #define E 0x1265 #define ESC 0x011b /* ESC键值*/ #define ENTER 0x1c0d /* 回车键值*/ #define SPACE 0x3920 int key,a[4][4]={0},m=6,n=6,x,y; void DrawkQP(void); void QPchang(int x,int y,int t); void noplay(int x,int y,int t); void Mcolor(int x,int y); void playtoplay(); void playwin(int m,int n); void choosezi(int xx,int yy); void Rrectangle(int x,int y,int t); void Rfillellipse(int x,int y,int t); /******主函数*********/ void main(void) { int gd=DETECT,gr; initgraph(&gd,&gr,"e:\\turboc2"); /*初始化图形系统*/ DrawkQP();/*画棋盘*/ playtoplay();/*人人对战*/ getch(); closegraph();/*关闭图形系统*/ } /*画图*/ void DrawkQP(void) { int i,j; setbkcolor(BLUE); for(i=150;i<=300;i+=50) { line(i,150,i,300); line(150,i,300,i); } Rfillellipse(340,175,1); Rfillellipse(340,225,2); a[0][0]=a[0][1]=a[0][2]=a[0][3]=a[1][0]=a[1][3]=1; a[2][0]=a[2][3]=a[3][0]=a[3][1]=a[3][2]=a[3][3]=2; for(i=150;i<=300;i+=50) Rfillellipse(i,150,1); Rfillellipse(200,150,1); Rfillellipse(200,300,1); for(j=150;j<=300;j+=50) Rfillellipse(j,300,2); Rfillellipse(150,250,2); Rfillellipse(300,250,2); } void playtoplay(void) { int xx,yy,i,j,t; while(1) { xx=100; yy=100; while(1) { Rrectangle(xx,yy,RED); key=bioskey(0); if(key==ESC) break; else if(key==ENTER) { choosezi(xx,yy); if(a[(x-150)/50][(y-150)/50]==1) t=1; if(a[(x-150)/50][(y-150)/50]==2) t=2;} noplay(x,y,t); QPchang(m,n,t); } t=t%2+1; break; } } void noplay(int x,int y,int t) { int i,j; i=(x-150)/50; j=(y-150)/50; if(key==RIGHT||key==F&&a[i+1][j]==0) { a[i][j]=0; Rfillellipse(x,y,BLUE); Mcolor(x,y,t); x+=50; Rfillellipse(x,y,t); } else if(key==DOWN||key==D&&a[i][j+1]==0) { a[i][j]=0; Rfillellipse(x,y,BLUE); Mcolor(x,y,t); y+=50; Rfillellipse(x,y,t); } else if(key==LEFT||key==S&&a[i-1][j]==0) { a[i][j]=0; Rfillellipse(x,y,BLUE); Mcolor(x,y,t); x-=50; Rfilleillpse(x,y,t); } else if(key==UP||key==E&&a[i][j-1]==0) { a[i][j]=0; Rfillellipse(x,y,BLUE); Mcolor(x,y,t); y-=50; Rfillellipse(x,y,t); } } void QPchang(int m,int n,int t) { int i; for(i=0;i<4;i++) { if(a[i][0]==0) { if(a[i][1]==a[i][2]!=a[i][3]&&a[i][3]!=0) |
|
|
- 共有10篇贴子
| 221.234.222.* |
2楼 if(a[i][3]==2) n-=1; a[i][3]=0; x=i*50+150; y=3*50+150; Rfillellipse(x,y,t); Mcolor(x,y,t); } else break; } else if(a[0][i]==0) {if(a[1][i]==a[2][i]!=a[3][i]&&a[3][i]!=0) { if(a[3][i]==1) m-=1; if(a[3][i]==2) n-=1; a[3][i]=0; x=3*50+150; y=i*50+150; Rfillellipse(x,y,t); Mcolor(x,y,t); } else break; } else if(a[3][i]==0) {if(a[0][i]==a[1][i]!=a[2][i]&&a[2][i]!=0) { if(a[2][i]==1) m-=1; if(a[2][i]==2) n-=1; a[2][i]=0; x=2*50+150; y=i*50+150; Rfillellipse(x,y,t); Mcolor(x,y,t); } else break; } else if(a[i][3]==0) {if(a[i][0]==a[i][1]!=a[i][2]&&a[i][2]!=0) { if(a[i][2]==1) m-=1; if(a[i][2]==2) n-=1; a[i][2]=0; x=i*50+150; y=2*50+150; Rfillellipse(x,y,t); Mcolor(x,y,t); } else break; } if(m==1||n==1) { choosezi(100,100); noplay(x,y,t); for(i=0;i<4;i++) { if(a[i][0]==0) { if(a[i][1]==a[i][3]!=a[i][2]&&a[i][2]!=0) { if(a[i][2]==1) n-=2; if(a[i][2]==2) m-=2; a[i][1]=a[i][3]=0; x=i*50+150; y=3*50+150; Rfillellipse(x,y,t); Mcolor(x,y,t); y=1*50+150; Rfillellipse(x,y,t); Mcolor(x,y,t); } else break; } else if(a[0][i]==0) {if(a[1][i]==a[3][i]!=a[2][i]&&a[2][i]!=0) { if(a[2][i]==1) n-=2; if(a[2][i]==2) m+=2; a[1][i]=a[3][i]=0; x=3*50+150; y=i*50+150; Rfillellipse(x,y,t); Mcolor(x,y,t); x=3*50+150; Rfillellipse(x,y,t); Mcolor(x,y,t); } else break; } else if(a[3][i]==0) {if(a[0][i]==a[2][i]!=a[1][i]&&a[1][i]!=0) { if(a[1][i]==1) n-=2; if(a[1][i]==2) m-=2; a[0][i]=a[2][i]=0; x=2*50+150; y=i*50+150; Rfillellipse(x,y,t); Mcolor(x,y,t); x=0*50+150; Rfillellipse(x,y,t); Mcolor(x,y,t); } else break; } else if(a[i][3]==0) {if(a[i][0]==a[i][2]!=a[i][1]&&a[i][1]!=0) { if(a[i][1]==1) m-=2; if(a[i][1]==2) n-=2; a[i][0]=a[i][2]=0; x=i*50+150; y=2*50+150; Rfillellipse(x,y,t); Mcolor(x,y,t); y=0*50+150; Rfillellipse(x,y,t); Mcolor(x,y,t); } |
|
|
| 221.234.222.* |
3楼 } } playwin(m,n); break; } void Mcolor(int x1,int y1,int t) { Rfillellipse(x1,y1,t); for(x1=150;x1<=300;x1+=50) for(y1=150;y1<=300;y1+=50) { if(x1==150) { if(y1==150) { line(x1,y1,x1,y1+15); line(x1,y1,x1+15,y1); } else if(y1==300) { line(x1,y1-15,x1,y1); line(x1,y1,x1+15,y1); } else { line(x1,y1-15,x1,y1+15); line(x1,y1,x1+15,y1); } } else if(x1==300) { if(y1==150) { line(x1-15,y1,x1,y1); line(x1,y1,x1,y1+15); } else if(y1==300) { line(x1,y1,x1,y1-15); line(x1,y1,x1-15,y1); } else { line(x1,y1-15,x1,y1+15); line(x1-15,y1,x1,y1); } } else if(y1==150) { line(x1-15,y1,x1+15,y1); line(x1,y1,x1,y1+15); } else if(y1==300) { line(x1-15,y1,x1+15,y1); line(x1,y1-15,x1,y1); } else { line(x1-15,y1,x1+15,y1); line(x1,y1-15,x1,y1+15); } } } void playwin(int m,int n) { settextstyle(0,0,4); setcolor(12); if(a==0&&b!=0) outtextxy(100,100,"GREEN WIN !"); if(b==0&&a!=0) outtextxy(100,100,"WHITE WIN !"); if(a==1&&b==1) outtextxy(100,100,"YOU ALL WIN !"); } void Rrectangle(int x,int y,int t) { setlinestyle(SOLID_FILL,t,THICK_WIDTH); rectangle(x-15,y-15,x+15,y+15); } void Rfillellipse(int x,int y,int t) { int tt; if(t==1) tt=15; else if(t==2) tt=2; else tt=BLUE; setcolor(0); setfillstyle(SOLID_FILL,tt); fillellpise(x,y,15,15); } int choosezi(int xx, int yy) { int Mkey; Mkey=bioskey(0); if(Mkey==ESC) break; if(Mkey==ENTER) { if(Mkey==UP||key==E&&yy>150) { Rrectangle(xx,yy,BLUE); yy-=50; Rrectangle(xx,yy,RED); y=yy; } else if(Mkey==DOWN||key==D&&yy>300) { Rrectangle(xx,yy,BLUE); yy+=50; Rrectangle(xx,yy,RED); y=yy; } else if(Mkey==LEFT||key==S&&xx>150) { Rrectangle(xx,yy,BLUE); xx-=50; Rrectangle(xx,yy,RED); x=xx; } else if(Mkey==RIGHT||key==F&&yy>=150&&xx<300) { Rrectangle(xx,yy,BLUE); xx+=50; Rrectangle(xx,yy,RED); x=xx; } } } |
|
|
| 221.234.222.* |
4楼 |
|
|
| 219.148.85.* |
5楼 |
|
|
|
7楼 |
|
|
|
| 60.191.227.* |
8楼 |
|
|
| 211.138.184.* |
9楼 |
|
|
|
10楼 |
|
|
|
