using MiniGames.Shared.Models; using System; namespace MiniGames.Client.ViewModel { public class SchereSteinPapierEchseSpock : ISchereSteinPapierEchseSpock { public SchereSteinPapierEchseSpockModel RegelModel { get; set; } = new(); public void SpielerErstellen(string name) { RegelModel.SpielerListe = new() { new SpielerModel { SpielerName = name, Punkte = 0 }, new SpielerModel { SpielerName = "CPU", Punkte = 0 } }; } public void SpielerInput(string spielerHand) { string erg = HandAuswahl(spielerHand); RegelModel = PunkteBerechnung(RegelModel, erg); } public string HandAuswahl(string spielerHand) { Random rnd = new(); const string stein = "Stein"; const string schere = "Schere"; const string papier = "Papier"; const string echse = "Echse"; const string spock = "Spock"; string cpuHand = CPUHand(rnd.Next(0, 5)); string erg = ""; switch (spielerHand) { case stein: erg = SpielerStein(stein, cpuHand); break; case schere: erg = SpielerSchere(schere, cpuHand); break; case papier: erg = SpielerPapier(papier, cpuHand); break; case echse: erg = SpielerEchse(echse, cpuHand); break; case spock: erg = SpielerSpock(spock, cpuHand); break; } return erg; } public string SpielerStein(string spielerHand, string gegnerHand) { if (spielerHand.Equals(RegelModel.hand[0]) && (gegnerHand.Equals(RegelModel.hand[1]) || gegnerHand.Equals(RegelModel.hand[3]))) { return RegelModel.erg[0]; } else if (spielerHand.Equals(RegelModel.hand[0]) && (gegnerHand.Equals(RegelModel.hand[2]) || gegnerHand.Equals(RegelModel.hand[4]))) { return RegelModel.erg[1]; } else { return RegelModel.erg[2]; } } public string SpielerSchere(string spielerHand, string gegnerHand) { if (spielerHand.Equals(RegelModel.hand[1]) && (gegnerHand.Equals(RegelModel.hand[2]) || gegnerHand.Equals(RegelModel.hand[3]))) { return RegelModel.erg[0]; } else if (spielerHand.Equals(RegelModel.hand[1]) && (gegnerHand.Equals(RegelModel.hand[0]) || gegnerHand.Equals(RegelModel.hand[4]))) { return RegelModel.erg[1]; } else { return RegelModel.erg[2]; } } public string SpielerPapier(string spielerHand, string gegnerHand) { if (spielerHand.Equals(RegelModel.hand[2]) && (gegnerHand.Equals(RegelModel.hand[0]) || gegnerHand.Equals(RegelModel.hand[4]))) { return RegelModel.erg[0]; } else if (spielerHand.Equals(RegelModel.hand[2]) && (gegnerHand.Equals(RegelModel.hand[1]) || gegnerHand.Equals(RegelModel.hand[3]))) { return RegelModel.erg[1]; } else { return RegelModel.erg[2]; } } public string SpielerEchse(string spielerHand, string gegnerHand) { if (spielerHand.Equals(RegelModel.hand[3]) && (gegnerHand.Equals(RegelModel.hand[2]) || gegnerHand.Equals(RegelModel.hand[4]))) { return RegelModel.erg[0]; } else if (spielerHand.Equals(RegelModel.hand[3]) && (gegnerHand.Equals(RegelModel.hand[0]) || gegnerHand.Equals(RegelModel.hand[1]))) { return RegelModel.erg[1]; } else { return RegelModel.erg[2]; } } public string SpielerSpock(string spielerHand, string gegnerHand) { if (spielerHand.Equals(RegelModel.hand[4]) && (gegnerHand.Equals(RegelModel.hand[0]) || gegnerHand.Equals(RegelModel.hand[1]))) { return RegelModel.erg[0]; } else if (spielerHand.Equals(RegelModel.hand[4]) && (gegnerHand.Equals(RegelModel.hand[2]) || gegnerHand.Equals(RegelModel.hand[3]))) { return RegelModel.erg[1]; } else { return RegelModel.erg[2]; } } public string CPUHand(int index) { return RegelModel.hand[index]; } public static SchereSteinPapierEchseSpockModel PunkteBerechnung(SchereSteinPapierEchseSpockModel spieleModel, string ergebnis) { switch (ergebnis) { case "Gewonnen": spieleModel.SpielerListe[0].Punkte += 1; spieleModel.ergebnisAnzeige = "Gewonnen!"; break; case "Verloren": spieleModel.SpielerListe[1].Punkte += 1; spieleModel.ergebnisAnzeige = "Verloren!"; break; default: spieleModel.ergebnisAnzeige = "Unentschieden!"; break; } return spieleModel; } } }