7 Commits

  1. 3
      BlazorSolution/MiniGames/Client/ViewModel/ITicTacToe.cs
  2. 30
      BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs
  3. 35
      BlazorSolution/MiniGames/Shared/Models/TicTacToeBrett.cs
  4. 14
      BlazorSolution/MiniGames/Shared/Models/TicTacToeModel.cs
  5. 14
      BlazorSolution/MiniGamesTests/TicTacToeTest.cs

3
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();
}
}

30
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; }
@ -34,19 +40,43 @@ 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 (Fertig()) return;
if (Brett.Set(posIndex, AktiverSpielerIndex))
{
SpielerWechsel();
}
GewinnerIndex = Brett.Gewinner();
PunkteBerechnung();
}
public void SpielerWechsel()
{
AktiverSpielerIndex = 1 - AktiverSpielerIndex;
}
public void PunkteBerechnung()
{
SpielerModel gewinner = GewinnerSpieler;
if (gewinner != null)
{
gewinner.Punkte++;
}
}
}
}

35
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
{
@ -12,6 +8,11 @@ namespace MiniGames.Shared.Models
int[,] Felder;
public int Groesse
{
get { return Felder.GetLength(0) * Felder.GetLength(1); }
}
public TicTacToeBrett()
{
Felder = new[,]
@ -49,20 +50,25 @@ 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;
}
}
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;
@ -86,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;
}
}

14
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
{
@ -12,5 +8,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();
}
}
}

14
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);
}
}
}
Loading…
Cancel
Save