You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
173 lines
5.7 KiB
173 lines
5.7 KiB
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;
|
|
}
|
|
}
|
|
}
|