The steplayer page WORKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKQKKKKKKKKKKKKKKKKKKKKKKK (you see q ?)
continuous-integration/drone/push Build is failing Details

test_old_branch
Jérémy Mouyon 11 months ago
parent 3bd2d79300
commit 617b9a9ce8

@ -50,47 +50,75 @@ namespace QwirkleClassLibrary.Games
protected virtual void OnEndOfGame(EndOfGameNotifiedEventArgs args)
=> EndOfGameNotified?.Invoke(this, args);
/// <summary>
/// Adds a player in the game if the game is not running, if the name is correct, if the game is not full and if the name is not already taken.
/// </summary>
/// <param name="playerTag"></param>
/// <returns>boolean to check it</returns>
public bool AddPlayerInGame(string? playerTag)
public bool AddPlayerInGame(List<string> PlayersTag)
{
if (string.IsNullOrWhiteSpace(playerTag))
for (int i = PlayersTag.Count - 1; i >= 0; i--)
{
if (string.IsNullOrWhiteSpace(PlayersTag[i]))
{
PlayersTag.RemoveAt(i);
}
}
if (PlayersTag.Count <= 1 || PlayersTag.Count > 4)
{
OnPlayerNotified(new AddPlayerNotifiedEventArgs("ERROR : The name is null or white space."));
PlayersTag.Clear();
OnPlayerNotified(new AddPlayerNotifiedEventArgs("ERROR : It takes a minimum of 2 players and a maximum of 4 players to start a game."));
return false;
}
for (int i = PlayersTag.Count - 1; i >= 0; i--)
{
if (!CheckPlayerTag(PlayersTag, i))
{
PlayersTag.RemoveAt(i);
return false;
}
}
if (GameRunning)
foreach (var tag in PlayersTag)
{
OnPlayerNotified(new AddPlayerNotifiedEventArgs("ERROR : The game is running."));
Player pl = CreatePlayer(tag);
players.Add(pl);
scoreBoard.Add(pl, 0);
}
OnPlayerNotified(new AddPlayerNotifiedEventArgs("Players were correctly added."));
return true;
}
public bool CheckPlayerTag(List<string> PlayersTag, int pos)
{
if (string.IsNullOrWhiteSpace(PlayersTag[pos]))
{
OnPlayerNotified(new AddPlayerNotifiedEventArgs("ERROR with " + (pos + 1) + " entry : The name is null or white space."));
return false;
}
if (players.Count >= 4)
if (GameRunning)
{
OnPlayerNotified(new AddPlayerNotifiedEventArgs("ERROR : The game is full."));
OnPlayerNotified(new AddPlayerNotifiedEventArgs("ERROR with " + (pos + 1) + " entry : The game is running."));
return false;
}
foreach (var p in players)
for(int i=0; i<PlayersTag.Count; i++)
{
if (p.NameTag == playerTag)
if (i == pos)
{
OnPlayerNotified(new AddPlayerNotifiedEventArgs("ERROR : Name alreay taken"));
continue;
}
if (PlayersTag[i] == PlayersTag[pos])
{
OnPlayerNotified(new AddPlayerNotifiedEventArgs("ERROR with " + (pos+1) + " entry : Name alreay taken"));
return false;
}
}
Player pl = CreatePlayer(playerTag);
players.Add(pl);
scoreBoard.Add(pl, 0);
OnPlayerNotified(new AddPlayerNotifiedEventArgs("Player was correctly added"));
return true;
}
@ -111,7 +139,7 @@ namespace QwirkleClassLibrary.Games
/// </summary>
/// <returns>Board</returns>
public Board? GetBoard() { return board; }
/// <summary>
/// Returns the tile bag of the game
/// </summary>
@ -240,7 +268,7 @@ namespace QwirkleClassLibrary.Games
OnNextPlayer(new NextPlayerNotifiedEventArgs(players[0]));
return players[0].NameTag;
}
throw new ArgumentException("Game is not running");
}
@ -386,7 +414,7 @@ namespace QwirkleClassLibrary.Games
return true;
}
/// <summary>
/// Extension of IsMoveCorrect to check if the tiles are on the same line
/// </summary>
@ -481,7 +509,7 @@ namespace QwirkleClassLibrary.Games
return false;
}
}
if (!CheckTilesInLine(cellUsed, b, x, y))
{
@ -494,11 +522,11 @@ namespace QwirkleClassLibrary.Games
OnPlaceTile(new PlaceTileNotifiedEventArgs(t, " : You can't place a tile that isn't adjacent to another one !"));
return false;
}
return true;
}
/// <summary>
/// Main method to get the score of the player after he played his turn
/// </summary>
@ -512,14 +540,14 @@ namespace QwirkleClassLibrary.Games
{
return 0;
}
int score = cellsPlayed.Count;
if (cellsPlayed.Count == 6)
{
score += 6;
}
int cellsX = cellsPlayed[0].GetX;
int cellsY = cellsPlayed[0].GetY;
@ -531,7 +559,7 @@ namespace QwirkleClassLibrary.Games
{
cellsX = -1;
}
else if (cellsY != cell.GetY && cellsY != -1)
{
cellsY = -1;
@ -566,7 +594,7 @@ namespace QwirkleClassLibrary.Games
public int CalculateAdjacentScore(Cell cell, Board b, ReadOnlyCollection<Cell> cellsPlayed, int cellsX, int cellsY)
{
int score = 0;
var surroundingCells = new[]
{
b.GetCell(cell.GetX + 1, cell.GetY),
@ -574,20 +602,20 @@ namespace QwirkleClassLibrary.Games
b.GetCell(cell.GetX, cell.GetY + 1),
b.GetCell(cell.GetX, cell.GetY - 1)
};
foreach (var adjacentCell in surroundingCells)
{
if (adjacentCell?.GetTile == null || cellsPlayed.Contains(adjacentCell))
{
continue;
}
int dx = adjacentCell.GetX - cell.GetX;
int dy = adjacentCell.GetY - cell.GetY;
score += CalculateLineScore(cell, dx, dy, b, cellsX, cellsY, cellsPlayed.Count);
}
return score;
}
@ -623,7 +651,7 @@ namespace QwirkleClassLibrary.Games
if (dx != 0 && cellsY != -1 && i + nbCellsPlayed == 6 || dy != 0 && cellsX != -1 && i + nbCellsPlayed == 6)
{
score += 6;
}
}
score++;
}
@ -635,7 +663,7 @@ namespace QwirkleClassLibrary.Games
return score;
}
/// <summary>
/// Returns the list of the positions of the players who still have tiles in their bag

