這裡的各種型別,使用struct而不是enum,避免後面強制轉換。
//子彈資訊
public struct t_bulletinfo
}//坦克型別
public struct t_type
//坦克行動方向
public struct t_dir
//公共引數
public struct t_commpar
設計框架是,很糾結一點:碰撞檢測函式,應該寫在主程式類,還是寫在坦克類,作為坦克的成員函式?後來「方便」打敗其他一切,畢竟生成乙個坦克例項,也就生成對應成員函式,然後直接加到委託裡面,一次呼叫,太省事了,避免主程式乙個個輪詢。
車體:4個方向使用不同 的檢測函式
/// /// 檢測是否順通[分別4個方向]
///
/// false:阻礙;true:順通
bool cardetectup()}}
//檢測與地圖元素是否碰撞
int x1 = location.x + (t_commpar.pixmin * tankspeed) / 2 + c_map.offet;
int y1 = location.y - (t_commpar.pixmin * tankspeed) / 2 + c_map.offet;
int x2 = location.x + t_commpar.tanksizex - (t_commpar.pixmin * tankspeed) / 2 + c_map.offet;
int y2 = location.y - (t_commpar.pixmin * tankspeed) / 2 + c_map.offet;
if (x1 < 0 + c_map.offet || x1 >= t_commpar.mapsizex + c_map.offet || x2 < 0 + c_map.offet || x2 >= t_commpar.mapsizex + c_map.offet || y1 < 0 + c_map.offet || y1 >= t_commpar.mapsizey + c_map.offet || y2 < 0 + c_map.offet || y2 >= t_commpar.mapsizey + c_map.offet)
else
}
子彈:4個方向使用不同 的檢測函式
/// /// 子彈檢測
///
/// 子彈位置
/// 需要消滅的位置
/// 消滅方式(棄用)
/// 本子彈是否需要銷毀
bool bulletdetectup(point pt, ref rectangle xrt, ref byte fill)
}//檢測地圖元素
//獲取地圖元素號
byte t1 = map.mask[x1, y1];
byte t2 = map.mask[x2, y2];
if (t1 == 0 && t2 == 0) return true;
//獲取地圖元素生命值
int hp1 = map.maphps[pt.x / t_commpar.tanksizex, pt.y / t_commpar.tanksizey];
int hp2 = map.maphps[(pt.x + t_commpar.bulletsizex) / t_commpar.tanksizex, pt.y / t_commpar.tanksizey];
//獲取地圖元素型別
tlandformtype lft1 = map.tlandforms[t1];
tlandformtype lft2 = map.tlandforms[t2];
//處理不同地圖元素
坦克大戰 坦克類
坦克類 class tank public void setx int x public int gety public void sety int y y表示坦克的縱座標 int y 0 public tank int x,int y 定義坦克方向 0表示向上,1右,2下,3左 int direc...
java 坦克大戰
include include using namespace std void print int a void shellinsert int a,int n,int d 間隔d進行排序 a j x 插入 print a void shell int a,int n shell插入排序 void...
2019 04 19 坦克大戰
其實通過學期這種第三方,可以獲得的經驗是,他們都是一樣的,要學會看文件,只要你想到的 其實都有封裝好,方法,屬性之後的。利用這些都是可以實現一些簡單的功能了。快捷方便,看文件,呼叫 也可能是python的第三方庫確實比較多 1 引擎安裝 可以指定版本號 pip install pygame 版本 u...