使用WINDOWS的GDI开发游戏-坦克大战(2)

第二篇

前面废话那么多,现在终于可以开始真正的制作了。在开始时我们需要先搭建一个游戏运行的框架程序,这个框架是大部分游戏都差不多一样的。前面说过我们并不打算用MFC的框架,而是直接用WIN32的API。那么我们就开始来搭建这个框架吧。

相信大家都安装了微软的Visual C++吧,VC6.0,VC2003,都可以,我用的是VC2008。这里就不废话编程环境的搭建了,我假设你已经搭建好了。

首先利用向导生成一个Win32的GUI框架程序。

我截了图,只是点几下鼠标,相信没有人不会了,微软的东西就这点好,很多傻瓜式操作。

第一步:

选择创建的软件类型,我们选择Win32项目

第二步:单击下一步,不用设置,直接点完成,就自动生成了一个Win32 GUI框架。

应用程序设置

然后点工具栏里的绿色小三角编译运行看看,一个典型的窗口程序就出来了。

但这个只是一般程序的框架,我们需要进行一些设置就可以让他成为游戏程序框架了。

首先是窗口大小,我们要把窗口设置成800 X 600,此外我们添加一个公共头文件CommonHead.h,进行公共数据定义。

公共数据暂时定义如下:

#ifndef _H_COMMONHEAD_H #define _H_COMMONHEAD_H const int C_TILE_W = 32; const int C_TILE_H = 32; const int C_MAP_W = 25; const int C_MAP_H = 18; #endif  

然后修改stdafx.h,添加一个包含命令

#include "CommonHead.h"

再来修改窗口大小,修改

hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,

      CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,

      CW_USEDEFAULT, 0, C_TILE_W*C_MAP_W, C_TILE_H*C_MAP_H, NULL, NULL, hInstance, NULL);

再修改窗口标题为中文名,

删除 LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); 这句

换成 wsprintf( szTitle, _T("坦克大战1.0") );

然后运行看看,虽然单调了点,但框架还是有点像游戏了吧。至于菜单,大家按自己意思可以去掉也可以保留。

去掉菜单只需要修改

wcex.lpszMenuName = MAKEINTRESOURCE(IDC_TANKWAR);为

wcex.lpszMenuName = NULL;

游戏框架

下一篇我们就要真正的游戏编写了。

但我们需要先编写一个地图编辑器,那样才容易构建我们的地图,供游戏主程序的读取。地图编辑器使用MFC编写的,提供下载地址,代码就不解释了。

我们分析地形,可分为地表层与障碍物。本来我们还有树木层的,但我们观察到其实树木层和地表层是一样的,只是显示时有所不同(树画在最上面)。

但为了简便处理,我们把他们通通归为地形。

那么地形有陆地、钢墙、土墙、河水、雪地、树林、鹰七种。可以用四位就够了。我们就给地图分配一个Byte(8位)。

所以地图所占字节为25*18=450 Bytes

这个地图很简单,只是反映地形而已,所以写起来不会很困难。

坦克大战地图编辑器
地图编辑器下载

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

b2b160

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值