@ -1,4 +1,5 @@
using QwirkleClassLibrary.Boards;
using QwirkleClassLibrary.Events;
using QwirkleClassLibrary.Games;
using QwirkleClassLibrary.Players;
using QwirkleClassLibrary.Tiles;
@ -17,28 +18,23 @@ static void AddPlayers(Game game)
NotificationClass nc = new NotificationClass();
game.PlayerAddNotified += nc.NotificationPlayerAdd;
List<string> playerstag = [];
while (game.PlayerList.Count < 4)
{
Write("Enter player tag : ");
string? playerTag = ReadLine();
string? tag = ReadLine();
game.AddPlayerInGame(playerTag);
playerstag.Add(tag!);
Write("Do you want to add another player ? (y/n) : ");
string? answer = ReadLine();
if (answer == "n" && game.PlayerList.Count >= 2)
if (answer == "n" && game.AddPlayerInGame(playerstag))
{
break;
}
if (answer == "n" && game.PlayerList.Count < 2)
{
ForegroundColor = ConsoleColor.Red;
WriteLine();
WriteLine("ERROR : You must have at least 2 players !");
ResetColor();
}
}
}

@ -14,6 +14,7 @@ namespace Qwirkle
MainPage = new AppShell();
Routing.RegisterRoute(nameof(SetPlayers), typeof(SetPlayers));
Routing.RegisterRoute(nameof(Gameboard), typeof(Gameboard));
}

@ -26,8 +26,6 @@
InfoClicked="OnInfoClicked"
/>
<!-- <controls:ButtonShadow Text="{Binding button2.Text}"/> -->
<controls:ButtonShadow Text="Leaderboard"/>
<controls:ButtonShadow Text="Rules"/>

@ -46,16 +46,15 @@ public partial class SetPlayers : ContentPage
{
game.PlayerAddNotified += Game_PlayerAddNotified;
string entry1 = Entry1.TextIn!;
string entry2 = Entry2.TextIn!;
string entry3 = Entry3.TextIn!;
string entry4 = Entry4.TextIn!;
DisplayAlert("Game notification", entry1 + "\n" + entry2 + "\n" + entry3 + "\n" + entry4, "Ok ! Lets's go !");
List<string> playerstag = [Entry1.TextIn!, Entry2.TextIn!, Entry3.TextIn!, Entry3.TextIn!];
if (game.AddPlayerInGame(playerstag))
{
Navigation.PushAsync(new Gameboard());
}
game.PlayerAddNotified -= Game_PlayerAddNotified;
game.AddPlayerInGame(entry1);
game.AddPlayerInGame(entry2);
game.AddPlayerInGame(entry3);
game.AddPlayerInGame(entry4);
}
private void Game_PlayerAddNotified(object? sender, QwirkleClassLibrary.Events.AddPlayerNotifiedEventArgs args)

