예제 #1
0
        private void resetGame()
        {
            Size body          = new Size(75, 30);
            Size gun           = new Size(38, 7);
            int  ground_Height = 100;

            ground_Rect = new Rectangle(new Point(0, map_Rect.Height - ground_Height),
                                        new Size(map_Rect.Width, ground_Height));
            int x  = body.Width / 2;
            int x2 = map_Rect.Width - body.Width / 2;
            int y  = map_Rect.Height - (ground_Height + body.Height * 3 / 4);
            int y2 = map_Rect.Height - (ground_Height + body.Height * 3 / 4);

            tank_Player = new Tank(new Point(x, y), new Point(x + body.Width / 8, y), new Rectangle(new Point(x - body.Width / 2, y - body.Height / 4), body),
                                   new Rectangle(new Point(x, y - gun.Height / 2), gun),
                                   new Rectangle(new Point(0, 0), new Size(map_Rect.Width, map_Rect.Height - ground_Height)));
            tank_Player2 = new Tank(new Point(x2, y2), new Point(x2 - body.Width / 8, y2), new Rectangle(new Point(x2 - body.Width / 2, y2 - body.Height / 4), body),
                                    new Rectangle(new Point(x2, y2 - gun.Height / 2), gun),
                                    new Rectangle(new Point(0, 0), new Size(map_Rect.Width, map_Rect.Height - ground_Height)));
            // tank_Player2.deg = 135;

            /*
             * Size body = new Size(100, 20);
             * Size turret = new Size(40, 20);
             * int ground_Height = 100;
             * ground_Rect = new RectangleF(new Point(0, (int)map_Rect.Height - ground_Height),
             *  new Size((int)map_Rect.Width, ground_Height));
             * int x = body.Width / 2;
             * int y = (int)map_Rect.Height - (ground_Height + body.Height + turret.Height / 2 + 1);
             * tank_Player = new Tank(new Point(x, y), new Rectangle(new Point(x - body.Width / 2, y + turret.Height / 2), body),
             *  new Rectangle(new Point(x - turret.Width / 2, y - turret.Height / 2), turret),
             *  new Rectangle(new Point(0, 0), new Size((int)map_Rect.Width, (int)map_Rect.Height - ground_Height)));
             */
            gauge_Player          = new ProgressBar();
            gauge_Player.Step     = 1;
            gauge_Player.Size     = new Size(300, 20);
            gauge_Player.Style    = ProgressBarStyle.Continuous;
            gauge_Player_Pos      = new Point(50, this.ClientRectangle.Height - 80);
            gauge_Player.Location = gauge_Player_Pos;
            gauge_Player.Visible  = true;
            this.Controls.Add(gauge_Player);

            gauge_Player2          = new ProgressBar();
            gauge_Player2.Step     = 1;
            gauge_Player2.Size     = new Size(300, 20);
            gauge_Player2.Style    = ProgressBarStyle.Continuous;
            gauge_Player_Pos2      = new Point(50, this.ClientRectangle.Height - 80);
            gauge_Player2.Location = gauge_Player_Pos2;
            gauge_Player2.Visible  = true;
            this.Controls.Add(gauge_Player2);

            hp_Player           = new ProgressBar();
            hp_Player.Size      = new Size(75, 15);
            hp_Player.Style     = ProgressBarStyle.Continuous;
            hp_Player_Pos       = new Point(x - body.Width / 2, y - (tank_Player.cannon_Len + hp_Player.Height));
            hp_Player.Location  = hp_Player_Pos;
            hp_Player.ForeColor = Color.Blue;
            hp_Player.Maximum   = 2000;
            hp_Player.Value     = 2000;
            hp_Player.Visible   = true;
            this.Controls.Add(hp_Player);


            hp_Player2           = new ProgressBar();
            hp_Player2.Size      = new Size(75, 15);
            hp_Player2.Style     = ProgressBarStyle.Continuous;
            hp_Player_Pos2       = new Point(x2 - body.Width / 2, y2 - (tank_Player2.cannon_Len + hp_Player2.Height));
            hp_Player2.Location  = hp_Player_Pos2;
            hp_Player2.ForeColor = Color.Blue;
            hp_Player2.Maximum   = 2000;
            hp_Player2.Value     = 2000;
            hp_Player2.Visible   = true;
            this.Controls.Add(hp_Player2);

            Size terrain_Size = new Size(120, 40);

            terrain_Rect = new Rectangle(new Point(this.ClientRectangle.Width / 2 - terrain_Size.Width / 2, this.ClientRectangle.Height - (ground_Height + terrain_Size.Height)),
                                         terrain_Size);
        }
