From 5d0d69f33ffbf958bfbe29a4f563e3ae73c79661 Mon Sep 17 00:00:00 2001 From: ADato88 Date: Wed, 19 Jan 2022 13:38:18 +0100 Subject: [PATCH] neue SpielerModel Classe mit Namen und Punkte sowie neuer Test zur Ergebnisberechnung --- .../ViewModel/SchereSteinPapierEchseSpock.cs | 51 +++++++++++++++++++ .../SchereSteinPapierEchseSpockModel.cs | 2 + .../MiniGames/Shared/Models/SpielerModel.cs | 14 +++++ .../SchereSteinPapierEchseSpockTest.cs | 38 ++++++++++++++ 4 files changed, 105 insertions(+) create mode 100644 BlazorSolution/MiniGames/Shared/Models/SpielerModel.cs diff --git a/BlazorSolution/MiniGames/Client/ViewModel/SchereSteinPapierEchseSpock.cs b/BlazorSolution/MiniGames/Client/ViewModel/SchereSteinPapierEchseSpock.cs index e871c94..4c2fbee 100644 --- a/BlazorSolution/MiniGames/Client/ViewModel/SchereSteinPapierEchseSpock.cs +++ b/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; + } } } diff --git a/BlazorSolution/MiniGames/Shared/Models/SchereSteinPapierEchseSpockModel.cs b/BlazorSolution/MiniGames/Shared/Models/SchereSteinPapierEchseSpockModel.cs index 39d4741..2421a44 100644 --- a/BlazorSolution/MiniGames/Shared/Models/SchereSteinPapierEchseSpockModel.cs +++ b/BlazorSolution/MiniGames/Shared/Models/SchereSteinPapierEchseSpockModel.cs @@ -8,6 +8,8 @@ namespace MiniGames.Shared.Models { public class SchereSteinPapierEchseSpockModel { + public List SpielerListe = new(); + public string[] hand = new[] { "Stein", diff --git a/BlazorSolution/MiniGames/Shared/Models/SpielerModel.cs b/BlazorSolution/MiniGames/Shared/Models/SpielerModel.cs new file mode 100644 index 0000000..6477a20 --- /dev/null +++ b/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; } + } +} diff --git a/BlazorSolution/MiniGamesTests/SchereSteinPapierEchseSpockTest.cs b/BlazorSolution/MiniGamesTests/SchereSteinPapierEchseSpockTest.cs index d2c3609..6f45795 100644 --- a/BlazorSolution/MiniGamesTests/SchereSteinPapierEchseSpockTest.cs +++ b/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); + } } }