关于C#面向对象版的坦克大战问题 c#面向对象坦克大战 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 第一个bug在GameController类的下面这个方法:(看注释)bu.DaBullet(bu, g, tank.tankdir); public void DaBullet() { if (this.IsBulletMoveable(bu)) { //子弹移动方向随着坦克方向改变而改变,你可以修改子弹类的这个方法 bu.DaBullet(bu, g, tank.tankdir); } else { dapaoxiezi= true; bu.tp.WipeMe(g); bu.KillPaoDan(); } }////Bullet////public void DaBullet(Bullet n, System.Drawing.Graphics g,TankDirection s)//改为,方向由子弹自己方向决定,看了你代码子弹类里有它的方向属性public void DaBullet(Bullet n, System.Drawing.Graphics g){...... switch (this.s).......} 3、为啥在炮管朝上的时候会击穿两格障碍呢GameController类 public bool IsBulletMoveable(Bullet shape) { // return ground.IsBulletMoveable(bu, TankDirection.TankDown); //改为 return ground.IsBulletMoveable(bu, tank.tankdir); } 4、关于AI,有点头绪来做,但是击杀坦克完全没头绪,不知道该如何获取到被击中坦克的对象//这个没看到你代码有敌人坦克实体啊?//下面是个简单的例子IList<Tank> enemies;//.............初始化public void BulletCollision(){ for(var i=0;i<enemies.Length;i++) 如果子弹与敌人发生碰撞 enemies[i].死(); //如何获取到被击中坦克的对象??} 这里有点奇葩,每次paint都创建GameController private void Form1_Paint(object sender, PaintEventArgs e) { g = Graphics.FromHwnd(this.Gamesback.Handle); cg = new Controller.GameController(g); cg.newGame(); }//改为: private void Form1_Load(object sender, EventArgs e){ g = Graphics.FromHwnd(this.Gamesback.Handle); cg = new Controller.GameController(g);}//你用每次paint 作为“游戏循环”这个就随你了private void Form1_Paint(object sender, PaintEventArgs e){ cg.newGame(); }你按照“俄罗斯方块”的代码去改,还不如自己写呢 请教:VS2005 菜单显示的问题 各位懂的帮帮忙。。。 网络编程----请教高手 急问个C#的算法问题 大侠们 帮助啊 一定要帮着看看 关闭程序的时候,怎么把方法里面声明的多条线程关闭? C#插数据到ACCESS问题(10分)在线等 问下Oracleconnection的问题 派生类如何重写这样的属性? BeginReceive接收数据延时问题(在线等) 菜鸟送100分(TreeView) 关于C#中Post方法传值的问题 关于ajax中post请求 与 jquery中的post请求
bu.DaBullet(bu, g, tank.tankdir); public void DaBullet()
{
if (this.IsBulletMoveable(bu))
{
//子弹移动方向随着坦克方向改变而改变,你可以修改子弹类的这个方法
bu.DaBullet(bu, g, tank.tankdir);
}
else
{
dapaoxiezi= true;
bu.tp.WipeMe(g);
bu.KillPaoDan();
}
}//
//Bullet
//
//public void DaBullet(Bullet n, System.Drawing.Graphics g,TankDirection s)
//改为,方向由子弹自己方向决定,看了你代码子弹类里有它的方向属性
public void DaBullet(Bullet n, System.Drawing.Graphics g){
......
switch (this.s)
.......
}
GameController类 public bool IsBulletMoveable(Bullet shape)
{
// return ground.IsBulletMoveable(bu, TankDirection.TankDown);
//改为
return ground.IsBulletMoveable(bu, tank.tankdir);
}
IList<Tank> enemies;
//.............初始化public void BulletCollision()
{
for(var i=0;i<enemies.Length;i++)
如果子弹与敌人发生碰撞
enemies[i].死(); //如何获取到被击中坦克的对象??
}
{
g = Graphics.FromHwnd(this.Gamesback.Handle);
cg = new Controller.GameController(g);
cg.newGame();
}
//改为:
private void Form1_Load(object sender, EventArgs e)
{
g = Graphics.FromHwnd(this.Gamesback.Handle);
cg = new Controller.GameController(g);
}
//你用每次paint 作为“游戏循环”这个就随你了
private void Form1_Paint(object sender, PaintEventArgs e)
{
cg.newGame();
}
你按照“俄罗斯方块”的代码去改,还不如自己写呢