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(); }
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 ); }
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(); }
private void LevelSpielen() { this.dranSeiender = this.spielerEins; this.RundeVorbereiten(); }