Nie znam zasad brydza, ale mam nadzieje, ze ponizszy kod, pokazujacy obsluge symboli kart (oraz podstawowe operacje: przegladanie, tasowanie talii i rozdawanie uzytkownikom), Ci duzo pomoze.
using System;
using System.Collections.Generic;
using System.Collections;
namespace Tasowanie
{
public class Program
{
/// <summary>
/// Klasa opisujaca pojedyncza karte
/// </summary>
internal class Karta
{
/// <summary>
/// Dostepne kolory (kody symboli w zapisie unicode)
/// </summary>
public static char[] Kolory = new char[4]
{
/* trefl */
'\u2663',
/* karo */
'\u2665',
/* kier */
'\u2666',
/* pik */
'\u2660'
};
/// <summary>
/// Dostepne figury
/// </summary>
public static char[] Figury = new char[13]
{
'A', 'K', 'D', 'W', 'X', '9', '8', '7', '6', '5', '4', '3', '2'
};
/// <summary>
/// Kolor danej karty
/// </summary>
public char Kolor { get; private set; }
/// <summary>
/// Figura danej karty
/// </summary>
public char Figura { get; private set; }
/// <summary>
/// Konstruktor tworzacy nowa karte z figura danego koloru
/// </summary>
/// <param name="kolor">Wybrany kolor</param>
/// <param name="figura">Wybrana figura</param>
public Karta(char kolor, char figura)
{
Kolor = kolor;
Figura = figura;
}
/// <summary>
/// Zwraca symbol karty
/// </summary>
/// <returns>Symbol karty; kolor + figura</returns>
public override string ToString()
{
return string.Format("{0}{1}", Kolor, Figura);
}
}
/// <summary>
/// Klasa opisujaca gracza, obslugujaca ukladanie kart
/// </summary>
internal class Gracz : IComparer<Karta>
{
/// <summary>
/// Imie gracza
/// </summary>
public string Imie { get; private set; }
/// <summary>
/// Karty na reku gracza
/// </summary>
List<Karta> Karty;
/// <summary>
/// Konstruktor tworzacy nowego gracza z okreslonym imieniem
/// </summary>
/// <param name="imie">Imie nowego gracza</param>
public Gracz(string imie)
{
Imie = imie;
Karty = new List<Karta>();
}
/// <summary>
/// Dodanie graczowi karty
/// </summary>
/// <param name="karta">Karta dana graczowi</param>
public void Dodaj(Karta karta)
{
Karty.Add(karta);
}
/// <summary>
/// Ulozenie i wyswietlenie kart
/// </summary>
/// <returns>Imie oraz poukladane karty na reku gracza</returns>
public override string ToString()
{
Karty.Sort(this);
string karty = "";
foreach (Karta karta in Karty)
{
karty += karta + " ";
}
return string.Format("{0,-12}: {1}", Imie, karty);
}
#region IComparer<Karta> Members
/// <summary>
/// Algorytm ukladania kart; karty wedlug koloru, a jak rowne to wedlug figury rosnaco
/// </summary>
/// <param name="x">Pierwsza karta</param>
/// <param name="y">Kolejna karta</param>
/// <returns>Wartosc sortowania kart</returns>
public int Compare(Karta x, Karta y)
{
int porownanieKolorow = -x.Kolor.CompareTo(y.Kolor);
if (porownanieKolorow != 0)
{
return porownanieKolorow;
}
int porownanieFigur = x.Figura.CompareTo(y.Figura);
return porownanieFigur;
}
#endregion
}
/// <summary>
/// Przyklad generowania pelnej talii i jej przetasowania
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
// Generowanie talii
Random random = new Random();
List<Karta> talia = new List<Karta>();
foreach (char figura in Karta.Figury)
{
foreach (char kolor in Karta.Kolory)
{
talia.Add(new Karta(kolor, figura));
}
}
// Tasowanie talii
List<Karta> taliaTasowana = new List<Karta>();
while (talia.Count > 0)
{
int i = random.Next(talia.Count);
taliaTasowana.Add(talia[i]);
talia.RemoveAt(i);
}
// Rozdawanie talii
int iloscGraczy = 4;
string[] imiona = new string[] { "Adam", "Barbara", "Cyryl", "Daniela", "Edward", "Franciszka", "Grzegorz" };
Gracz[] gracze = new Gracz[iloscGraczy];
for (int i = 0; i < iloscGraczy; i++)
{
gracze[i] = new Gracz(imiona[random.Next(imiona.Length)]);
}
int n = 0;
while (n + iloscGraczy <= taliaTasowana.Count)
{
for (int i = 0; i < iloscGraczy; i++)
{
gracze[i].Dodaj(taliaTasowana[n + i]);
}
n += iloscGraczy;
}
// Wyswietlanie kart poszczegolnych graczy
foreach (Gracz gracz in gracze)
{
Console.WriteLine(gracz);
}
Console.ReadLine();
}
}
}
Przykladowe uruchomienie aplikacji zwrocilo:
Daniela : ♦2 ♦4 ♦6 ♦7 ♥3 ♣4 ♣7 ♣A ♣D ♠2 ♠5 ♠7 ♠9
Barbara : ♦8 ♦9 ♦A ♦W ♥7 ♥D ♥W ♣6 ♣W ♠8 ♠K ♠W ♠X
Adam : ♦K ♥4 ♥5 ♥9 ♥X ♣3 ♣5 ♣8 ♣9 ♣X ♠3 ♠4 ♠D
Cyryl : ♦3 ♦5 ♦D ♦X ♥2 ♥6 ♥8 ♥A ♥K ♣2 ♣K ♠6 ♠A