老師在給出data.h的情況下 讓我們實現坦克的移動和發射炮彈。各種定義宣告和全域性變數。
每個dada.h中最開頭都需要有個#pragma once
這是乙個比較常用的c/c++雜注,只要在標頭檔案的最開始加入這條雜注,就能夠保證標頭檔案只被編譯一次。
#pragma once
// 字型顯示相關
#define reverse common_lvb_reverse_video // 反色
#define underscore common_lvb_underscore // 下劃線
// 字型顏色
#define f_blue foreground_blue // 深藍
#define f_h_blue 0x0001|0x0008 // 亮藍
#define f_green 0x0002 // 深綠
#define f_h_green 0x0002|0x0008 // 亮綠
#define f_red 0x0004 // 深紅
#define f_h_red 0x0004|0x0008 // 亮紅
#define f_yellow 0x0002|0x0004 // 深黃
#define f_h_yellow 0x0002|0x0004|0x0008 // 亮黃
#define f_purple 0x0001|0x0004 // 深紫
#define f_h_purple 0x0001|0x0004|0x0008 // 亮紫
#define f_cyan 0x0002|0x0004 // 深青
#define f_h_cyan 0x0002|0x0004|0x0008 // 亮青
#define f_white 0x0004|0x0002|0x0001
#define f_h_white 0x0004|0x0002|0x0001|0x0008
// 背景顏色
#define b_blue background_blue // 深藍
#define b_h_blue 0x0010|0x0080 // 亮藍
#define b_green 0x0020 // 深綠
#define b_h_green 0x0020|0x0080 // 亮綠
#define b_red 0x0040 // 深紅
#define b_h_red 0x0040|0x0080 // 亮紅
#define b_yellow 0x0020|0x0040 // 深黃
#define b_h_yellow 0x0020|0x0040|0x0080 // 亮黃
#define b_purple 0x0010|0x0040 // 深紫
#define b_h_purple 0x0010|0x0040|0x0080 // 亮紫
#define b_cyan 0x0020|0x0040 // 深青
#define b_h_cyan 0x0020|0x0040|0x0080 // 亮青
#define b_white 0x0010|0x0020|0x0040
#define b_h_white 0x0010|0x0020|0x0040|0x0080
/** 1 23 4 56 78
* 0x 0 00 0 00 00
* 物件型別 物件id 坦克/炮彈/碰撞體積 運動方向/血值 顯示控制
*/typedef struct _object //創造子彈的結構體
object, *pobject;
extern object stcbulletarry[200];
typedef struct _ctank //創造坦克的結構體
ctank, *pctank;
#define tank_body 0x10090011
#define tank_style_body 0x10090001 // ■ 坦克組成部分
#define tank_style_up_l 0x10090002 // ◢ 敵軍坦克-上
#define tank_style_up_r 0x10090003 // ◣ 敵軍坦克-上
#define tank_style_down_l 0x10090004 // ◤ 敵軍坦克-下
#define tank_style_down_r 0x10090005 // ◥ 敵軍坦克-下
#define tank_style_left_l 0x10090006 // ◥ 敵軍坦克-左
#define tank_style_left_r 0x10090007 // ◢ 敵軍坦克-左
#define tank_style_right_l 0x10090008 // ◣ 敵軍坦克-右
#define tank_style_right_r 0x10090009 // ◤ 敵軍坦克-右
#define tank_heart 0x2
#define tank_level_1 0x20090011 // ① 血量1
#define tank_level_2 0x20090012 // ② 血量2
#define tank_level_3 0x20090013 // ③ 血量3
#define tank_level_4 0x20090014 // ④ 血量4
#define tank_level_5 0x20090015 // ⑤ 血量5
#define tank_level_6 0x20090016 // ⑥ 血量6
#define tank_level_7 0x20090017 // ⑦ 血量7
#define tank_level_8 0x20090018 // ⑧ 血量8
#define tank_level_9 0x20090019 // ⑨ 血量9
#define tank_level_10 0x2009001a // ⑩ 血量10
#define wall_a_type 0x5
#define wall_b_type 0x6
#define wall_a 0x50010030 // ▓ 土牆(可破壞)
#define wall_b 0x60010031 // 〓 鐵牆
#define wall_c 0x70000032 // ≈ 河流(減速)
#define wall_d 0x80000033 // ≡ 叢林(隱身)
#define goods_style_a 0x90010040 // ☆ 五星-空心
#define goods_style_b 0xa0010041 // ★ 五星-實心
#define bullet 0xf
#define bullet_a 0xf0050042 // ¤ 榴彈
#define bullet_b 0xf0050043 // ☉ 炮彈
#define bullet_c 0xf0050044 // ⊕ 穿甲彈
#define bullet_d 0xf0050045 // ⊙ 貧軸彈
#define bullet_e 0xf0050046 // ◎ 坦克殺手子母彈
#define null_a 0x00000047 // □ 普通空白
#define null_col 0x00010047 // □ 帶碰撞體積的空白
#define collide_1 0x00001000
#define collide_2 0x00002000
#define up 0
#define down 1
#define left 2
#define right 3
//extern wchar g_playertankstyle[4][3][4];
extern int g_nmapdata[40][40];
#define keydown(vk_code) ((getasynckeystate(vk_code) & 0x8000) ? 1 : 0)
#define keyup(vk_code) ((getasynckeystate(vk_code) & 0x8000) ? 0 : 1)
我能力有限,只能用到其中一部分。其餘部分真沒法使用。
data.cpp 地圖資料部分
每個cpp需要包含
#include "stdafx.h"這個標頭檔案。
#include "stdafx.h"
#include "data.h"
object stcbulletarry[200] = ;
int g_nmapdata[40][40] = ;
C 遊戲《坦克大戰》 坦克
這裡的各種型別,使用struct而不是enum,避免後面強制轉換。子彈資訊 public struct t bulletinfo 坦克型別 public struct t type 坦克行動方向 public struct t dir 公共引數 public struct t commpar 設計框...
經典坦克大戰再現(二)
不好意思我承認我鴿了一天,這一切都是因為我這不爭氣的眼鏡,它該換眼鏡了。昨天調了快一下午的 就是因為獲取的時候路徑裡面少敲了個s導致自己沒查出來光在邏輯 裡面找錯誤,鑽進了牛角尖就再沒出來 看著這紅色的報錯,我心態崩了啊 就當我想要重寫時,突然意識看到左側的專案欄就想到路徑是不是對的,這一查都人都傻...
C 坦克大戰學習總結
新增資源在properties下的resource.resx新增資源 使用資源 工程名.properties.resource.資源名 實際本質,是乙個流。soundplayer ex 命名空間 system.media 賦值 1.ex.stream,用resource資源 2.ex.soundlo...