예제 #2
0
        private void operateTank(Tank tank_Obj, ProgressBar gauge, Point gauge_Pos)
        {
            int    speed;
            double deg;
            bool   bDraw;

            while (bRunning)
            {
                speed = 5;
                Point tank_Body_Pos = tank_Obj.body_Rect.Location;
                Point tank_Gun_Pos  = tank_Obj.gun_Rect.Location;
                if (tank_Obj.L)
                {
                    tank_Obj.center.X  -= speed;
                    tank_Obj.gun_Axis.X = tank_Obj.center.X + tank_Obj.body_Rect.Width / 8;
                    tank_Body_Pos.X    -= speed;
                    tank_Gun_Pos.X     -= speed;
                    if (tank_Obj.center.X < tank_Obj.body_Rect.Width / 2)
                    {
                        tank_Obj.center.X   = tank_Obj.body_Rect.Width / 2;
                        tank_Obj.gun_Axis.X = tank_Obj.center.X + tank_Obj.body_Rect.Width / 8;
                        tank_Body_Pos.X     = 0;
                        tank_Gun_Pos.X      = tank_Obj.body_Rect.Width / 2;
                    }
                }
                else if (tank_Obj.R)
                {
                    tank_Obj.center.X  += speed;
                    tank_Obj.gun_Axis.X = tank_Obj.center.X + tank_Obj.body_Rect.Width / 8;
                    tank_Body_Pos.X    += speed;
                    tank_Gun_Pos.X     += speed;
                    if (tank_Obj.gun_Axis.X + tank_Obj.gun_Rect.Width > terrain_Rect.Left)
                    {
                        tank_Obj.center.X   = terrain_Rect.Left - tank_Obj.gun_Rect.Width;
                        tank_Obj.gun_Axis.X = tank_Obj.center.X + tank_Obj.body_Rect.Width / 8;
                        tank_Body_Pos.X     = tank_Obj.center.X - tank_Obj.gun_Rect.Width;
                        tank_Gun_Pos.X      = tank_Obj.map_Rect.Width - tank_Obj.body_Rect.Width / 2;
                    }
                    if (tank_Obj.center.X > tank_Obj.map_Rect.Width - tank_Obj.body_Rect.Width / 2)
                    {
                        tank_Obj.center.X   = tank_Obj.map_Rect.Width - tank_Obj.body_Rect.Width / 2;
                        tank_Obj.gun_Axis.X = tank_Obj.center.X + tank_Obj.body_Rect.Width / 8;
                        tank_Body_Pos.X     = tank_Obj.map_Rect.Width - tank_Obj.body_Rect.Width;
                        tank_Gun_Pos.X      = tank_Obj.map_Rect.Width - tank_Obj.body_Rect.Width / 2;
                    }
                }
                tank_Obj.body_Rect.Location = tank_Body_Pos;
                tank_Obj.gun_Rect.Location  = tank_Gun_Pos;
                gauge_Pos.X    = tank_Obj.center.X - tank_Obj.body_Rect.Width / 2;
                gauge.Location = gauge_Pos;
                deg            = 1;
                if (tank_Obj.U)
                {
                    tank_Obj.deg -= deg;
                    if (tank_Obj.deg < 0)
                    {
                        tank_Obj.deg = 0;
                    }
                }
                else if (tank_Obj.D)
                {
                    tank_Obj.deg += deg;
                    if (tank_Obj.deg > 90)
                    {
                        tank_Obj.deg = 90;
                    }
                }
                bDraw = tank_Obj.U || tank_Obj.D || tank_Obj.L || tank_Obj.R || bRunning;
                for (int i = 0; i < tank_Obj.bullets.Count; ++i)
                {
                    bDraw |= true;

                    /*
                     * if (!tank_Obj.bullets[i].hit)
                     * {
                     *  bDraw |= true;
                     * }
                     */
                }
                if (bDraw)
                {
                    draw();
                }
                if (tank_Obj.U || tank_Obj.D || tank_Obj.L || tank_Obj.R)
                {
                    if (server_connected)
                    {
                        server.SendMessage("t " + tank_Obj.center.X.ToString() + " " +
                                           tank_Obj.center.Y.ToString() + " " +
                                           tank_Obj.gun_Axis.X.ToString() + " " +
                                           tank_Obj.gun_Axis.Y.ToString() + " " +
                                           tank_Obj.deg.ToString() + " " +
                                           tank_Obj.gun_Rect.X.ToString() + " " +
                                           tank_Obj.gun_Rect.Y.ToString() + " " +
                                           hp_Player.Value.ToString());
                    }
                    else if (client_connected)
                    {
                        client.SendMessage("t " + tank_Obj.center.X.ToString() + " " +
                                           tank_Obj.center.Y.ToString() + " " +
                                           tank_Obj.gun_Axis.X.ToString() + " " +
                                           tank_Obj.gun_Axis.Y.ToString() + " " +
                                           tank_Obj.deg.ToString() + " " +
                                           tank_Obj.gun_Rect.X.ToString() + " " +
                                           tank_Obj.gun_Rect.Y.ToString() + " " +
                                           hp_Player.Value.ToString());
                    }
                }
                Thread.Sleep(20);
            }
        }