鱼C论坛

 找回密码
 立即注册
查看: 5579|回复: 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循环。
具体代码是这样的。
void kongzhi(int bx,int by)
{
    int a;
    a=getch();
    switch(a)
    {
    case Left:if(x != 1)
    { 
                        x++;
                        gotoxy(x,y); 
                        printf(" ");
                         x--;
                         x--;
                         gotoxy(x,y); 
                         printf("♂");
     }break;
     case Right:if(x != 18)
     { 
                          x++;
                          gotoxy(x,y); 
                          printf(" ");
                          x--;
                          x++;
                          gotoxy(x,y);
                          printf("♂");
        }break;
        case Kong: 
        {
              bx=y;
              for(by=y;by>1;) //发射子弹
              { 
                  by--;
                  gotoxy(x,by); 
                  printf("θ");
                  Sleep(20);
                  gotoxy(x,by); 
                  printf(" ");
                  y=by;
                  jifan();
                  if(r==0||r1==0||r2==0) break;
                }
                y=bx;
        }break;
        case Esc:t=0; break; //退出
        default:break;
        }
}
这里我们还加入了按Esc退出的功能。

接下来我们讲一下敌机的移动.
敌机的移动和我机的移动大概相同,只要用一个循环一直让他前进就可以了。
这里顺便回答一下为什么让我机不用前进,因为敌方靠过来和我方前进是差不多的。
具体代码:
void dfeiji ()
{ 
    while(1)
    { 
        gotoxy(d,r); 
        printf("Ψ");
        gotoxy(d2,r2); 
        printf("♀");
        Sleep(900);
        gotoxy(d,r); 
        printf(" ");
        gotoxy(d1,r1); 
        printf(" ");
        gotoxy(d2,r2); 
        printf(" ");
        if(kbhit())
        {
                kongzhi(0,0);
        }
        if(!r){d=rand()%17+1; m++;}
        if(!r1) {d1=rand()%17+1; m++;}
        if(!r2) {d2=rand()%17+1; m++;}
        r++; 
        r1++;
        r2++;
        byebye();
        if(r==18) r=0;
        if(r1==18) r1=0;
        if(r2==18) r2=0;
        if(r==0||r1==0||r2==0) break; 
    }
}
那么今天的教程就到这里,最后还是要和大家说一声抱歉。那么明天就是我们程序的最后一步,判定游戏结束和分数等数据的统计。
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-9-30 13:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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