龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

拼图游戏

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
经过修改并加了注解 运行程序后,会产生9个数字,当人把数字拼成 1 2 3 4 5 6 7 8 9 你就过关了,很简单的。 #include #include #include #include #define left 0x4b #define right 0x4d #define down 0x50 #define

  经过修改并加了注解

  

运行程序后,会产生9个数字,当人把数字拼成

1 2 3

4 5 6

7 8 9

你就过关了,很简单的。

#include

  #include

  #include

  #include

  #define left 0x4b

  #define right 0x4d

  #define down 0x50

  #define esc 0x01

  #define up 0x48

  #define col 4

  #define row 3

  int a[9]=;

  int board[3][3];//面板

  int k,m;//9的坐标

  int get_key(void);

  void Draw9(int x,int y,char s[]);//显示方格9

  void Draw(int x,int y,char s[]);//显示其它方格

  main()

  {

  int gdriver=VGA,gmode=VGAHI,errorcode;

  int i,j,key,dec=9,temp,temp1;

  char *s[]=;

  initgraph(&gdriver,&gmode,"d:c");

  errorcode=graphresult();

  if(errorcode!=0)

  {printf("the graph error:%s",grapherrormsg(errorcode));

  getch();

  printf("press any key to halt:");

  exit(1);

  }

/*将个数字随机放在9个格子里*/

for(i=0;i<3;i++)

  for(j=0;j<3;j++)

  {temp=rand()%dec;dec--;

   board[i][j]=a[temp];

   for(temp1=temp;temp1

  a[temp1]=a[temp1+1];

  }

  setcolor(15);

  rectangle(198,148,351,301);

  for(i=0;i<3;i++)

  for(j=0;j<3;j++)

  

  }

  while(1)

  {while(bioskey(1)==0);

   key=get_key();

   switch(key)

   {case up:if(k>0)

   {board[k][m]=board[k-1][m];

   board[k-1][m]=9;

   k--;

   Draw9((col+m)*50,(row+k)*50,s[board[k][m>);

   Draw((col+m)*50,(row+k+1)*50,s[board[k+1][m>);

   if(judge()){printf("you win!!!,press any key to exit");getch();exit(0); } }

   break;

   case down:if(k<2)

   {

   board[k][m]=board[k+1][m];

   board[k+1][m]=9;

   k++;

   Draw9((col+m)*50,(row+k)*50,s[board[k][m>);

   Draw((col+m)*50,(row+k-1)*50,s[board[k-1][m>);

  if(judge()){printf("you win!!!,press any key to exit");getch();exit(0);}

   }

   break;

  

  

case left:if(m>0)

   {

   board[k][m]=board[k][m-1];

   board[k][m-1]=9;

   m--;

   Draw9((col+m)*50,(row+k)*50,s[board[k][m>);

   Draw((col+m+1)*50,(row+k)*50,s[board[k][m+1>);

   if(judge()){printf("you win!!!,press any key to exit");getch();exit(0);}

   }

   break;

   case right:if(m<2)

   {board[k][m]=board[k][m+1];

   board[k][m+1]=9;

   m++;

   Draw9((col+m)*50,(row+k)*50,s[board[k][m>);

   Draw((col+m-1)*50,(row+k)*50,s[board[k][m-1>);

   if(judge()){printf("you win!!!,press any key to exit");getch();exit(0);}

   }

   break;

   case esc:exit(0);

   }

  }

  }

  int get_key(void)

  {union REGS reg;

  reg.h.ah=0;

  int86(0x16,?,?);

  return(reg.h.ah);

  }

  void Draw9(int x,int y,char s[])/* x, y为左上角坐标sizex,sizey为长和宽*/

  {int sizx=50-1;

   int sizy=50-1;

   setcolor(0);/*这里最好用灰色*/

   line(x,y,x+sizx-1,y);

   line(x,y+1,x+sizx-2,y+1);

   line(x,y,x,y+sizy-1);

   line(x+1,y,x+1,y+sizy-2);

   setcolor(8);/*这里最好用深灰色*/

   line(x+1,y+sizy,x+sizx,y+sizy);

   line(x+2,y+sizy-1,x+sizx,y+sizy-1);

   line(x+sizx-1,y+1,x+sizx-1,y+sizy);

   line(x+sizx,y+2,x+sizx,y+sizy);

   setcolor(15);/*这里最好用白色*/

   putpixel(x,y+sizy,3);

   putpixel(x+1,y+sizy-1,3);

   putpixel(x+sizx,y,3);

   putpixel(x+sizx-1,y+1,3);

   setfillstyle(1, 7);/*这里最好用灰色,设置填充模式*/

   bar(x+2,y+2,x+sizx-2,y+sizy-2);setcolor(0);

   setcolor(0);

  settextboardify(CENTER_TEXT,CENTER_TEXT);

  settextstyle(DEFAULT_FONT,HORIZ_DIR,3);

  outtextxy(x+25,y+25,s);

  }

  void Draw(int x,int y,char s[])/* x, y为左上角坐标sizex,sizey为长和宽*/

  {int sizx=50-1;

   int sizy=50-1;

   setcolor(15);/*这里最好用白色*/

   line(x,y,x+sizx-1,y);

   line(x,y+1,x+sizx-2,y+1);

   line(x,y,x,y+sizy-1);

   line(x+1,y,x+1,y+sizy-2);

   setcolor(8);/*这里最好用深灰色*/

   line(x+1,y+sizy,x+sizx,y+sizy);

   line(x+2,y+sizy-1,x+sizx,y+sizy-1);

   line(x+sizx-1,y+1,x+sizx-1,y+sizy);

   line(x+sizx,y+2,x+sizx,y+sizy);

   setcolor(7);/*这里最好用灰色*/

   putpixel(x,y+sizy,3);

   putpixel(x+1,y+sizy-1,3);

  

  

putpixel(x+sizx,y,3);

   putpixel(x+sizx-1,y+1,3);

   setfillstyle(1, 7);/*这里最好用灰色,设置填充模式*/

   bar(x+2,y+2,x+sizx-2,y+sizy-2);setcolor(0);

   setcolor(0);

   settextboardify(CENTER_TEXT,CENTER_TEXT);

   settextstyle(DEFAULT_FONT,HORIZ_DIR,3);

   outtextxy(x+25,y+25,s);

  }

  int judge()

  {if((board[0][0]==1)&&(board[0][1]==2)&&(board[0][2]==3)&&(board[1][0]==4)&&(board[1][1]==5)&&(board[1][2]==6)&&(board[2][0]==7)&&(board[2][1]==8)&&(board[2][2]==9))

  return 1;

  esle return 0;

  }

  

精彩图集

赞助商链接