private void UebungsspielVorbereiten() { this.spielPhase = SpielPhase.WeltErzeugen; this.aktuelleLevelNummer = 0; this.WeltErzeugen.Center(this); this.WeltErzeugen.Show(); }
public Main() { this.InitializeComponent(); this.Audio.AlleAudiosVorbereiten(); this.Goodies.AlleGoodiesVorbereiten(); this.levelBild = new Bitmap(this.Width, this.Height, PixelFormat.Format24bppRgb); this.herzAnzeige = new Herzen(this, this.Goodies); var spielerNamen = SpielerNamen.ZufallsNamenspaar; this.spielerEins = new Spieler(this, this.levelBild) { Name = spielerNamen.Item1, Farbe = Brushes.YellowGreen, X = this.StandardSpielerEinsX, Y = Main.spielerBasisHoehe }; this.spielerZwei = new Spieler(this, this.levelBild) { Name = spielerNamen.Item2, Farbe = Brushes.MistyRose, X = this.StandardSpielerZweiX, Y = Main.spielerBasisHoehe }; this.spielPhase = SpielPhase.StartBildschirm; this.aktuelleLevelNummer = 0; }
private void MissionFortsetzen() { this.spielPhase = SpielPhase.WeltErzeugen; ++this.aktuelleLevelNummer; this.spielPhase = SpielPhase.WeltWirdErzeugt; this.ErzeugeDieWelt(); this.LevelSpielen(); }
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 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 ErzeugeDieWelt() { this.WeltErzeugen.Hide(); this.ScorchGore.Hide(); this.DerZornDerSanften.Hide(); this.Copyright.Hide(); this.SpielerNamenZeigen(); this.SchussEingabefeld.Left = this.Width / 2 - this.SchussEingabefeld.Width / 2; this.ausgangsZustand = new Bitmap(this.Width, this.Height, PixelFormat.Format24bppRgb); this.BackgroundImage = this.levelBild; LevelBeschreibung levelBeschreibung; if (this.aktuelleLevelNummer == 0) { /* berg-steilheit und rauhheit und höhenprofil mit zufallszahlen bestimmen */ levelBeschreibung = new LevelBeschreibung { BergZufallszahl = MultiplayerCloud.BergZufallszahl, BergMinHoeheProzent = this.MindesthoeheProzent.Value, BergMaxHoeheProzent = this.HoechstHoeheProzent.Value, BergRauhheitProzent = this.RauheitsfaktorProzent.Value }; } else { levelBeschreibung = LevelSequenzierer.ErzeugeLevelBeschreibung(this.aktuelleLevelNummer); this.LevelNamenZeigen(levelBeschreibung); } using (var zeichenFlaeche = Graphics.FromImage(this.levelBild)) { LevelZeichner.Zeichne(this, this.levelBild, levelBeschreibung, zeichenFlaeche); /* nur zum test für fallenlassen / fallschirm! */ if (this.aktuelleLevelNummer == 0) { var goodie = new Goodie(this, this.levelBild, this.Goodies, GoodieWirkung.Chrom_Dreifachschuss) { X = 166 }; goodie.FallenLassen(zeichenFlaeche); } } this.Refresh(); this.spielPhase = SpielPhase.SpielerFallenRundeBeginnt; this.AusgangszustandSichern(); this.spielerEins.Positionieren(levelBeschreibung.SpielerPosition1, this.StandardSpielerEinsX); this.SpielerFallen(this.spielerEins); this.spielerZwei.Positionieren(levelBeschreibung.SpielerPosition2, this.StandardSpielerZweiX); this.SpielerFallen(this.spielerZwei); }
private void MissionVorbereiten() { this.spielPhase = SpielPhase.WeltErzeugen; #if DEBUG this.aktuelleLevelNummer = 3; #else this.aktuelleLevelNummer = 1; #endif this.spielPhase = SpielPhase.WeltWirdErzeugt; this.ErzeugeDieWelt(); this.LevelSpielen(); }
private bool SpielerWurdeGetroffen(Treffer schussErgebnis) { this.Audio.GeraeuschAbspielen(Geraeusche.SchussEinschlag); new Explosion(Color.FromArgb(new Random().Next(int.MaxValue)), 175).Noobsplosion(this, this.levelBild, this.ausgangsZustand, schussErgebnis.EinschlagsKoordinateX, schussErgebnis.EinschlagsKoordinateY); var getroffenerSpieler = schussErgebnis.Ergebnis == SchussErgebnis.SelbstErschossen ? this.dranSeiender : this.Gegner; getroffenerSpieler.Schaden(this.dranSeiender.Waffe.SchadensPunkte); schussErgebnis.GetroffenerSpieler = getroffenerSpieler; schussErgebnis.ObsiegenderSpieler = object.ReferenceEquals(getroffenerSpieler, this.dranSeiender) ? this.Gegner : this.dranSeiender; using (var zeichenFlaeche = Graphics.FromImage(this.levelBild)) { this.herzAnzeige.Zeichnen( this, zeichenFlaeche, object.ReferenceEquals(getroffenerSpieler, this.spielerEins) ? getroffenerSpieler : null, object.ReferenceEquals(getroffenerSpieler, this.spielerZwei) ? getroffenerSpieler : null ); } this.Refresh(); if (getroffenerSpieler.Tot) { using (var weiterMachen = this.TurnierModus ? (Form) new LevelUebergang(schussErgebnis) : (Form) new UebungNocheinmal(schussErgebnis)) { switch (weiterMachen.ShowDialog(this)) { case DialogResult.OK: this.spielPhase = SpielPhase.WeltErzeugen; return(true); case DialogResult.Retry: this.spielPhase = SpielPhase.WeltErzeugen; return(false); case DialogResult.Abort: this.spielPhase = SpielPhase.StartBildschirm; return(false); } } } else { return(true); } return(false); }
private async void RundeVorbereiten() { this.NameDesDranSeienden.Text = $"{ (object.ReferenceEquals(this.spielerEins,this.dranSeiender) ? "← " : string.Empty) }{ this.dranSeiender.Name }{ (object.ReferenceEquals(this.spielerZwei,this.dranSeiender) ? " →" : string.Empty) }"; this.Winkel.Text = this.Ladung.Text = string.Empty; if (this.meinSpieler == null || this.dranSeiender == this.meinSpieler) { this.spielPhase = SpielPhase.Schusseingabe; this.SchussEingabefeld.Show(); this.Winkel.Focus(); } else { /* warten, bis der andere spieler online was gemacht hat */ this.spielPhase = SpielPhase.AufOnlineSchussWarten; this.AufGegnerWarten.Show(); var schussEingabe = await this.MultiplayerCloud.AufGegnerSchussWarten(); this.AufGegnerWarten.Hide(); this.RundeAustragen(schussEingabe); } }
private void KampfStarten() { this.spielPhase = SpielPhase.WeltWirdErzeugt; this.ErzeugeDieWelt(); this.LevelSpielen(); }