Exemplo n.º 1
0
        /// <summary>
        /// Dieser Timer bestimmt das Intervall, ind dem das Event hindernisseErzeugen_Tick aufgerufen wird
        /// </summary>
        public void Start()
        {
            try
            {
                //Level und Score festlegen
                this.level = 20;
                this.score = 0;

                //Timer Einstellen und Event zum auswerten des Timer wird erstellt
                this.hindernisseErzeugen.Enabled  = true;
                this.hindernisseErzeugen.Interval = Speicher.Schwierigkeit;
                this.hindernisseErzeugen.Tick    += new EventHandler(this.hindernisseErzeugen_Tick);
                this.hindernisseErzeugen.Start();

                //Das Anfangsraumschiff wird festgelegt
                this.emptyRectangle.Height = 27;
                this.emptyRectangle.Width  = 80;
                this.raumschiff            = new Raumschiff(this.emptyBitmap, this.emptyRectangle, this.velocityRaumschiff, this.flag, this.flag);
                this.raumschiff.Bild();
                this.raumschiff.Setzen();
            }
            catch
            {
                MessageBox.Show("Das Spiel kann leider nicht gestartet werden. Versuchen sie einen Neustart!");
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// Konstruktor des Pause Formulars
 /// </summary>
 /// <param name="score"></param>
 /// <param name="spiellevel"></param>
 /// <param name="schiff"></param>
 /// <param name="musik"></param>
 /// <param name="manager"></param>
 public Pause(int score, int spiellevel, Raumschiff schiff, bool musik, Flugmanager manager)
 {
     this.InitializeComponent();
     this.punkte     = score;
     this.raumschiff = schiff;
     this.level      = spiellevel;
     this.sound      = musik;
     this.flugmanger = manager;
 }
Exemplo n.º 3
0
 /// <summary>
 /// Diese Event wird beim Mausdruck ausgelöst und ruft die Beam - Methode das Flugmanagers auf
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void pSpielflaeche_MouseClick(object sender, MouseEventArgs e)
 {
     if (e.Button == MouseButtons.Left)
     {
         //Übermalt das alte Raumschiff
         Raumschiff schiff2 = this.manager.Raumschiff;
         using (Graphics grafics = pSpielflaeche.CreateGraphics())
         {
             grafics.FillRectangle(Brushes.Black, schiff2.Rectangle);
         }
         schiff2 = null;
         //Weißt dem Raumschiff einen neuen Punkt zu
         this.manager.Beam(e.Location.X, e.Location.Y);
     }
 }
Exemplo n.º 4
0
        /// <summary>
        /// Diese Event ruft je nach Tastendruck verschiedenen Methoden auf
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Spiel_KeyDown(object sender, KeyEventArgs e)
        {
            if ((e.KeyCode == Keys.S) | (e.KeyCode == Keys.Down))
            {
                this.manager.RaumschiffAB();
            }

            else if ((e.KeyCode == Keys.W) | (e.KeyCode == Keys.Up))
            {
                this.manager.RaumschiffAUF();
            }

            else if ((e.KeyCode == Keys.A) | (e.KeyCode == Keys.Left))
            {
                this.manager.RaumschiffLinks();
            }

            else if ((e.KeyCode == Keys.D) | (e.KeyCode == Keys.Right))
            {
                this.manager.RaumschiffRechts();
            }

            else if (e.KeyCode == Keys.F)
            {
                this.manager.Schildaktivieren();
            }

            else if (e.KeyCode == Keys.C)
            {
                if (schusskontrolle)
                {
                    this.manager.Schießen();
                    this.schusskontrolle = false;
                    this.kontrolle.Start();
                }
            }

            else if (e.KeyCode == Keys.Escape)
            {
                Speicher.Schiff        = 1;
                Speicher.Schwierigkeit = 2000;
                MessageBox.Show("Das Spiel wird nun beendet!!!");
                this.Dispose(true);
            }

            else if (e.KeyCode == Keys.Space)
            {
                //Das Spiel wird pausiert und das Pause Menü aufgerufen
                Raumschiff schiff2 = this.manager.Raumschiff;
                using (Graphics grafics = this.pSpielflaeche.CreateGraphics())
                {
                    grafics.FillRectangle(Brushes.Black, this.pSpielflaeche.ClientRectangle);
                }
                schiff2 = null;
                Pause Pause = new Pause(this.manager.Score, this.manager.Level, this.manager.Raumschiff, musik, manager);
                Pause.ShowDialog(this);
            }

            else if (e.KeyCode == Keys.R)
            {
                Raumschiff schiff = this.manager.Raumschiff;
                Rectangle  bomb   = new Rectangle(schiff.Rectangle.X - 660, schiff.Rectangle.Y - 387, 1400, 800);
                this.manager.Krater(bomb);
                schiff = null;
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// Dieses Event zeichnet alle Objekte auf die Spielfläche und überprüft Kollisionen
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void zeichneAufPanel_Tick(object sender, EventArgs e)
        {
            try
            {
                //Ein Graphicsobjekt wird erstellt, das später wieder gelöscht wird
                using (Graphics grafics = pSpielflaeche.CreateGraphics())
                {
                    //Font zum einstellen der Schrift, der später wieder gelöscht wird
                    using (Font arial25Bold = new Font("Arial", 25, FontStyle.Bold))
                    {
                        //Eine Liste wird erzeugt; die der Liste Hindernisse im Flugmangager entspricht, welche die Hindernisse enthält, die horizontal bewegt werden
                        List <Flugkoerper> objekte_hori = manager.HindernisseHori;
                        //Eine Liste wird erzeugt; die der Liste Hindernisse im Flugmangager entspricht, welche die Hindernisse enthält, die horizontal vertikal werden
                        List <Flugkoerper> objekte_vert = manager.HindernisseVert;

                        List <Flugkoerper> schuesse = manager.Schuss;

                        //Ein raumschiff wird erzeugt
                        Raumschiff schiff = manager.Raumschiff;

                        //Ein Rechteck überzeichnet das Bild des Raumschiffs aus dem vorigen Zyklus
                        grafics.FillRectangle(Brushes.Black, schiff.Rectangle.X - 80, schiff.Rectangle.Y - 80, 240, 190);
                        //Das Raumschiff wird auf das Panel gezeichnet
                        grafics.DrawImageUnscaledAndClipped(schiff.Bitmap, schiff.Rectangle);

                        //Jedes Objekt der Liste der horizontalen Hindernisse wird gezeichnet
                        for (int i = 0; i < objekte_hori.Count(); i++)
                        {
                            //Ein Rechteck überzeichnet das Bild für jedes Hindernis aus dem vorigen Zyklus
                            grafics.FillRectangle(Brushes.Black, objekte_hori[i].Rectangle.X + objekte_hori[i].Rectangle.Width, objekte_hori[i].Rectangle.Y, objekte_hori[i].Velocity, objekte_hori[i].Rectangle.Height);
                            //Jedes Hinderniss wird auf das Panel gezeichnet
                            grafics.DrawImageUnscaledAndClipped(objekte_hori[i].Bitmap, objekte_hori[i].Rectangle);
                        }

                        //Falls die Schwierigkeit "Schwer" oder höher ist, gibt es auch vertikale Hindernisse
                        //Jedes Objekt der Liste der vertikalen Hindernisse wird gezeichnet
                        for (int i = 0; i < objekte_vert.Count(); i++)
                        {
                            //Ein Rechteck überzeichnet das Bild für jedes Hindernis aus dem vorigen Zyklus
                            grafics.FillRectangle(Brushes.Black, objekte_vert[i].Rectangle.X, objekte_vert[i].Rectangle.Y + objekte_vert[i].Rectangle.Height, objekte_vert[i].Rectangle.Width, objekte_vert[i].Velocity);
                            //Jedes Hinderniss wird auf das Panel gezeichnet
                            grafics.DrawImageUnscaledAndClipped(objekte_vert[i].Bitmap, objekte_vert[i].Rectangle);
                        }

                        //Zeichnet die SChüsse auf die Spielfläche
                        for (int i = 0; i < schuesse.Count(); i++)
                        {
                            grafics.FillRectangle(Brushes.Black, schuesse[i].Rectangle.X - 25, schuesse[i].Rectangle.Y, 10, 5);
                            grafics.DrawImageUnscaledAndClipped(schuesse[i].Bitmap, schuesse[i].Rectangle);
                        }
                        //Highscore wird auf Panel gezeichnet
                        grafics.FillRectangle(Brushes.Black, 110, 0, 110, 33);
                        grafics.DrawString("Score: " + this.manager.Score.ToString(), arial25Bold, Brushes.Red, 0, 0);
                        grafics.FillRectangle(Brushes.Black, 320, 0, 80, 33);
                        grafics.DrawString("Level: " + this.manager.Level, arial25Bold, Brushes.Red, 220, 0);
                        //Wenn das Level höher als neun ist, werden auch Schilder als Hindernisse eingeflogen
                        if (this.manager.Level >= 10)
                        {
                            //Zeigt die Anzahl der gesammelten Schilder an
                            grafics.FillRectangle(Brushes.Black, 640, 0, 100, 33);
                            grafics.DrawString("Schildkristalle: " + this.manager.Kristalle.ToString(), arial25Bold, Brushes.Red, 400, 0);
                        }

                        //Wenn das ausgewählte Schiff mindestens in der Stufe zwei ist
                        if (Speicher.Schiff > 3)
                        {
                            //Zeigt an ob das Schild aktiviert ist oder nicht
                            grafics.FillRectangle(Brushes.Black, 870, 0, 180, 33);
                            grafics.DrawString("Schild: " + this.manager.SchildStatus(), arial25Bold, Brushes.Red, 750, 0);
                            grafics.FillRectangle(Brushes.Black, 1255, 0, 90, 33);
                            grafics.DrawString("Munition: " + this.manager.Munition.ToString(), arial25Bold, Brushes.Red, 1100, 0);
                        }

                        //Wenn das Schiff auf Stufe drei ist
                        if (Speicher.Schiff == 6)
                        {
                            //Zeigt an, wie of gebeamt werden kann
                            grafics.FillRectangle(Brushes.Black, 1580, 0, 75, 33);
                            grafics.DrawString("Beamkristalle: " + this.manager.Beams.ToString(), arial25Bold, Brushes.Red, 1350, 0);
                            grafics.FillRectangle(Brushes.Black, 1800, 0, 90, 33);
                            grafics.DrawString("Bomben: " + this.manager.Bomben.ToString(), arial25Bold, Brushes.Red, 1650, 0);
                        }
                        grafics.DrawLine(Pens.Red, 0, 35, this.pSpielflaeche.Width, 35);
                        this.Achtung();

                        //Diese Flag beendet das Spiel oder lässt es laufen
                        if (Speicher.EndFlag)
                        {
                            Speicher.Schwierigkeit = 2000;
                            Speicher.Schiff        = 1;
                            Speicher.EndFlag       = false;
                            MessageBox.Show("Das Spiel wird nun beendet!!!");
                            this.Dispose(true);
                        }
                        //Bewegt die Hindernisse
                        this.manager.HindernisseBewegen();
                        this.raeumen++;
                        if (this.raeumen == 200)
                        {
                            this.raeumen = 0;
                            grafics.FillRectangle(Brushes.Black, 0, 35, this.ClientRectangle.Width, this.ClientRectangle.Height);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                //Falls das Spiel gar nicht funktioniert, wird es sofort geschlossen
                MessageBox.Show("Gravierender Spielfehler. Das Spiel muss leider geschlossen werden!");
                this.Dispose(true);
            }
        }