예제 #1
0
        //game loop tick
        public void GameLoop_Tick(object sender, EventArgs e)
        {
            //check timer
            eTime = timeWatch.ElapsedMilliseconds;

            // MOVE - Looks like Joe is moving
            if (rightArrowDown)
            {
                foreach (character ai in aiList)
                {
                    ai.Move("left", 2);
                }
                foreach (character chasm in chasmList)
                {
                    chasm.Move("left", 2);
                }
            }

            if (spaceDown)
            {
                // create a laser that moves towards the ai since always right
                if (bulletcounter > 10)
                {
                    bullets = new character(bBrush, playerX, playerY + 15, 15, 5, 0);
                    bulletList.Add(bullets);
                    bulletcounter = 0;
                    playershootsound.Play();
                }
            }

            // decide if the ai should shoot back
            if (attackcounter > 50 && aiList[0].x <= 750)
            {
                bullets = new character(bBrush, aiList[0].x, aiList[0].y + 15, 15, 5, 0);
                aiBList.Add(bullets);
                attackcounter = 0;
            }

            // shoot and remove bullets made by the player
            if (bulletList.Count > 0)
            {
                // Move the bullets until they are off screen
                foreach (character bullets in bulletList)
                {
                    bullets.Shoot("right", 9);

                    if (bullets.x > this.Width)
                    {
                        bulletList.Remove(bullets);
                        break;
                    }
                }
            }

            // shoot and remove the bullets made by the ai
            if (aiBList.Count > 0)
            {
                enemyshootsound.Play();
                // Move the bullets until they are off screen
                foreach (character bullets in aiBList)
                {
                    bullets.Shoot("left", 5);

                    if (bullets.x < 0)
                    {
                        aiBList.Remove(bullets);
                        break;
                    }
                }
            }

            // Make the ai boys moves slower towards the player every tick
            foreach (character ai in aiList)
            {
                ai.Move("left", 1);
            }

            // COLLISION - between objects in game
            Rectangle playerRec = new Rectangle(joe.x, joe.y, joe.width, joe.length);

            // ai checks collisions with player
            foreach (character ai in aiList)
            {
                Rectangle aiRec = new Rectangle(ai.x, ai.y, ai.width, ai.length);
                // player collison
                if (playerRec.IntersectsWith(aiRec))
                {
                    if (hitcontrol > 50)
                    {
                        score = score - 100;
                        joe.health--;
                        hitcontrol = 0;
                    }
                    break;
                }
            }

            // bullet collison creates rectangles for the bullets and checks against ai
            foreach (character bullets in bulletList)
            {
                Rectangle bRec = new Rectangle(bullets.x, bullets.y, 4, 20);

                foreach (character ai in aiList)
                {
                    Rectangle aiRec = new Rectangle(ai.x, ai.y, 30, 40);
                    if (aiRec.IntersectsWith(bRec))
                    {
                        enemydeadsound.Play();
                        ai.health--;
                        score = score + 25;
                        removecontrol++;
                        break;
                    }
                }
            }

            // ai bullet collison with player
            foreach (character bullets in aiBList)
            {
                Rectangle bRec = new Rectangle(bullets.x, bullets.y, 4, 20);
                if (playerRec.IntersectsWith(bRec))
                {
                    //   playerdeadsound.Play();
                    joe.health--;
                    score = score - 50;
                    airemovecontrol++;
                    break;
                }
            }

            // see if joe dies
            if (joe.health <= 0)
            {
                GameOver go = new GameOver();
                GameLoop.Enabled = false;
                Form f = this.FindForm();
                f.Controls.Remove(this);
                go.Location = new Point((f.Width - go.Width) / 2, (f.Height - go.Height) / 2);
                //add game over screen
                f.Controls.Add(go);
            }

            //checking to see if ai needs to get hit
            foreach (character ai in aiList)
            {
                if (ai.health <= 0)
                {
                    aiList.Remove(ai);
                    break;
                }
            }

            //pause screen escdown
            if (escDown)
            {
                GameLoop.Stop();
                rightArrowDown = false;
                spaceDown      = false;
                escDown        = false;
                DialogResult result = PauseForm.Show();
                if (result == DialogResult.Cancel)
                {
                    GameLoop.Enabled = true;
                }

                else if (result == DialogResult.Abort)
                {
                    Application.Exit();
                }
            }

            // jumping code
            if (upArrowDown)
            {
                if (presscontrol > 55)
                {
                    playerjumpsound.Play();
                    jumpcounter  = 1;
                    presscontrol = 0;
                }
            }

            // if jumpcounter should be used, use it
            if (jumpcounter > 0)
            {
                joe.Jump(3, 0);
                jumpcounter++;
                if (jumpcounter >= 20)
                {
                    jumpcounter = 0;
                    downcounter = 1;
                    joe.Jump(0, 0);
                }
            }

            // if downcounter should be use, use it
            if (downcounter > 0)
            {
                joe.Jump(0, 3);
                downcounter++;
                if (downcounter >= 20)
                {
                    jumpcounter = 0;
                    downcounter = 0;
                    joe.Jump(0, 0);
                }
            }

            // do see if the bullet should be removed
            if (removecontrol > 0)
            {
                bulletList.Remove(bullets);
                removecontrol = 0;
            }
            if (airemovecontrol > 0)
            {
                aiBList.Remove(bullets);
                airemovecontrol = 0;
            }

            // find the current time for the timer
            tTime = (sTime - eTime) / 1000;

            //add every tick for shot  and press timing
            bulletcounter++;
            attackcounter++;
            presscontrol++;
            hitcontrol++;

            // get random number

            //Redraw the screen
            Refresh();
        }
예제 #2
0
 //creating the dialog result to show the pauseForm
 public static DialogResult Show()
 {
     pauseForm = new PauseForm();
     pauseForm.ShowDialog();
     return(buttonResult);
 }