Browse Source

neue SpielerModel Classe mit Namen und Punkte sowie neuer Test zur Ergebnisberechnung

feature/scheresteinpapier
ADato88 2 years ago
parent
commit
5d0d69f33f
  1. 51
      BlazorSolution/MiniGames/Client/ViewModel/SchereSteinPapierEchseSpock.cs
  2. 2
      BlazorSolution/MiniGames/Shared/Models/SchereSteinPapierEchseSpockModel.cs
  3. 14
      BlazorSolution/MiniGames/Shared/Models/SpielerModel.cs
  4. 38
      BlazorSolution/MiniGamesTests/SchereSteinPapierEchseSpockTest.cs

51
BlazorSolution/MiniGames/Client/ViewModel/SchereSteinPapierEchseSpock.cs

@ -7,6 +7,40 @@ namespace MiniGames.Client.ViewModel
{
SchereSteinPapierEchseSpockModel RegelModel = new();
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])))
@ -91,5 +125,22 @@ namespace MiniGames.Client.ViewModel
{
return RegelModel.hand[index];
}
public static SchereSteinPapierEchseSpockModel PunkteBerechnung(SchereSteinPapierEchseSpockModel spieleModel, string ergebnis)
{
switch (ergebnis)
{
case "Gewonnen":
spieleModel.SpielerListe[0].Punkte += 1;
break;
case "Verloren":
spieleModel.SpielerListe[1].Punkte += 1;
break;
default:
break;
}
return spieleModel;
}
}
}

2
BlazorSolution/MiniGames/Shared/Models/SchereSteinPapierEchseSpockModel.cs

@ -8,6 +8,8 @@ namespace MiniGames.Shared.Models
{
public class SchereSteinPapierEchseSpockModel
{
public List<SpielerModel> SpielerListe = new();
public string[] hand = new[]
{
"Stein",

14
BlazorSolution/MiniGames/Shared/Models/SpielerModel.cs

@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MiniGames.Shared.Models
{
public class SpielerModel
{
public string SpielerName { get; set; }
public int Punkte { get; set; }
}
}

38
BlazorSolution/MiniGamesTests/SchereSteinPapierEchseSpockTest.cs

@ -23,6 +23,24 @@ namespace MiniGamesTests
private const string verloren = "Verloren";
private const string unentschieden = "Unentschieden";
private void GetSampleModels()
{
SpieleModel.SpielerListe = new()
{
new SpielerModel
{
SpielerName = "Andrej",
Punkte = 0
},
new SpielerModel
{
SpielerName = "CPU",
Punkte = 0
}
};
}
[Theory]
[InlineData(stein, stein, unentschieden)]
[InlineData(stein, schere, gewonnen)]
@ -141,5 +159,25 @@ namespace MiniGamesTests
//assert
Assert.Equal(_erwartet, erg);
}
[Theory]
[InlineData(0, 1, gewonnen)]
[InlineData(0, 0, verloren)]
[InlineData(1, 1, verloren)]
[InlineData(1, 0, gewonnen)]
public void ErgebnisBerechnungTest(int player, int punkte, string ergebnis)
{
GetSampleModels();
//arrange
int _player = player;
int _punkte = punkte;
string _ergebnis = ergebnis;
//act
SchereSteinPapierEchseSpockModel endPunktzahl = SchereSteinPapierEchseSpock.PunkteBerechnung(SpieleModel, _ergebnis);
//assert
Assert.Equal(_punkte, endPunktzahl.SpielerListe[_player].Punkte);
}
}
}
Loading…
Cancel
Save