坦克大战补遗-爆炸效果
原帖
http://topic.csdn.net/u/20091012/16/f4538fa6-b5fb-4dfb-993f-cbf4b5c27a50_3.html
定义爆炸类
- C# code
class Explosion : RunObject { Size TextSize = TextRenderer.MeasureText("BOMB!", new Font("宋体", 10)); public Explosion(Point Postion, Color ForeColor, Color BackColor) : base(ForeColor, BackColor) { ObjBmp = new Bitmap(100, 20); this.X = Postion.X - TextSize.Width / 2; this.Y = Postion.Y - TextSize.Height / 2; this.SumStep = 15; } public override void Draw(ref Bitmap Bmp) { using (Graphics G = Graphics.FromImage(ObjBmp)) { G.FillRectangle(new SolidBrush(BackColor), 0, 0, TextSize.Width, TextSize.Height); // 震荡效果 G.DrawString("BOMB!", new Font("宋体", 10), new SolidBrush(ForeColor), new PointF(0 + Step % 2 * 2 - 1, Step % 2 * 2 - 1)); } base.Draw(ref Bmp); } public override void Move() { if (Step > SumStep) { Step = -1; return; } Step++; } }
然后定义全局列表变量
- C# code
List<Explosion> Explosions = new List<Explosion>();
最后修改线程
- C# code
void RunThread() { try { int Start = Environment.TickCount; Random R = new Random(); int KillCount = 0, DeathCount = 0; while (true) if (Environment.TickCount - Start > 100) { Bitmap CacheBmp = new Bitmap(OrgBmp); for (int i = 0; i < Tanks.Count; i++) { Tanks[i].Move(); Tanks[i].Draw(ref CacheBmp); if (R.Next(10) == 0) // 电脑发子弹是10分之一的可能 Bullets.Add(new Bullet(Color.Red, Tanks[i])); } UTank.Draw(ref CacheBmp); List<Bullet> TempBullets = new List<Bullet>(); for (int i = 0; i < Bullets.Count; i++) { if (Bullets[i].ObjStep != -1) { Rectangle Test = new Rectangle(Bullets[i].Postion.X - 10, Bullets[i].Postion.Y - 10, 20, 20); bool IsKilled = false; for (int j = 0; j < Tanks.Count; j++) if (Test.Contains(Tanks[j].Postion)) { if (Bullets[i].Owner == UTank) { KillCount++; IsKilled = true; // --------------------------------- // 爆炸效果增加代码 Explosions.Add(new Explosion(Tanks[j].Postion, Color.Maroon, this.BackColor)); //------------------------------------ Tanks[j] = new Tank(Color.Blue, this.BackColor); } break; } if (!IsKilled) if (Test.Contains(UTank.Postion)) if (Bullets[i].Owner != UTank) { DeathCount++; IsKilled = true; // --------------------------------- // 爆炸效果增加代码 Explosions.Add(new Explosion(UTank.Postion, Color.Gold, this.BackColor)); //------------------------------------ break; } if (!IsKilled) TempBullets.Add(Bullets[i]); } } // --------------------------------- // 爆炸效果增加代码 List<Explosion> TempExplosions = new List<Explosion>(); for (int i = 0; i < Explosions.Count; i++) { if (Explosions[i].ObjStep != -1) { Explosions[i].Move(); Explosions[i].Draw(ref CacheBmp); TempExplosions.Add(Explosions[i]); } } Explosions = new List<Explosion>(TempExplosions); //------------------------------------ Bullets = new List<Bullet>(TempBullets); for (int i = 0; i < Bullets.Count; i++) { Bullets[i].Move(); Bullets[i].Draw(ref CacheBmp); } Monitor.Enter(CacheBmp); using (Graphics G = Graphics.FromImage(CacheBmp)) { G.DrawString("杀敌数: " + KillCount.ToString() + " 死亡数: " + DeathCount.ToString(), this.Font, Brushes.Black, new PointF(0, 0)); } Monitor.Exit(CacheBmp); this.Invoke(new SetImage(DoSetImage), new Object[] { CacheBmp }); Start = Environment.TickCount; } } catch { // 忽略程序退出异常 } }
[解决办法]
jf
[解决办法]
真是好东西!
[解决办法]
好
SIGNATURE:----------------------------
[解决办法]
顶爆炸...
[解决办法]
..........ding
[解决办法]
顶上去,楼主,我敬仰你!
[解决办法]
太强大了 顶楼主~~~
[解决办法]
顶
[解决办法]
太强悍了,狂顶~~~
[解决办法]
楼主太强大了
[解决办法]
强大,没有研究过这方面的
[解决办法]
[解决办法]
楼主你太强啦,能不能好人做到底给整个代码打个包发上来啊
[解决办法]
好,
[解决办法]
楼主你太强啦,能不能好人做到底给整个代码打个包发上来啊,打好包之后能不能回复一下这个emeil:
lyglary@126.com,我就立马去下,谢谢了
[解决办法]
准备持续关注
[解决办法]
mark
[解决办法]
强烈 支持,,,LZ 发出源码 大家研究!!!
改进。。做强做大!
[解决办法]
顶!
[解决办法]
顶呀
[解决办法]
顶一个
[解决办法]
顶顶更健康~~~~ :)
[解决办法]
up
[解决办法]
jf
[解决办法]
^_^
[解决办法]
[解决办法]
原始页面,,,代码 只在 前面几楼??后面 是否有补充?
[解决办法]
没办法,太热门,,回的人太多!!! 是在看不完,,,那么多页面!!!
[解决办法]
再次收藏
[解决办法]
不错,顶
[解决办法]
厉害。学习中。
[解决办法]
------解决方案--------------------
up...
[解决办法]
高人
[解决办法]
无图无真相。哈哈!
[解决办法]
[解决办法]
en...
[解决办法]
再看再顶
[解决办法]
学习啦
[解决办法]
收藏啦
[解决办法]
哈·· ··
[解决办法]
狠好的推荐
[解决办法]
......强!
[解决办法]
UP
[解决办法]
UP!
[解决办法]
顶
[解决办法]
up
[解决办法]
!
[解决办法]
这代码太帅了
[解决办法]
顶顶顶
[解决办法]
up
[解决办法]
mark~~~~~~~~~~
[解决办法]
public Bullet(Color BackColor, Tank Owner)
: base(BackColor, BackColor)
{
ObjBmp = new Bitmap(2, 2);
this.X = Owner.Postion.X;
this.Y = Owner.Postion.Y;
this.Dir = Owner.ObjDirection;
this.Owner = Owner;
if (Owner.GetType() == typeof(UserTank))
this.SumStep = 10000;
else
this.SumStep = 10;
this.Rate = 2;
}
子弹改强悍些多好
[解决办法]
顶顶更健康
[解决办法]
不错嘛
[解决办法]
学C#也有好久了,还是看不懂
[解决办法]
牛叉!!!学习
[解决办法]
膜拜~~~~~~~~~~
RZ
[解决办法]
很好,不过看不懂
[解决办法]
加上地图就更完美了
[解决办法]
帮顶~
------解决方案--------------------
it seems that very ..
[解决办法]
.
[解决办法]
好
[解决办法]
这样也可以啊!!!
[解决办法]
小咯咯,行啊,强!!!1
[解决办法]
Mark!
[解决办法]
UP
[解决办法]
.。。。好强劲
[解决办法]
[解决办法]
up
[解决办法]
不错啊!!!!
[解决办法]
mark
[解决办法]
牛人啊,
[解决办法]
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,是C++啊
[解决办法]
我们期末考试就是设计坦克大战,输了的就挂科,嗷嗷嗷,救命啊
[解决办法]
#9楼 得分:0回复于:2009-10-15 09:51:59太强大了 顶楼主~~~
[解决办法]
[解决办法]
[解决办法]
确实很强
小时候玩的坦克大战,好像敌我双方的子弹可能互相换消
当然还有更复杂的,比如说敌方有重型的,有跑得很快的....
[解决办法]
查了下sql 2000/2005/2008的联机文档都是
varchar优先级别比char高
#A $
#B $
#$
这个结果附合联机文档,而
#A $
#B $
# $
不附合联机文档说法
[解决办法]
mark
[解决办法]
有没有最新版本的代码打包下载啊
[解决办法]
如何让爆炸颗粒逐渐增大呢?
[解决办法]
接分
[解决办法]
顶一下`1
[解决办法]
支持大哥,继续跟~
[解决办法]
up
[解决办法]
偶顶你个肺!
[解决办法]
学习