简单坦克大战

2016-02-19 13:12 1 1 收藏

想不想get新技能酷炫一下,今天图老师小编就跟大家分享个简单的简单坦克大战教程,一起来看看吧!超容易上手~

【 tulaoshi.com - 编程语言 】

今天下午赶出来的,还有很多东西要不要加进去我自己还没决定,因为有些东西以前练过了,而有些东西没练过,还有很多不足之处.
  #include graphics.h
  #include stdlib.h
  #include dos.h
  #include conio.h
  #include bios.h
  #define KEY_ESC 0x01
  #define KEY_SPACE 0x39
  #define KEY_UP 0x48
  #define KEY_LEFT 0x4b
  #define KEY_RIGHT 0x4d
  #define KEY_DOWN 0x50
  /*1石头,2砖块,3水,5老家,8玩家,9敌人*/
  int map[20][20]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
                   1,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
                   1,0,2,2,2,2,0,0,2,2,2,2,0,0,0,0,0,0,0,1,
     1,0,0,0,0,0,0,0,2,0,0,2,0,1,1,1,1,0,0,1,
                   1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
     1,2,2,2,2,2,2,2,0,0,0,0,0,0,0,2,2,0,0,1,
     1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,1,
                   1,0,1,1,1,1,3,3,3,3,0,0,0,0,0,0,0,2,0,1,
                   1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
                   1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
                   1,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,1,
     1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,3,3,3,0,1,
                   1,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,1,
                   1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
                   1,0,0,0,0,3,3,3,1,1,1,1,1,1,1,0,0,0,0,1,
                   1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
                   1,0,2,2,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,1,
                   1,0,2,2,0,0,0,0,2,2,2,0,0,0,2,2,0,0,0,1,
                   1,0,0,0,0,0,0,8,2,5,2,0,0,0,0,0,0,0,0,1,
     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
  strUCt f
  {
   int x;
   int y;
   int direction;
  };
  struct play
  {
   int x;/*行坐标*/
   int y;/*列坐标*/
   int direction;/*方向*/
   struct f fire[5];/*5颗子弹*/
   int score;/*分数*/
  }Playone;
  struct a
  {
   int x;
   int y;
   int color;
   int direction;
   int directiontwo;/*用来判定走的路是否往返*/
   int fireplay;/*是否攻击的变量,随机生成*/
   struct f fire;
  }amy[5];/*敌人的结构体,其实可以添加不同的颜色来表示不同种类的坦克*/
  char key_state[128],key_pressed[128];
  void Init();/*图象驱动开始*/
  void End();/*图象驱动结束*/
  void DrawMap();/*画地图*/
  void DrawWater(int x,int y);/*画水*/
  void DrawBrick(int x,int y);/*画砖*/
  void DrawTone(int x,int y);/*画石头*/
  void DrawHome(int x,int y);/*画老家*/
  void DrawBlack(int x,int y);/*去除内容*/
  void DrawPlay(int x,int y);/*画玩家*/
  void DrawAmy(int x,int y,int i);/*画敌人*/
  void Score();/*输出分数*/
  void GamePlay();/*玩游戏过程*/
  void GameOver();/*游戏失败*/
  void TimeDelay(unsigned long microsec); /*延时函数 传入微秒数*/
  int GetKey(int ScanCode);/*这里开始都是按键函数*/
  void interrupt far (*OldInt9Handler)();
  void far interrupt NewInt9();
  void InstallKeyboard();
  void ShutDownKeyboard();
  void main(void)
  {
   Init();
   DrawMap();
   GamePlay();
   End();
  }
  void TimeDelay(unsigned long microsec) /*延时函数 传入微秒数*/
  {
   union REGS r;
   r.h.ah=0x86;
   r.x.cx=microsec16;
   r.x.dx=microsec;
   int86(0x15,&r,&r);
  }
  void Init()/*图象驱动开始*/
  {int gd=DETECT,gm;
   initgraph(&gd,&gm,"d:cc");
   cleardevice();
   InstallKeyboard();
  }
  void End()/*图象驱动结束*/
  {
   ShutDownKeyboard();
   closegraph();
  }
  void DrawTone(int x,int y)/*画石头*/
  {
  setfillstyle(SOLID_FILL,7);
  bar(100+x*20-9,50+y*20-9,100+x*20+9,50+y*20+9);
  }
  void DrawWater(int x,int y)/*画水*/
  {
   setfillstyle(SOLID_FILL,BLUE);
   bar(100+x*20-9,50+y*20-9,100+x*20+9,50+y*20+9);
  }
  void DrawBrick(int x,int y)/*画砖*/
  {
  setfillstyle(SOLID_FILL,6);
  bar(100+x*20-9,50+y*20-9,100+x*20+9,50+y*20+9);
  setcolor(15);
  line(100+x*20-9,50+y*20-4,100+x*20+9,50+y*20-4);
  line(100+x*20-9,50+y*20+4,100+x*20+9,50+y*20+4);
  line(100+x*20-4,50+y*20-9,100+x*20-4,50+y*20+9);
  line(100+x*20+4,50+y*20-9,100+x*20+4,50+y*20+9);
  }
  void DrawHome(int x,int y)/*画老家*/
  {
   setcolor(0);
   setfillstyle(SOLID_FILL,GREEN);
   fillellipse(100+x*20,50+y*20,9,9);
  }
  void DrawBlack(int x,int y)/*去除内容*/
  {
   setcolor(0);
   setfillstyle(SOLID_FILL,0);
   bar(100+x*20-9,50+y*20-9,100+x*20+9,50+y*20+9);
  }
  void DrawPlay(int x,int y)/*画玩家*/
  {
   setcolor(4);/*玩家为红色*/
   circle(100+x*20,50+y*20,7);
   switch(Playone.direction)/*判定玩家方向*/
   {
   case 1:line(100+x*20,50+y*20,100+x*20,50+y*20-9);break;/*上*/
   case 2:line(100+x*20,50+y*20,100+x*20+9,50+y*20);break;/*右*/
   case 3:line(100+x*20,50+y*20,100+x*20,50+y*20+9);break;/*下*/
   case 4:line(100+x*20,50+y*20,100+x*20-9,50+y*20);break;/*左*/
   }
  }
  void DrawAmy(int x,int y,int i)/*画敌人*/
  {
   if(amy[i].color==12)
   setcolor(12);
   else if(amy[i].color==13)
   setcolor(13);
   else/*这里是判定三种颜色的坦克*/
   setcolor(14);
   circle(100+x*20,50+y*20,7);
   switch(amy[i].direction)/*判定玩家方向*/
   {
   case 1:line(100+x*20,50+y*20,100+x*20,50+y*20-9);break;/*上*/
   case 2:line(100+x*20,50+y*20,100+x*20+9,50+y*20);break;/*右*/
   case 3:line(100+x*20,50+y*20,100+x*20,50+y*20+9);break;/*下*/
   case 4:line(100+x*20,50+y*20,100+x*20-9,50+y*20);break;/*左*/
   }
  }
  void Score()/*输出分数*/
  {
   char s[10];
   Playone.score+=10;
   sprintf(s,"%d",Playone.score);
   setfillstyle(SOLID_FILL,0);
   bar(550,100,640,130);
   settextstyle(0,0,2);
   setcolor(YELLOW);
   outtextxy(550,115,s);
  }
  void DrawMap()/*画地图*/
  {int i,j,k;
   for(i=0;i20;i++)
    {
    for(j=0;j20;j++)
     if(map[i][j]==1)
      DrawTone(j,i);
     else if(map[i][j]==2)
      DrawBrick(j,i);
     else if(map[i][j]==3)
      DrawWater(j,i);
     else if(map[i][j]==5)
      DrawHome(j,i);
     else if(map[i][j]==8)
      {
      Playone.x=i;
      Playone.y=j;
      Playone.direction=1;
      DrawPlay(j,i);
      for(k=0;k5;k++)
      Playone.fire[k].direction=-1;/*5颗子弹的方向都为-1,表示不存在*/
      }
     else if(map[i][j]==9)
     {
     amy[0].x=1;amy[0].y=1;amy[0].direction=amy[0].directiontwo=3;/*第一个敌人*/
     amy[
  

来源:https://www.tulaoshi.com/n/20160219/1603342.html

延伸阅读
《坦克世界》法国中型坦克全面介绍 法国中型坦克 【D2】 D1坦克的后继型号,1934年由雷偌公司开始研制。从1936年到1940年一共生产了100辆坦克。之后又对其进行了改进,改进后的定名为D2bis。 【AMX-40t】 1952年完成了唯一一辆样车的试制,该型坦克最大的特色是悬挂系统的空心负重轮和摇摆炮塔。在其通过了测试...
《坦克世界》简介 由空中网代理运营的3d 战争 网游《 坦克世界 》由欧美 游戏 开发商Wargaming研发,这是一款大型多人在线网游,支持30人的PVP对抗战斗,游戏中将有各种类型的坦克参战,还会有品种繁多的武器给玩家选择。 《坦克世界》采用bigworld引擎为核心技术,辅以多年的战争开发经验,融合结合动作、策略、模拟与线上 角色扮演 ...
致命坦克 在游戏中你可以输入以下的密码: AECHEATS 开启作弊模式 AEDQD 无敌模式 AEFA 获得武器弹药 AECLIP 穿墙模式 AEHEALTH 补充生命值 《致命坦克》秘籍 首先按 T 输入 AECHEATS 开启秘籍模式,然后再按 T 输入以下秘籍可得到对应效...
标签: 王者荣耀
定位分析 坦克定位的英雄生存能力极强,团战时可以站在队伍的前排帮助队友抵挡伤害,为己方后排输出英雄提供良好的输出环境,部分较为强势的坦克英雄还拥有一定的先手团控能力。绝大部分的坦克都有着输出能力较弱的缺点,无论他们多么能抗伤害,自身输出是很难对敌人构成威胁的。在当前版本较为热门的坦克英雄有:钟无艳、夏侯惇...
《坦克世界》法系坦克独特的火炮设定 法系坦克安装了自动装弹机,可以短时间内快速发射弹夹内的四发或六发炮弹,其迅猛的火力往往让对方猝不及防其实这与法国坦克独特的“摇摆式炮塔”有关。 AMX-13轻型坦克解剖图 所谓的摇摆式炮塔,就是将传统的炮塔“一分为二”,将火炮刚性地安装于上炮塔,两者成一体绕火炮耳轴作俯仰运动(即炮...

经验教程

927

收藏

68
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部