From a184e9a5310ff68104741ff8edddfa8b69b0db05 Mon Sep 17 00:00:00 2001 From: Felix Detig Date: Wed, 16 Feb 2022 00:53:25 +0100 Subject: [PATCH 1/6] =?UTF-8?q?Punkte=20des=20Gewinners=20werden=20um=201?= =?UTF-8?q?=20erh=C3=B6ht?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MiniGames/Client/ViewModel/TicTacToe.cs | 13 +++++++++++++ BlazorSolution/MiniGamesTests/TicTacToeTest.cs | 14 ++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs b/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs index 514d129..52dbd99 100644 --- a/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs +++ b/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs @@ -11,6 +11,12 @@ namespace MiniGames.Client.ViewModel this.Model = model; } + public SpielerModel[] Spieler + { + get { return Model.Spieler; } + set { Model.Spieler = value; } + } + public TicTacToeBrett Brett { get { return Model.Brett; } @@ -36,12 +42,19 @@ namespace MiniGames.Client.ViewModel public void SpielerInput(int posIndex) { + if (GewinnerIndex >= 0) return; + if (Brett.Set(posIndex, AktiverSpielerIndex)) { SpielerWechsel(); } GewinnerIndex = Brett.Gewinner(); + + if (GewinnerIndex >= 0) + { + Spieler[GewinnerIndex].Punkte++; + } } public void SpielerWechsel() diff --git a/BlazorSolution/MiniGamesTests/TicTacToeTest.cs b/BlazorSolution/MiniGamesTests/TicTacToeTest.cs index 9a43703..c9223b0 100644 --- a/BlazorSolution/MiniGamesTests/TicTacToeTest.cs +++ b/BlazorSolution/MiniGamesTests/TicTacToeTest.cs @@ -105,10 +105,16 @@ namespace MiniGamesTests [Theory] [InlineData(0, 0, 3, 1, 4, 2)] [InlineData(0, 3, 0, 4, 1, 5, 2)] + [InlineData(1, 0, 6, 3, 4, 6, 1, 2)] public void SpielerInput_GewinnerTest(int gewinnerIndex, params int[] inputs) { // arrange TicTacToe spiel = StandardSpiel(); + spiel.AktiverSpielerIndex = 0; + spiel.Spieler[0].Punkte = 0; + spiel.Spieler[1].Punkte = 1; + int erwartetePunkteSpieler1 = (gewinnerIndex == 0) ? 1 : 0; + int erwartetePunkteSpieler2 = (gewinnerIndex == 1) ? 2 : 1; int erwarteterGewinnerIndex = gewinnerIndex; // act @@ -119,6 +125,8 @@ namespace MiniGamesTests // assert Assert.Equal(spiel.GewinnerIndex, erwarteterGewinnerIndex); + Assert.Equal(spiel.Spieler[0].Punkte, erwartetePunkteSpieler1); + Assert.Equal(spiel.Spieler[1].Punkte, erwartetePunkteSpieler2); } [Fact] @@ -127,6 +135,10 @@ namespace MiniGamesTests // arrange TicTacToe spiel = StandardSpiel(); spiel.AktiverSpielerIndex = 0; + spiel.Spieler[0].Punkte = 0; + spiel.Spieler[1].Punkte = 0; + int erwartetePunkteSpieler1 = 0; + int erwartetePunkteSpieler2 = 0; int erwarteterGewinnerIndex = -1; // act @@ -139,6 +151,8 @@ namespace MiniGamesTests // assert Assert.Equal(spiel.GewinnerIndex, erwarteterGewinnerIndex); + Assert.Equal(spiel.Spieler[0].Punkte, erwartetePunkteSpieler1); + Assert.Equal(spiel.Spieler[1].Punkte, erwartetePunkteSpieler2); } } } From 3a74be47a7e2834dcb9fbea1c8f7f31d90ead389 Mon Sep 17 00:00:00 2001 From: Felix Detig Date: Wed, 16 Feb 2022 01:10:44 +0100 Subject: [PATCH 2/6] Refactored TicTacToe.SpielerInput --- .../MiniGames/Client/ViewModel/TicTacToe.cs | 29 +++++++++++++++---- .../MiniGames/Shared/Models/TicTacToeModel.cs | 10 +++++++ 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs b/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs index 52dbd99..f69cfa5 100644 --- a/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs +++ b/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs @@ -40,9 +40,20 @@ namespace MiniGames.Client.ViewModel } } + public SpielerModel GewinnerSpieler + { + get { return Model.GewinnerSpieler; } + set { Model.GewinnerSpieler = value; } + } + + public bool Fertig() + { + return Model.Fertig(); + } + public void SpielerInput(int posIndex) { - if (GewinnerIndex >= 0) return; + if (Fertig()) return; if (Brett.Set(posIndex, AktiverSpielerIndex)) { @@ -50,16 +61,22 @@ namespace MiniGames.Client.ViewModel } GewinnerIndex = Brett.Gewinner(); - - if (GewinnerIndex >= 0) - { - Spieler[GewinnerIndex].Punkte++; - } + PunkteBerechnung(); } public void SpielerWechsel() { AktiverSpielerIndex = 1 - AktiverSpielerIndex; } + + public void PunkteBerechnung() + { + SpielerModel gewinner = GewinnerSpieler; + + if (gewinner != null) + { + gewinner.Punkte++; + } + } } } diff --git a/BlazorSolution/MiniGames/Shared/Models/TicTacToeModel.cs b/BlazorSolution/MiniGames/Shared/Models/TicTacToeModel.cs index 895e815..4e21acf 100644 --- a/BlazorSolution/MiniGames/Shared/Models/TicTacToeModel.cs +++ b/BlazorSolution/MiniGames/Shared/Models/TicTacToeModel.cs @@ -12,5 +12,15 @@ namespace MiniGames.Shared.Models public int AktiverSpielerIndex { get; set; } = 0; public int GewinnerIndex { get; set; } = -1; public TicTacToeBrett Brett { get; set; } + public SpielerModel GewinnerSpieler + { + get { return (GewinnerIndex >= 0) ? Spieler[GewinnerIndex] : null; } + set { GewinnerIndex = Array.IndexOf(Spieler, value); } + } + + public bool Fertig() + { + return GewinnerIndex >= 0 || Brett.Voll(); + } } } From db425a8a77d99d4bd35fd1c4d83b39d3724e2506 Mon Sep 17 00:00:00 2001 From: Felix Detig Date: Wed, 16 Feb 2022 01:12:58 +0100 Subject: [PATCH 3/6] =?UTF-8?q?=C3=9Cberfl=C3=BCssige=20'using'-Statements?= =?UTF-8?q?=20entfernt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BlazorSolution/MiniGames/Shared/Models/TicTacToeBrett.cs | 4 ---- BlazorSolution/MiniGames/Shared/Models/TicTacToeModel.cs | 4 ---- 2 files changed, 8 deletions(-) diff --git a/BlazorSolution/MiniGames/Shared/Models/TicTacToeBrett.cs b/BlazorSolution/MiniGames/Shared/Models/TicTacToeBrett.cs index 68d1b0d..f5d72e5 100644 --- a/BlazorSolution/MiniGames/Shared/Models/TicTacToeBrett.cs +++ b/BlazorSolution/MiniGames/Shared/Models/TicTacToeBrett.cs @@ -1,8 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace MiniGames.Shared.Models { diff --git a/BlazorSolution/MiniGames/Shared/Models/TicTacToeModel.cs b/BlazorSolution/MiniGames/Shared/Models/TicTacToeModel.cs index 4e21acf..3476504 100644 --- a/BlazorSolution/MiniGames/Shared/Models/TicTacToeModel.cs +++ b/BlazorSolution/MiniGames/Shared/Models/TicTacToeModel.cs @@ -1,8 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace MiniGames.Shared.Models { From 57c3625058dfb92390205c17263b26985eb9377e Mon Sep 17 00:00:00 2001 From: Felix Detig Date: Wed, 16 Feb 2022 01:15:33 +0100 Subject: [PATCH 4/6] ITicTacToe-Interface aktualisiert --- BlazorSolution/MiniGames/Client/ViewModel/ITicTacToe.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/BlazorSolution/MiniGames/Client/ViewModel/ITicTacToe.cs b/BlazorSolution/MiniGames/Client/ViewModel/ITicTacToe.cs index f4d6804..ac1119b 100644 --- a/BlazorSolution/MiniGames/Client/ViewModel/ITicTacToe.cs +++ b/BlazorSolution/MiniGames/Client/ViewModel/ITicTacToe.cs @@ -2,6 +2,9 @@ { public interface ITicTacToe { + public bool Fertig(); void SpielerInput(int posIndex); + public void SpielerWechsel(); + public void PunkteBerechnung(); } } From be465ca87fc82bb023ebdbd082fffb6a344866c5 Mon Sep 17 00:00:00 2001 From: Felix Detig Date: Wed, 16 Feb 2022 01:19:02 +0100 Subject: [PATCH 5/6] =?UTF-8?q?TicTacToeBrett.Get=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BlazorSolution/MiniGames/Shared/Models/TicTacToeBrett.cs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/BlazorSolution/MiniGames/Shared/Models/TicTacToeBrett.cs b/BlazorSolution/MiniGames/Shared/Models/TicTacToeBrett.cs index f5d72e5..d19f6e2 100644 --- a/BlazorSolution/MiniGames/Shared/Models/TicTacToeBrett.cs +++ b/BlazorSolution/MiniGames/Shared/Models/TicTacToeBrett.cs @@ -59,6 +59,14 @@ namespace MiniGames.Shared.Models return true; } + public int Get(int pos) + { + int x = pos % 3; + int y = pos / 3; + + return Felder[x, y]; + } + public bool Set(int pos, int wert) { int x = pos % 3; From 3944a6cfb1920d961140b9711721e1aa2fa017dc Mon Sep 17 00:00:00 2001 From: Felix Detig Date: Wed, 16 Feb 2022 01:25:18 +0100 Subject: [PATCH 6/6] Refactored TicTacToeBrett.Gleich und TicTacToeBrett.Voll --- .../MiniGames/Shared/Models/TicTacToeBrett.cs | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/BlazorSolution/MiniGames/Shared/Models/TicTacToeBrett.cs b/BlazorSolution/MiniGames/Shared/Models/TicTacToeBrett.cs index d19f6e2..0fd3322 100644 --- a/BlazorSolution/MiniGames/Shared/Models/TicTacToeBrett.cs +++ b/BlazorSolution/MiniGames/Shared/Models/TicTacToeBrett.cs @@ -8,6 +8,11 @@ namespace MiniGames.Shared.Models int[,] Felder; + public int Groesse + { + get { return Felder.GetLength(0) * Felder.GetLength(1); } + } + public TicTacToeBrett() { Felder = new[,] @@ -45,14 +50,11 @@ namespace MiniGames.Shared.Models public bool Gleich(TicTacToeBrett anderes) { - for (int i = 0; i < 3; i++) + for (int i = 0; i < Groesse; i++) { - for (int j = 0; j < 3; j++) + if (Get(i) != anderes.Get(i)) { - if (Felder[i, j] != anderes.Felder[i, j]) - { - return false; - } + return false; } } @@ -90,14 +92,11 @@ namespace MiniGames.Shared.Models public bool Voll() { - for (int i = 0; i < 3; i++) + for (int i = 0; i < Groesse; i++) { - for (int j = 0; j < 3; j++) + if (Get(i) == LEER) { - if (Felder[i, j] == LEER) - { - return false; - } + return false; } }