@ -8,33 +8,30 @@ namespace TestBase;
public class TestGame
{
[Theory]
[InlineData(true, false, "testt")]
[InlineData(false, false, "testt")]
[InlineData(false, true, "testt")]
public void Test_GameAddPlayerIngame(bool result, bool gamestate, string p)
[InlineData(true, false, "test", "test1")]
[InlineData(false, false, "test", "test1")]
[InlineData(false, true, "test", "test1")]
public void Test_GameAddPlayerIngame(bool result, bool gamestate, string p1, string p2)
{
Game game = new Game();
List<string> players = [p1, p2];
if (!result)
{
game.AddPlayerInGame(p);
Assert.False(game.AddPlayerInGame(p));
game.AddPlayerInGame(players);
Assert.False(game.AddPlayerInGame(players));
}
else
{
Assert.True(game.AddPlayerInGame(p));
Assert.True(game.AddPlayerInGame(players));
}
if (gamestate)
{
game.StartGame();
Assert.False(game.AddPlayerInGame(p));
Assert.False(game.AddPlayerInGame(players));
}
}
[Theory]
@ -43,21 +40,32 @@ public class TestGame
public void Test_GameAddPlayerIngame2(bool result, string p)
{
Game game = new Game();
List<string> players = new List<string>();
if (!result)
{
Assert.False(game.AddPlayerInGame(p));
players.Add(p);
Assert.False(game.AddPlayerInGame(players));
}
players.Clear();
for (int i = 0; i < 4; i++)
{
string name = p + i;
game.AddPlayerInGame(name);
players.Add(name);
}
Assert.False(game.AddPlayerInGame(p));
Assert.True(game.AddPlayerInGame(players));
}
[Fact]
public void Test_AddPlayers()
{
Game game = new Game();
List<string> playerstest = new List<string> { "test", "test1" };
Assert.True(game.AddPlayerInGame(playerstest));
}
[Theory]
[InlineData("test")]
public void Test_GameCreatePlayers(string p)
@ -79,8 +87,8 @@ public class TestGame
game.StartGame();
Assert.False(game.GameRunning);
}
game.AddPlayerInGame(p1);
game.AddPlayerInGame(p2);
List<string> playerstest = ["test", "test1"];
game.AddPlayerInGame(playerstest);
game.StartGame();
Assert.True(game.GameRunning);
@ -93,9 +101,8 @@ public class TestGame
public void Test_GameGetPlayingPlayerPosition(bool result, string p1, string p2, string p3)
{
Game game = new Game();
game.AddPlayerInGame(p1);
game.AddPlayerInGame(p2);
game.AddPlayerInGame(p3);
List<string> playerstest = ["test", "test1", "test2"];
game.AddPlayerInGame(playerstest);
if (!result)
{
@ -113,8 +120,8 @@ public class TestGame
public void Test_GameGetPlaylingPlayer(bool result)
{
Game game = new Game();
game.AddPlayerInGame("patrick");
game.AddPlayerInGame("jean");
List<string> playerstest = ["test", "test1"];
game.AddPlayerInGame(playerstest);
if (!result)
{
Assert.Throws<ArgumentException>(() => game.GetPlayingPlayer());
@ -130,8 +137,8 @@ public class TestGame
public void Test_BoardReturn()
{
Game game = new Game();
game.AddPlayerInGame("Test1");
game.AddPlayerInGame("Test2");
List<string> playerstest = ["test", "test1"];
game.AddPlayerInGame(playerstest);
game.StartGame();
game.SetFirstPlayer();
@ -144,8 +151,8 @@ public class TestGame
Game game = new Game();
game.AddPlayerInGame("Test1");
game.AddPlayerInGame("Test2");
List<string> playerstest = ["test", "test1"];
game.AddPlayerInGame(playerstest);
game.StartGame();
game.SetFirstPlayer();
@ -164,8 +171,8 @@ public class TestGame
public void Test_TileOfPlayer()
{
Game game = new Game();
game.AddPlayerInGame("Test1");
game.AddPlayerInGame("Test2");
List<string> playerstest = ["test", "test1"];
game.AddPlayerInGame(playerstest);
game.StartGame();
game.SetFirstPlayer();
@ -181,8 +188,8 @@ public class TestGame
public void Test_SetFirstPlayer(bool except)
{
Game game = new Game();
game.AddPlayerInGame("Test1");
game.AddPlayerInGame("Test2");
List<string> playerstest = ["test", "test1"];
game.AddPlayerInGame(playerstest);
if (except)
{
@ -201,8 +208,8 @@ public class TestGame
public void Test_Setnextplayer(bool except)
{
Game game = new Game();
game.AddPlayerInGame("Test1");
game.AddPlayerInGame("Test2");
List<string> playerstest = ["test", "test1"];
game.AddPlayerInGame(playerstest);
if (except)
{
@ -224,8 +231,8 @@ public class TestGame
public void Test_PlaceTile(bool except)
{
Game game = new Game();
game.AddPlayerInGame("Test1");
game.AddPlayerInGame("Test2");
List<string> playerstest = ["test", "test1"];
game.AddPlayerInGame(playerstest);
if (except)
{
@ -247,7 +254,7 @@ public class TestGame
// {
// Game game = new Game();
// game.AddPlayerInGame("Test1");
// game.AddPlayerInGame("Test2");
// game.AddPlayerInGame(playerstest);
//
// game.StartGame();
// game.SetNextPlayer();
@ -267,8 +274,8 @@ public class TestGame
public void Test_SwapTiles(bool except)
{
Game game = new Game();
game.AddPlayerInGame("Test1");
game.AddPlayerInGame("Test2");
List<string> playerstest = ["test", "test1"];
game.AddPlayerInGame(playerstest);
game.StartGame();
game.SetNextPlayer();
@ -302,8 +309,8 @@ public class TestGame
public void Test_IsMoveCorrectOne(bool except)
{
Game game = new Game();
game.AddPlayerInGame("Test1");
game.AddPlayerInGame("Test2");
List<string> playerstest = ["test", "test1"];
game.AddPlayerInGame(playerstest);
game.StartGame();
game.SetNextPlayer();
@ -328,8 +335,8 @@ public class TestGame
public void Test_IsMoveCorrectSixLine()
{
Game game = new Game();
game.AddPlayerInGame("Test1");
game.AddPlayerInGame("Test2");
List<string> playerstest = ["test", "test1"];
game.AddPlayerInGame(playerstest);
game.StartGame();
game.SetNextPlayer();
@ -364,10 +371,10 @@ public class TestGame
var game = new Game();
var player = new Player("TestPlayer");
var board = new Board(8, 8);
board.AddTileInCell(1, 1, new Tile(Shape.Club, Color.Red));
board.AddTileInCell(2, 1, new Tile(Shape.Square, Color.Red));
var c1 = new Cell(x1, y1);
var c2 = new Cell(x2, y2);
var c3 = new Cell(x3, y3);
@ -387,33 +394,34 @@ public class TestGame
Assert.Equal(expectedScore, score);
}
[Fact]
public void Test_EndOfGame()
{
Game game = new Game();
game.AddPlayerInGame("Test1");
game.AddPlayerInGame("Test2");
List<string> playerstest = ["test", "test1"];
game.AddPlayerInGame(playerstest);
game.StartGame();
game.SetFirstPlayer();
game.CheckGameOver(game.GetPlayingPlayer());
}
[Fact]
public void Test_ClearGame()
{
Game game = new Game();
game.AddPlayerInGame("Test1");
game.AddPlayerInGame("Test2");
List<string> playerstest = ["test", "test1"];
game.AddPlayerInGame(playerstest);
game.StartGame();
game.SetFirstPlayer();
game.ClearGame();
Assert.Empty(game.PlayerList);
Assert.Null(game.GetTileBag());
Assert.Equal(-1, game.GetPlayingPlayerPosition());
@ -421,3 +429,4 @@ public class TestGame
}

@ -17,8 +17,8 @@ public class TestLeaderboard
var leaderboard = new Leaderboard();
var game = new Game();
game.AddPlayerInGame("Test1");
game.AddPlayerInGame("Test2");
List<string> playerstest = ["test", "test1"];
game.AddPlayerInGame(playerstest);
game.StartGame();
game.SetFirstPlayer();
@ -37,8 +37,8 @@ public class TestLeaderboard
var leaderboard = new Leaderboard();
var game = new Game();
game.AddPlayerInGame("Test1");
game.AddPlayerInGame("Test2");
List<string> playerstest = ["test", "test1"];
game.AddPlayerInGame(playerstest);
game.StartGame();
game.SetFirstPlayer();
@ -50,8 +50,7 @@ public class TestLeaderboard
var game2 = new Game();
game.AddPlayerInGame("Test1");
game.AddPlayerInGame("Test2");
game.AddPlayerInGame(playerstest);
game.StartGame();
game.SetFirstPlayer();

Loading…
Cancel
Save