zoukankan      html  css  js  c++  java
  • 站立会议的内容(第七次)

    今天我们就是大概谈了一下改进计划,以下是更新后的form.cs代码

      1 using System;
      2 using System.Collections.Generic;
      3 using System.ComponentModel;
      4 using System.Data;
      5 using System.Drawing;
      6 using System.Linq;
      7 using System.Text;
      8 using System.Windows.Forms;
      9 using System.Xml;
     10 using System.Media;
     11 using PlayPlane_01.BLL;
     12 
     13 namespace PlayPlane_01
     14 {
     15     public partial class Form1 : Form
     16     {
     17         Plane plane;
     18 
     19         Timer t_draw;
     20 
     21         List<Enemy> enemy_lsit = new List<Enemy>();
     22         List<Bullet> bullet_lsit = new List<Bullet>();
     23         List<Explosion> explosion_list = new List<Explosion>();
     24         List<Reward> reward_list = new List<Reward>();
     25         int score = 0;
     26         int boom_count = 5;
     27         bool pause = false;
     28         Bitmap background;
     29 
     30         public Form1()
     31         {
     32             //this.SetStyle(ControlStyles.UserPaint, true);
     33             //this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景.
     34             //this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true); // 双缓冲
     35             this.StartPosition = FormStartPosition.CenterScreen;
     36             this.Load += new System.EventHandler(this.Form1_Load);
     37             this.MouseMove += new MouseEventHandler(Form1_MouseMove);
     38             this.MouseClick += new MouseEventHandler(Form1_MouseClick);
     39             this.KeyPress += new KeyPressEventHandler(Form1_KeyPress);
     40             InitializeComponent();
     41         }
     42 
     43         private void Form1_Load(object sender, EventArgs e)
     44         {
     45             //this.FormBorderStyle = FormBorderStyle.None;
     46             //this.WindowState = FormWindowState.Maximized;
     47             EntityFactory.InitFactory("resource/plane.xml");
     48             background = new Bitmap(Image.FromFile(@"resource/bg_02.jpg"));
     49             plane = EntityFactory.GenPlane("normal");
     50             this.Cursor.Dispose();
     51             Cursor.Position = new Point(plane.X + this.Location.X, plane.Y + this.Location.Y);
     52             t_draw = new Timer();
     53             t_draw.Interval = 20;
     54             send_interval = 100 / t_draw.Interval;
     55             block_interval = 260 / t_draw.Interval;
     56             reward_interval = 5000 / t_draw.Interval;
     57             t_draw.Tick += new EventHandler(t_draw_Tick);
     58             t_draw.Start();
     59         }
     60 
     61         void Form1_MouseClick(object sender, MouseEventArgs e)
     62         {
     63             if (!pause && e.Button == MouseButtons.Right)
     64             {
     65                 if (boom_count > 0)
     66                 {
     67                     boom_count--;
     68                     for (int i = 0; i < enemy_lsit.Count; i++)
     69                     {
     70                         //socre ++
     71                         if (enemy_lsit[i].Name == "small") score += 1000;
     72                         else if (enemy_lsit[i].Name == "mid") score += 6000;
     73                         else if (enemy_lsit[i].Name == "big") score += 25000;
     74                         //add to explosion
     75                         explosion_list.Add(EntityFactory.GenExplosion("small", enemy_lsit[i].X, enemy_lsit[i].Y));
     76 
     77                         new DXPlay(this, @"resource/BOMB3.wav").ThreadPlay();
     78                     }
     79                     enemy_lsit.Clear();
     80                 }
     81             }
     82         }
     83 
     84         void Form1_MouseMove(object sender, MouseEventArgs e)
     85         {
     86             if (!pause)
     87             {
     88                 plane.X = e.X;
     89                 plane.Y = e.Y;
     90             }
     91         }
     92 
     93         void Form1_KeyPress(object sender, KeyPressEventArgs e)
     94         {
     95             if (e.KeyChar == ' ')
     96             {
     97                 pause = !pause;
     98                 if (pause)
     99                 {
    100                     this.Cursor = new Cursor (Cursors.Arrow.CopyHandle());
    101                 }
    102                 else
    103                 {
    104                     this.Cursor.Dispose();
    105                     Cursor.Position = new Point(plane.X + this.Location.X, plane.Y + this.Location.Y);
    106                 }
    107             }
    108             /*else if (e.KeyChar == 27)
    109             {
    110                 this.WindowState = FormWindowState.Normal;
    111             }
    112             else if (e.KeyChar == '
    ')
    113             {
    114                 this.WindowState = FormWindowState.Maximized;
    115             }*/
    116         }
    117 
    118         int block_time = 1;
    119         int block_interval = 0;
    120         int send_time = 0;
    121         int send_interval = 0;
    122         int reward_time = 1;
    123         int reward_interval = 0;
    124         int rwd_bullet_stnTime = 0;
    125 
    126         int backY = 800;
    127 
    128         //DateTime dis = DateTime.Now;
    129 
    130         private void t_draw_Tick(object sender, EventArgs e)
    131         {
    132             //Console.Write("
       ALLTime--->" + (DateTime.Now - dis));
    133             if (pause)
    134             {
    135                 this.CreateGraphics().DrawString("暂 停", new Font("微软雅黑", 22), Brushes.Red, new PointF(this.Width / 2 - 30, this.Height / 2 - 50));
    136                 return;
    137             }
    138 
    139             //////////////////////////////////////////////////////////////////
    140             ///////////////////                  /////////////////////////////
    141             //////////////////       Create     //////////////////////////////
    142             /////////////////                  ///////////////////////////////
    143             //////////////////////////////////////////////////////////////////
    144 
    145             /*------send bullets-----*/
    146             if (send_time > send_interval)
    147             {
    148                 if (rwd_bullet_stnTime > 0)
    149                 {
    150                     bullet_lsit.Add(EntityFactory.GenBullet("blue", plane.X - 6, plane.Y - 50));
    151                     bullet_lsit.Add(EntityFactory.GenBullet("blue", plane.X + 6, plane.Y - 50));
    152                     rwd_bullet_stnTime -= t_draw.Interval * send_interval;
    153                 }
    154                 else
    155                 {
    156                     bullet_lsit.Add(EntityFactory.GenBullet("red", plane.X, plane.Y - 50));
    157                 }
    158                 new DXPlay(this, @"resource/shoot.wav").ThreadPlay();
    159                 send_time = 0;
    160             }
    161 
    162             /*------generate enemy-----*/
    163             if (block_time % block_interval == 0)
    164             {
    165                 int speedBase = 0;
    166                 if (block_interval < 2)
    167                     speedBase = 1;
    168                 if (block_interval < 5)
    169                     speedBase = 2;
    170                 else if (block_interval < 10)
    171                     speedBase = 1;
    172              
    173                 if (block_time % (block_interval * 20) == 0)
    174                 {
    175                     enemy_lsit.Add(EntityFactory.GenEnemy("big",speedBase));
    176                 }
    177                 else if (block_time % (block_interval * 10) == 0)
    178                 {
    179                     enemy_lsit.Add(EntityFactory.GenEnemy("mid", speedBase));
    180                 }
    181                 else
    182                 {
    183                     enemy_lsit.Add(EntityFactory.GenEnemy("small", speedBase));
    184                 }
    185             }
    186 
    187             /*-----reward-----*/
    188             if (reward_time == reward_interval)
    189             {
    190                 if (new Random().Next(10000) % 2 == 0)
    191                 {
    192                     reward_list.Add(EntityFactory.GenReward("bullet_add", new Random().Next(50, this.Width - 50), 0));
    193                 }
    194                 else
    195                 {
    196                     reward_list.Add(EntityFactory.GenReward("boom_add", new Random().Next(50, this.Width - 50), 0));
    197                 }
    198                 reward_time = 0;
    199             }
    200 
    201             send_time++;
    202             block_time++;
    203             reward_time++;
    204 
    205             //////////////////////////////////////////////////////////////////
    206             ///////////////////                  /////////////////////////////
    207             //////////////////       Judge      //////////////////////////////
    208             /////////////////                  ///////////////////////////////
    209             //////////////////////////////////////////////////////////////////
    210 
    211             /*-----plane level up-----*/
    212             if (send_interval>0&&score > plane.Level * plane.Level * 50000)
    213             {
    214                 plane.LevelUp();
    215                 send_interval--;
    216             }
    217 
    218             /*-----enemy lv up-----*/
    219             if (block_interval > 1 && block_time % 300 == 300-1)
    220             {
    221                 block_interval--;
    222             }
    223 
    224             /*-----enemy crash-----*/
    225             for (int i = 0; i < enemy_lsit.Count; i++)
    226             {
    227                 for (int j = 0; j < bullet_lsit.Count; j++)
    228                 {
    229                     if (Math.Abs(bullet_lsit[j].X - enemy_lsit[i].X) < (bullet_lsit[j].Width + enemy_lsit[i].Width) / 2 && Math.Abs(bullet_lsit[j].Y - enemy_lsit[i].Y) < (bullet_lsit[j].Height + enemy_lsit[i].Height) / 2)
    230                     {
    231                         enemy_lsit[i].HP--;
    232 
    233                         if (enemy_lsit[i].HP == 0)//explose
    234                         {
    235                             //socre ++
    236                             if (enemy_lsit[i].Name == "small") score += 1000;
    237                             else if (enemy_lsit[i].Name == "mid") score += 6000;
    238                             else if (enemy_lsit[i].Name == "big") score += 25000;
    239                             //add to explosion
    240                             explosion_list.Add(EntityFactory.GenExplosion("small", enemy_lsit[i].X, enemy_lsit[i].Y));
    241 
    242                             new DXPlay(this, @"resource/explosion.wav").ThreadPlay();
    243 
    244                             //remove both
    245                             enemy_lsit.Remove(enemy_lsit[i]);
    246                             bullet_lsit.Remove(bullet_lsit[j]);
    247                         }
    248                         else
    249                         {
    250                             //g.FillRectangle(Brushes.Red,new Rectangle(bullet_lsit[j].X,bullet_lsit[j].Y-bullet_lsit[j].Width/2,30,5));
    251                             bullet_lsit.Remove(bullet_lsit[j]);
    252                         }
    253                         break;
    254                     }
    255                 }
    256             }
    257 
    258             /*-----get reward-----*/
    259             for (int i = 0; i < reward_list.Count; i++)
    260             {
    261                 if (Math.Abs(plane.X - reward_list[i].X) < (plane.Width + reward_list[i].Width) / 2 && Math.Abs(plane.Y - reward_list[i].Y) < (plane.Height + reward_list[i].Height) / 2)
    262                 {
    263                     if (reward_list[i].Name == "bullet_add")
    264                     {
    265                         rwd_bullet_stnTime += reward_list[i].StnTimes;
    266                     }
    267                     else if (reward_list[i].Name == "boom_add")
    268                     {
    269                         boom_count++;
    270                     }
    271                     reward_list.Remove(reward_list[i]);
    272                 }
    273             }
    274 
    275             /*-----plane crash-----*/
    276             for (int i = 0; i < enemy_lsit.Count; i++)
    277             {
    278                 bool isCrashed = false;
    279                 if (Math.Abs(plane.X - enemy_lsit[i].X) < (plane.Width / 4 + enemy_lsit[i].Width) / 2 && Math.Abs(plane.Y - enemy_lsit[i].Y) < (plane.Height - 30 + enemy_lsit[i].Height) / 2)
    280                 {
    281                     isCrashed = true;
    282                 }
    283                 if (isCrashed)
    284                 {
    285                     t_draw.Stop();
    286                     this.CreateGraphics().DrawString("Game Over", new Font("微软雅黑", 22), Brushes.Red, new PointF(this.Width / 2 - 100, this.Height / 2 - 50));
    287                     //enemy_lsit.Remove(enemy_lsit[i]);
    288                     return;
    289                 }
    290             }

  • 相关阅读:
    系统CLOCK 频率 C代码查看范例
    LINUX C 文件读写范例
    linux 打印机 打印机支持工作组 openprinting
    问题记录
    初步了解profile文件
    内核中的HZ 及延迟等
    LINUX_System_Call_Quick_Reference
    Linux基础篇 六 (bash shell基础 (vi /etc/shells))
    Android调用平台功能具体技巧分享
    男人35岁前要做好的几件事
  • 原文地址:https://www.cnblogs.com/BLZ1/p/5503312.html
Copyright © 2011-2022 走看看