怎样做小游戏挖金子(VC,源码3)

说明:整个工程文件已经上传至“下载频道”, 名字是“挖金子VC版源码”。不仅包括源代码,还有图形资源。最方便的是能直接编译、运行。

昨天讲解了游戏开始菜单的相关程序。今天开始讲游戏主逻辑。当用户点击了“开始”按钮后,进入游戏。需要做的工作是:加载地图,游戏上方的叉子开始摆动,同时检测用户按键,判断是否抓到物品等等。待俺一一道来。

地图信息包括:第几关,物品及其坐标,以前两关的地图数据为例:

*0
600
1 50 110
2 100 270
3 200 370
2 380 370
3 480 340
1 550 150
4 190 190
5 390 260
#
*1
1000
2 50 110
5 100 270
3 200 370
4 380 370
5 480 340
1 550 150
2 190 190
3 390 260
#

文件结构为:每一关以*和#作为起始/结束标志。*后面跟得是“第几关”(从0开始)。之后,是过关的金钱数量。再之后,每行表示一个物品,物品ID,横坐标,纵坐标。

物品ID从1开始,1至5表示5种物品,对应着大小不同的。这是一个设计的失误,不应该从1开始,应该从0开始。因为数组的下标要从0开始计算,有时候忘了减一,很久才能发现。这就是“代码的可维护性”。 

struct  GAMEOBJECT
{
    
int  id;
    
int  x;
    
int  y;
};

class  GAMEMAP
{
public :
    
// 物品的ID,坐标
     struct  GAMEOBJECT objectarray[ 30 ];
    int iObjectNum;

如上所示,读取地图文件后,将所有物品的ID,坐标放到这个数组中。

整个游戏的画面就是,遍历这个数组,按照物品ID,坐标,显示对应的图片。代码如下:

                 for (i = 0 ;i < gmap.iObjectNum;i ++ )
                {
                    
if (gmap.objectarray[i].id <= 0 )
                    {
                        
continue ;
                    }
                    bObject.ShowNoBack(gmap.objectarray[i].x,
                                gmap.objectarray[i].y,
                                gmap.objectarray[i].id
- 1 );
                
                }

在游戏过程中,只要修改这个数组中的坐标即可移动物品,只要清除一个元素的ID,即可消除一个物品。

还要绘制画面上方的图案,土壤的图案。上方的图案是一个简单的图片,土壤的图片是一个64*64的位图,循环排列而成。游戏中根据“第几关”选择不同的背景图案来显示。

    bMap.ShowCenter(0);//游戏上方的图案
    bEarth.ShowLoop(0,80,GAMEWIDTH,GAMEHEIGHT,gmap.GetMatchNow());//土壤背景

画面上方有三个文字信息:当前金钱,目的金钱,剩余时间。都是简单的一个文本显示TextOut。

以上介绍了地图加载,物品的存储数组。

游戏的主过程中,还有叉子的绘制、摆动、伸缩,检测是否抓到物品(包括物品移动),检测用户按键,这些下回分解。大家可以直接在“CSDN下载频道”下载源工程“挖金子VC版源码”,其实,了无秘密。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值