鱼C论坛

 找回密码
 立即注册
查看: 5148|回复: 8

[技术交流] 飞机大战小游戏编写教程(3)

[复制链接]
发表于 2016-2-14 19:38:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 zlh 于 2016-2-14 19:43 编辑

教程开始之前先和大家说一声抱歉,因为前两天晚上都和同学出去玩,忘记发教程了。
今天我们要说的是飞机的移动。
相信大家在写一些小游戏的时候都会遇到如何让单位移动的问题。@黑龍
这个问题确实也困扰过我,不过我也找到了解决方法。
就是使用gotoxy()来控制。gotoxy()只要改变一下其中的一个变量就可以实现移动。
例如gotoxy(x,y)是飞机的当前位置。x--就是向左走,x++就是向右走.y--就是向前走,y++就是向后走。
至于子弹的移动,可以用gotoxy()+for循环。
具体代码是这样的。
  1. void kongzhi(int bx,int by)
  2. {
  3.     int a;
  4.     a=getch();
  5.     switch(a)
  6.     {
  7.     case Left:if(x != 1)
  8.     {
  9.                         x++;
  10.                         gotoxy(x,y);
  11.                         printf(" ");
  12.                          x--;
  13.                          x--;
  14.                          gotoxy(x,y);
  15.                          printf("♂");
  16.      }break;
  17.      case Right:if(x != 18)
  18.      {
  19.                           x++;
  20.                           gotoxy(x,y);
  21.                           printf(" ");
  22.                           x--;
  23.                           x++;
  24.                           gotoxy(x,y);
  25.                           printf("♂");
  26.         }break;
  27.         case Kong:
  28.         {
  29.               bx=y;
  30.               for(by=y;by>1;) //发射子弹
  31.               {
  32.                   by--;
  33.                   gotoxy(x,by);
  34.                   printf("θ");
  35.                   Sleep(20);
  36.                   gotoxy(x,by);
  37.                   printf(" ");
  38.                   y=by;
  39.                   jifan();
  40.                   if(r==0||r1==0||r2==0) break;
  41.                 }
  42.                 y=bx;
  43.         }break;
  44.         case Esc:t=0; break; //退出
  45.         default:break;
  46.         }
  47. }
复制代码

这里我们还加入了按Esc退出的功能。

接下来我们讲一下敌机的移动.
敌机的移动和我机的移动大概相同,只要用一个循环一直让他前进就可以了。
这里顺便回答一下为什么让我机不用前进,因为敌方靠过来和我方前进是差不多的。
具体代码:
  1. void dfeiji ()
  2. {
  3.     while(1)
  4.     {
  5.         gotoxy(d,r);
  6.         printf("Ψ");
  7.         gotoxy(d2,r2);
  8.         printf("♀");
  9.         Sleep(900);
  10.         gotoxy(d,r);
  11.         printf(" ");
  12.         gotoxy(d1,r1);
  13.         printf(" ");
  14.         gotoxy(d2,r2);
  15.         printf(" ");
  16.         if(kbhit())
  17.         {
  18.                 kongzhi(0,0);
  19.         }
  20.         if(!r){d=rand()%17+1; m++;}
  21.         if(!r1) {d1=rand()%17+1; m++;}
  22.         if(!r2) {d2=rand()%17+1; m++;}
  23.         r++;
  24.         r1++;
  25.         r2++;
  26.         byebye();
  27.         if(r==18) r=0;
  28.         if(r1==18) r1=0;
  29.         if(r2==18) r2=0;
  30.         if(r==0||r1==0||r2==0) break;
  31.     }
  32. }
复制代码

那么今天的教程就到这里,最后还是要和大家说一声抱歉。那么明天就是我们程序的最后一步,判定游戏结束和分数等数据的统计。
20131211082434743.jpg

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-2-14 19:42:25 | 显示全部楼层
我要狠狠的吐槽一下鱼C的代码格式。复制进去之前是好好地,复制进去之后变得一塌糊涂的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-14 19:42:44 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-2-14 19:56:02 | 显示全部楼层
我们都不会出现这个问题啊
还有 ♂ 是啥?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-14 19:57:47 | 显示全部楼层
黑龍 发表于 2016-2-14 19:56
我们都不会出现这个问题啊
还有 ♂ 是啥?

这个就是飞机啊。不过为毛在鱼C上输出变成了斜的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-2-14 21:04:33 | 显示全部楼层
支持楼主ing...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-2-29 09:41:46 | 显示全部楼层
支持!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-18 18:31:55 | 显示全部楼层
很想学习下是如何编写的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-17 22:30:52 | 显示全部楼层
有些不明白的地方,kongzhi函数里的Left、Right、Kong是什么意思?是不是代码不全(没看到哪里定义了呀,我VS2017),求好心人解答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-28 20:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表