计算机二级C 辅导:简单图形模拟吃豆游戏计算机二级考试

文章作者 100test 发表时间 2009:06:15 10:08:19
来源 100Test.Com百考试题网


  2009年下半年全国计算机等级考试你准备好了没?考计算机等级考试的朋友,2009年下半年全国计算机等级考试时间是2009年9月19日至23日。更多优质资料尽在百考试题论坛 百考试题在线题库
  这个程序主要是想了下怎么样让游戏中的敌人自己行走,但是又不会固定在两点来回徘徊,我用的方法是随机方向,而且走的一步不可以和前一部的方向相反,希望高手们多多指点.也希望高手们可以指教下编写简单游戏的一些技术.
  #include "graphics.h"
  #include "stdlib.h"
  #include "dos.h"
  #include "bios.h"
  #define LEFT 0x4b00
  #define RIGHT 0x4d00
  #define DOWN 0x5000
  #define UP 0x4800
  #define ESC 0x011b
  #define ENTER 0x1c0d
  /*2墙壁,1可以移动地方,3自己,4敌人*/
  int a[15][20]={2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
  2,1,1,0,0,0,1,0,1,0,0,0,1,1,1,1,1,1,0,2,
  2,1,2,2,2,1,1,2,1,1,0,0,0,1,1,4,1,1,0,2,
  2,1,1,0,2,1,1,2,0,1,1,2,2,2,2,2,0,0,0,2,
  2,4,1,0,2,1,1,2,1,1,1,0,1,1,1,1,0,1,1,2,
  2,1,2,1,2,1,1,2,1,3,2,2,1,1,1,1,2,2,1,2,
  2,1,2,1,2,1,1,1,1,1,1,1,1,0,0,0,1,1,1,2,
  2,1,2,1,0,1,1,1,1,2,1,0,1,2,2,2,1,1,1,2,
  2,1,0,1,0,1,2,1,1,2,1,0,1,2,1,1,4,1,1,2,
  2,1,0,2,0,1,2,1,1,2,1,0,1,2,1,1,1,1,1,2,
  2,1,0,2,1,1,2,1,1,2,1,0,2,2,1,0,0,0,1,2,
  2,1,1,2,1,1,2,1,1,2,1,0,2,1,1,2,2,1,1,2,
  2,1,2,2,1,2,2,1,1,1,1,0,1,4,1,2,0,0,1,2,
  2,1,0,0,0,0,0,4,0,1,1,0,1,1,1,1,0,0,1,2,
  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}./*数组就是地图*/
  strUCt play /*游戏中人物的结构体*/
  {
  int x.
  int y.
  }.
  struct play you,them[5].
  int sum=0./*统计吃的豆子个数,吃满50颗就算胜利*/
  int xx[5][2]./*判断敌人方向用的结构体*/
  int false=0.
  void TimeDelay(unsigned long microsec) /*延时函数 传入微秒数*/
  {
  union REGS r.
  r.h.ah=0x86.
  r.x.cx=microsec>.>.16.
  r.x.dx=microsec.
  int86(0x15,&.r,&.r).
  }
  drawblackdou(int x,int y)/*吃豆子的函数*/
  begain()/*开始函数*/
  {int i,j.
  sleep(1).
  for(i=0.i<.15.i )
  for(j=0.j<.20.j )
  if(a[i][j]==2)/*代表墙壁*/
  {
  setfillstyle(SOLID_FILL,BLUE).
  bar(100 j*20-10,100 i*20 10,100 j*20 10,100 i*20-10).
  }
  else if(a[i][j]==3)/*代表自己*/
  {
  setcolor(RED).
  circle(100 j*20,100 i*20,9).
  }
  else if(a[i][j]==4)/*代表敌人*/
  {
  setcolor(GREEN).
  circle(100 j*20,100 i*20,9).
  }
  else if(a[i][j]==0)/*代表豆子*/
  {
  setcolor(YELLOW).
  circle(100 j*20,100 i*20,3).
  }
  you.x=5.you.y=9./*敌人也自己的开始坐标*/
  them[0].x=2.them[0].y=15.
  them[1].x=4.them[1].y=1.
  them[2].x=8.them[2].y=16.
  them[3].x=12.them[3].y=13.
  them[4].x=13.them[4].y=7.
  }
  void movethem(struct play *them)/*敌人移动的过程*/
  {int i,loop.
  randomize().
  for(i=0.i<.5.i )
  {
  if(you.x==them[i].x&.&.(them[i].y 1)==you.y)
  them[i].y .
  else if(you.x==them[i].x&.&.(them[i].y-1)==you.y)
  them[i].y--.
  else if(you.y==them[i].y&.&.(them[i].x 1)==you.x)
  them[i].x .
  else if(you.y==them[i].y&.&.(them[i].x-1)==you.x)/*只要控制者在身边就立即靠上去*/
  them[i].x--.
  else
  {
  loop:
  xx[i][0]=rand()%4 1./*这里的方向采取随机赋值,原则是新的方向不可以和原来的方向相反*/
  if(xx[i][0]==1&.&.xx[i][1]==2xx[i][0]==2&.&.xx[i][1]==1)
  goto loop.
  if(xx[i][0]==3&.&.xx[i][1]==4xx[i][0]==4&.&.xx[i][1]==3)
  goto loop.
  xx[i][1]=xx[i][0].
  if(xx[i][0]==1)/*四个方向*/
  {them[i].x--.
  if(a[them[i].x][them[i].y]==2)/*如果碰墙壁的话就回到原来的地方等待随机的方向*/
  {them[i].x .goto loop.}
  }
  else if(xx[i][0]==2)
  {them[i].x .
  if(a[them[i].x][them[i].y]==2)
  {them[i].x--.goto loop.}
  }
  else if(xx[i][0]==3)
  {them[i].y .
  if(a[them[i].x][them[i].y]==2)
  {them[i].y--.goto loop.}
  }
  else if(xx[i][0]==4)
  {them[i].y--.
  if(a[them[i].x][them[i].y]==2)
  {them[i].y .goto loop.}
  }
  }
  }
  }

相关文章


计算机二级C 辅导:简单图形模拟吃豆游戏计算机二级考试
FFMpeg在Windows环境下的编译计算机二级考试
令operator=返回一个referenceto*this计算机二级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