資源簡介
http://blog.csdn.net/xiaoxiao108/archive/2010/12/18/6084473.aspx
記得在大學學java時,同學在下載了很多java的視頻,看到里面有些是介紹簡單游戲開發的,馬士兵老師講的,挺感興趣的。一起看了看視頻寫了寫程序。現在畢業了,因為工作中用的是C#,最近很想拿C#把以前寫的坦克大戰重寫下,來熟悉熟悉C#的基本語法。
程序很簡單,跟java代碼相比沒有多大改動
開發環境 vs2008
實現方法如下
1.在form中添加一個panel,在panel的 Paint方法中得到Graphics對象
2.通過Graphics對象再panel畫出坦克,子彈等相關內容
3.添加timer控件 來控制panel的重畫 實現坦克,子彈的運動
4.根據電腦按下的方向鍵,確定出坦克的方向,panel重畫時根據坦克的方向修改坦克的X,Y軸坐標,來實現坦克的移動
5.通過Rectangle的IntersectsWith函數來進行碰撞檢測,實現子彈打擊坦克
具體實現代碼
1.在項目里面添加枚舉類型
///
/// 表示方向的的枚舉類型
///
public enum Direction { L, U, D, R, STOP }
2.添加子彈類的相關常量,屬性
///
/// 子彈X軸的速度,單位PX
///
public static int XSPEED = 10;
///
/// 子彈Y軸的速度,單位PX
///
public static int YSPEED = 10;
///
/// 子彈的寬度
///
public static int WIDTH = 10;
///
/// 子彈的高度
///
public static int HEIGHT = 10;
///
/// 子彈的坐標
///
int x, y;
///
/// 子彈的方向
///
Direction dir;
///
/// 子彈的存活狀態
///
private bool live = true;
///
/// TankClient窗體實例
///
private TankClient tankClient;
///
/// 敵我雙方的標記
///
private bool good;
3.添加draw方法來畫出子彈
public void Draw(Graphics g)
{
if (!live)
{
tankClient.missiles.Remove(this);
return;
}
//通過畫橢圓函數在界面上顯示子彈
g.FillEllipse(Brushes.Black, x, y, Missile.WIDTH, Missile.HEIGHT);
Move();
}
4.添加子彈打擊坦克的方法
public bool HitTank(Tank t)
{
//用IntersectsWith來檢測兩個矩形相碰撞
if (GetRectangle().IntersectsWith((t.GetRectangle())) && t.Live && t

代碼片段和文件信息
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????55767??2011-03-01?18:00??WindowsFormsApplication1.rar
?????文件??????45562??2011-03-01?18:04??SmartDeviceProject1.rar
-----------?---------??----------?-----??----
???????????????101329????????????????????2
-----------?---------??----------?-----??----
?????文件??????55767??2011-03-01?18:00??WindowsFormsApplication1.rar
?????文件??????45562??2011-03-01?18:04??SmartDeviceProject1.rar
-----------?---------??----------?-----??----
???????????????101329????????????????????2
評論
共有 條評論