Continous Integration in der Praxis Gruppenarbeit
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

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;
}
}
}