Exemple #1
0
        private void RundeAustragen(SchussEingabe schussEingabe)
        {
            /* den schuss ausführen und schauen (ob) was getroffen wurde */
            this.spielPhase = SpielPhase.SpielrundeAktiv;
            var schussErgebnis = this.Schiessen(schussEingabe);

            /* wenn keiner getroffen wurde, rollen tauschen,
             * der andere spieler ist dran */
            if (schussErgebnis.Ergebnis == SchussErgebnis.GegnerGekillt || schussErgebnis.Ergebnis == SchussErgebnis.SelbstErschossen)
            {
                if (this.SpielerWurdeGetroffen(schussErgebnis))
                {
                    if (this.spielPhase == SpielPhase.WeltErzeugen)
                    {
                        if (this.TurnierModus)
                        {
                            schussErgebnis.GetroffenerSpieler.WiederAuferstehen();
                            this.BeginInvoke(new Action(() => { this.MissionFortsetzen(); }));
                            return;
                        }
                        else
                        {
                            return;
                        }
                    }
                }
                else
                {
                    this.ZurueckZumHauptmenu();
                    return;
                }
            }
            else
            {
                /* falls ein berg getroffen wurde, kann es sein, dass der andere spieler
                 * den boden unter sich verloren hat, und tiefer fällt */
                if (schussErgebnis.Ergebnis == SchussErgebnis.BergGetroffen)
                {
                    Audio.GeraeuschAbspielen(Geraeusche.SchussEinschlag);
                    new Explosion(Color.FromArgb(new Random().Next(int.MaxValue)), 50).Noobsplosion(this, this.levelBild, this.ausgangsZustand, schussErgebnis.EinschlagsKoordinateX, schussErgebnis.EinschlagsKoordinateY);
                }
            }

            this.AusgangszustandWiederherstellen();
            using (var zeichenFlaeche = Graphics.FromImage(this.levelBild))
            {
                this.dranSeiender.Zeichnen(zeichenFlaeche);
                this.Gegner.Zeichnen(zeichenFlaeche);
            }

            this.SpielerFallen(this.Gegner);
            this.SpielerFallen(this.dranSeiender);
            this.Refresh();

            /* spieler wechseln sich jetzt ab */
            this.dranSeiender = this.Gegner;
            this.RundeVorbereiten();
        }
Exemple #2
0
 private void HerzAnzeigeAktualisieren(Graphics zeichenFlaeche, Spieler vonSpieler)
 {
     this.herzAnzeige.Zeichnen(
         this,
         zeichenFlaeche,
         object.ReferenceEquals(vonSpieler, this.spielerEins) ? this.spielerEins : null,
         object.ReferenceEquals(vonSpieler, this.spielerZwei) ? this.spielerZwei : null
         );
 }
Exemple #3
0
        private async void StartCloud_Click(object sender, EventArgs e)
        {
            this.spielPhase = SpielPhase.AufMitspielerWarten;
            this.WeltErzeugen.Hide();
            this.SpielerNamenZeigen();
            this.CloudVerbindung.Show();
            var mitspielerGefunden = false;

            do
            {
                var warteZustand = new LevelBeschreibung
                {
                    MitspielerStatus    = MitspielerFindenStatus.Wartend,
                    BergZufallszahl     = this.MultiplayerCloud.BergZufallszahl,
                    BergMinHoeheProzent = this.MindesthoeheProzent.Value,
                    BergMaxHoeheProzent = this.HoechstHoeheProzent.Value,
                    BergRauhheitProzent = this.RauheitsfaktorProzent.Value
                };

                warteZustand = await this.MultiplayerCloud.MitspielerFinden(warteZustand);

                switch (warteZustand.MitspielerStatus)
                {
                case MitspielerFindenStatus.HeloGesagt:
                    this.MitspielerFindenFortschritt.Value = 0;
                    break;

                case MitspielerFindenStatus.Wartend:
                    this.MitspielerFindenFortschritt.Value = new Random().Next(this.MitspielerFindenFortschritt.Maximum);
                    await Task.Delay(1500);

                    break;

                case MitspielerFindenStatus.AndererNimmtBeiMirTeil:
                    mitspielerGefunden = true;
                    this.meinSpieler   = this.spielerEins;
                    break;

                case MitspielerFindenStatus.IchNehmeBeiAnderemTeil:
                    /* in dem fall müssen wir die werte vom anderen übernehmen,
                     * damit wir das gleiche level haben wir er */
                    mitspielerGefunden = true;
                    this.meinSpieler   = this.spielerZwei;
                    this.MultiplayerCloud.BergZufallszahl = warteZustand.BergZufallszahl;
                    this.MindesthoeheProzent.Value        = warteZustand.BergMinHoeheProzent;
                    this.HoechstHoeheProzent.Value        = warteZustand.BergMaxHoeheProzent;
                    this.RauheitsfaktorProzent.Value      = warteZustand.BergRauhheitProzent;
                    break;
                }
            } while (!mitspielerGefunden);

            this.CloudVerbindung.Hide();
            this.KampfStarten();
        }
Exemple #4
0
 private void LevelSpielen()
 {
     this.dranSeiender = this.spielerEins;
     this.RundeVorbereiten();
 }