2012-06-15 2 views
0

Предположимполучить объект создан Объект тока

public abstract class Game 
{ 
    // Base 
} 

public class Poker : Game 
{ 
    // Lobby Object 
    // NUMBER OF PLAYERS (Max) ---------- 
}           ' 
              ' 
public class Lobby       ' 
{           ' 
    // List<Tables>       ' 
}           ' 
              ' 
public class Table       ' 
{           ' 
    // List<Player>    <---------' 
} 

Как для доступа КОЛИЧЕСТВО ИГРОКОВ из Таблица объекта без избыточного прохождения ?


EDIT Я
Вы не поняли мой вопрос, мне очень жаль.
Я хочу получить максимальное число, которое может присоединиться к этой таблице из ее типа игры.
Так что, если это таблица покера я хочу, чтобы получить количество игроков, которое равно 10


EDIT II
Различные типы игры: Hearts, Spades, покер, Оценка, ... и т.д.
Максимальное количество игроков: 4, 4, 10, 4 и т. Д., Соответственно.


EDIT III
Опять не поняли мой вопрос, я хочу, чтобы иметь возможность сделать следующее:

Когда игрок попытки присоединиться к столу, я сравниваю целевую таблицу текущих игроков число с его типом игры максимальное количество игроков, поэтому я решаю , если игрок может или не может присоединиться к нему!

+0

Итак, каковы разные типы игр? И их максимум игроков? –

+0

... EDIT II ... –

+0

Итак, если у вас есть покерный стол и есть 2 игрока, он должен вернуть 8 игроков? –

ответ

3

Я думаю, что следующие отношения должны быть смоделированы:

public abstract class Game 
{ 
    // force all Game descendants to implement the property 
    public abstract int MaxPlayers { get; } 
} 

public class Poker : Game 
{ 
    // Lobby Object 
    public List<Lobby> Lobbies { get; set; } 

    // NUMBER OF PLAYERS (Max) 
    // the abstract prop needs to be overridden here 
    public override int MaxPlayers 
    { 
     get { return 4; } 
    } 
} 

public class Lobby 
{ 
    public List<Table> Tables { get; set; } 
} 

public class Table       
{      
    public Game CurrentGame { get; set; } 
    public List<Player> Players { get; set; } 

    // force the Game instance to be provided as ctor param. 
    public Table(Game gameToStart) 
    { 
     CurrentGame = gameToStart; 
    } 
} 

впрыскивать Game играется, когда Table является инстанс:

var pokerGame = new Poker(); 
// more code here, etc etc 

var myTable = new Table(pokerGame); 

Чтобы получить максимальное количество игроков разрешено в экземпляре Table:

var maxAllowed = Table.CurrentGame.MaxPlayers; 
+0

... EDIT III ... –

+0

+1 заставляя всех игровых потомков реализовать свойство –

+0

Да, откуда объект Table получил объект CurrentGame? –

1

Используя LINQ для объектов, вы можете сделать это очень легко.

public abstract class Game 
{ 

} 

public class Poker : Game 
{ 
    private Lobby lobby = new Lobby(); 

    public int MaxPlayers   
    { 
     get 
     {   
      int count = lobby.tableList.Sum(t => t.playerList.Sum(c => t.playerList.Count)); 
      return count; 
     }     
    } 


public class Lobby 
{ 
    public List<Table> tableList { get; set; } 
} 

public class Table 
{ 
    public List<Player> playerList { get; set; } 
} 

public class Player 
{ 

} 
+0

How, I'm now in Table Объект, который приходит из списка в Looby, который является объектом в Покерной игре! –

+1

Я кодирую его прямо сейчас всего лишь секунду –

+0

Нечестно нисходящему Я дал правильное направление, и код работает. Поэтому, пожалуйста, удалите downvotes! –

Смежные вопросы