2016-09-30 6 views
-2

플레이어 1에 짝수 카드를, 플레이어 2에 홀수 카드를 제공하고 싶습니다. 만약 당신들 중 누구라도 그것을 할 수 있다면 정말 고마워 할 것입니다. 배열을 사용하여이 작업을 수행하는 방법을 알고 있지만 목록이 있는지 확실하지 않습니다.두 명의 플레이어로 데크 나누기

class MatchDeck 
{ 

    private const int NUMBER_OF_CARDS = 36; 
    private Random r = new Random(); 
    List<MatchCard> deck = new List<MatchCard>(); 

    public MatchDeck(){ } 

    public void createDeck() 
    { 

     int[] number = { 2, 3, 4, 5, 6, 7, 8, 9, 10 }; 
     string[] suits = { "R[]", "R0", "B0", "B[]" };//these are suits i just made up 
     // deck = new MatchCard[NUMBER_OF_CARDS]; 
     foreach (var suit in suits) 
     { 
      for (int num = 2; num <= 10; num++) 
      { 
       deck.Add(new MatchCard(num, suit)); 
       // Console.WriteLine(deck[i++].toString()); 
      } 
     } 

     foreach(MatchCard card in deck) 
     { 
      Console.WriteLine(card.Number + " " + card.Suit); 
     } 

    } 

    public void Shuffle() 
    { 

     Random ran = new Random(); 

     int n = deck.Count; 

     while (n > 1) 
     { 
      n--; 
      int k = ran.Next(n + 1); 
      MatchCard value = deck[k]; 
      deck[k] = deck[n]; 
      deck[n] = value; 
     } 

     foreach (MatchCard card in deck) 
     { 
      Console.WriteLine(card.Number + " " + card.Suit); 
     } 
    } 

    public void deal() 
    { 
     List<MatchCard> player1 = new List<MatchCard>(); 
     List<MatchCard> player2 = new List<MatchCard>(); 

    } 
} 
+0

어떻게 배열로 처리 했습니까? – kurakura88

+0

val % 2 = 0 인 경우에도 홀수 ... 그 순서가 바뀌면 orderby (() => rand.next())로 전환 할 수 있습니다 – misha130

+2

배열로 할 수 있다면, 'List'. – Abion47

답변

1

달성하려는 것은 루프 또는 Linq를 사용하여 수행 할 수 있습니다. array 또는 List을 반복하려면 짝수의 경우 조건은 if(deck[i] % 2 == 0)이됩니다. 홀수는 반대입니다. 그러나 이것은 이미 @ misha130의 논평에서 언급되었습니다.

List 가능성이있는 Linq 가능성을 알고 싶습니다. List에서 값을 추출하는 좋은 예가 나와있는 post은 다음과 같습니다 (귀하의 경우와 동일). 클래스 List와 그 방법은이 두 가지 특별한 방법이 경우에 주된 관심이 될 것 documentation 읽어 보시기 바랍니다 알아 갈 수 : & & Where

FindAll 지금 당신은 당신의 문제를 해결하는 데 필요한 모든 정보를 가지고 있어야합니다. 행운을 빕니다. 당신이 아직도 붙어 있다면 덧글.

1

코드를 리팩터링하여 이후의 작업에 적용했습니다. 카드 취급과 관련하여 핵심 부분은 .Where((x, n) => n % 2 == 0) & .Where((x, n) => n % 2 == 1) 코드입니다.

public class MatchDeck 
{ 
    private Random r = new Random(); 
    List<MatchCard> deck = null; 

    public MatchDeck() 
    { 
     int[] number = { 2, 3, 4, 5, 6, 7, 8, 9, 10 }; 
     string[] suits = { "R[]", "R0", "B0", "B[]" }; 
     deck = number.SelectMany(n => suits, (n, s) => new MatchCard(n, s)).ToList(); 
    } 

    public void Shuffle() 
    { 
     deck = deck.OrderBy(x => r.Next()).ToList(); 
    } 

    public void Deal() 
    { 
     List<MatchCard> player1 = deck.Where((x, n) => n % 2 == 0).ToList(); 
     List<MatchCard> player2 = deck.Where((x, n) => n % 1 == 0).ToList(); 
    } 
}