第二篇
前面廢話那麼多,現在終於可以開始真正的製作了。在開始時我們需要先搭建一個遊戲啟動並執行架構程式,這個架構是大部分遊戲都差不多一樣的。前面說過我們並不打算用MFC的架構,而是直接用WIN32的API。那麼我們就開始來搭建這個架構吧。
相信大家都安裝了微軟的Visual C++吧,VC6.0,VC2003,都可以,我用的是VC2008。這裡就不廢話編程環境的搭建了,我假設你已經搭建好了。
首先利用嚮導產生一個Win32的GUI架構程式。
我截了圖,只是點幾下滑鼠,相信沒有人不會了,微軟的東西就這點好,很多傻瓜式操作。
第一步:
選擇建立的軟體類型,我們選擇Win32項目
第二步:單擊下一步,不用設定,直接點完成,就自動產生了一個Win32 GUI架構。
然後點工具列裡的綠色小三角編譯運行看看,一個典型的視窗程序就出來了。
但這個只是一般程式的架構,我們需要進行一些設定就可以讓他成為遊戲程式架構了。
首先是視窗大小,我們要把視窗設定成800 X 600,此外我們添加一個公用標頭檔CommonHead.h,進行公用資料定義。
公用資料暫時定義如下:
#ifndef _H_COMMONHEAD_H<br />#define _H_COMMONHEAD_H<br />const int C_TILE_W = 32;<br />const int C_TILE_H = 32;<br />const int C_MAP_W = 25;<br />const int C_MAP_H = 18;<br />#endif<br />
然後修改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
這個地圖很簡單,只是反映地形而已,所以寫起來不會很困難。
地圖編輯器下載http://download.csdn.net/source/1775917點擊下載