读书人

坦克大战补遗-爆炸效果解决办法

发布时间: 2012-03-13 11:21:12 作者: rapoo

坦克大战补遗-爆炸效果
原帖
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...
[解决办法]
高人
[解决办法]
无图无真相。哈哈!
[解决办法]

探讨
引用:
原始页面,,,代码 只在 前面几楼??后面 是否有补充?


没有,所有代码就是原帖里的前3楼,而10楼就是前3楼的源代码的打包下载地址
加上这贴的爆炸,就是全部

[解决办法]
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

[解决办法]
偶顶你个肺!
[解决办法]
学习

读书人网 >C#

热点推荐