-
Notifications
You must be signed in to change notification settings - Fork 0
/
Game.cs
94 lines (82 loc) · 2.46 KB
/
Game.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CardGameWF
{
class Game
{
public CardSet Table { get; }
public List<Player> Players { get; }
public CardSet Deck { get; }
public Player ActivePlayer { get; set; }
public Action<Player> MarkActivePlayer;
public Action<string> ShowMessage;
public Game(CardSet table, CardSet deck, params Player[] players)
{
Table = table;
Players = new List<Player>(players);
Deck = deck;
ActivePlayer = players[0];
}
public void Move(Player mover, Card card)
{
if (mover != ActivePlayer) return;
if (mover.PlayerCards.Cards.IndexOf(card) == -1) return;
Table.Add(mover.PlayerCards.Pull(card));
ActivePlayer = NextPlayer(ActivePlayer);
MarkActivePlayer(ActivePlayer);
Refresh();
}
public void Attack(CardFigure figure , CardSuit suit , Card card)
{
//if (card.Figure == )
//{
// Deck.Card = card;
// Player.Cards.Cards.Remove(card);
//}
}
public void Refresh()
{
foreach (var item in Players)
{
item.PlayerCards.Show();
}
Table.Show();
}
private Player NextPlayer(Player player)
{
if (player == Players[Players.Count - 1]) return Players[0];
return Players[Players.IndexOf(player) + 1];
}
private Player PreviousPlayer(Player player)
{
if (player == Players[0]) return Players[Players.Count - 1];
return Players[Players.IndexOf(player) - 1];
}
public void Deal()
{
Deck.Mix();
foreach (var item in Players)
{
item.PlayerCards.Add(Deck.Deal(3));
}
Refresh();
}
public void GameOver()
{
foreach (var item in Players)
{
if (item.PlayerCards.Cards.Count != 0)
ShowMessage(item.Name + "loose");
}
}
public void HangUp()
{
Table.Cards.Clear();
Refresh();
}
}
}