ZADANIE 11

(1 pkt)

A)

Jeżeli masz dokończony i przetestowany wzorzec klasy kolejka z poprzednich zajęć, to przejdź do punktu B).

Jeżeli nie skończyłeś wzorca na poprzednich zajęciach i nie dokończyłeś go w domu (a powinieneś), to dokończ go i przetestuj teraz. Program z poprzednich zajęć MUSI działać !!!

(1 pkt)

B)

Zaimplementuj klasę karta o podanej definicji: karta.h

class karta {

unsigned char kolor;

// 3 <=kolor<= 6

// (kier 3, karo 4, trefl 5, pik 6)

unsigned char wartosc;

// 0 <=wartosc<= 12

// (od 0 do 8 -blotki, 9-J, 10-Q, 11-K, 12-A)

public:

karta(unsigned char=0,unsigned char=0);

friend bool operator<(const karta&, const karta&);

//decyduje pole: wartosc

friend bool operator>(const karta&, const karta&);

//decyduje pole: wartosc

friend bool operator==(const karta&, const karta&);

//decyduje pole: wartosc

friend ostream& operator<<(ostream&, const karta&);

};

Operator<< dla karty zaimplementuj z użyciem kolorów konsoli (przypomnienie w komentarzu w pliku):

2♥ 3♥ 4♥ 5♥ 6♥ 7♥ 8♥ 9♥ 10♥ J♥ Q♥ K♥ A♥ 2♦ 3♦ 4♦ 5♦ 6♦ 7♦ 8♦ 9♦ 10♦ J♦ Q♦ K♦ A♦

2♣ 3♣ 4♣ 5♣ 6♣ 7♣ 8♣ 9♣ 10♣ J♣ Q♣ K♣ A♣ 2♠ 3♠ 4♠ 5♠ 6♠ 7♠ 8♠ 9♠ 10♠ J♠ Q♠ K♠ A♠

(1 pkt)

C)

Wykorzystując wzorzec kolejka, w funkcji main: wygeneruj nową talię kart (uporządkowaną jak powyżej);

Wykonaj tasowanie, oraz rozdanie kart do gry w wojnę dla 2 graczy: jedna karta dla gracza1 i jedna karta dla gracza2;

(2 pkt: podstawowa rozgrywka - 1 pkt + wojna - 1 pkt) D)

Wykorzystując wzorzec kolejka, zaimplementuj grę w wojnę (parametr ILE określa maksymalną liczbę starć);

•

o sile karty decyduje pole: wartość;

•

w przypadku identycznych wartości: mamy wojnę (aż do ewentalnego braku kart...) gracze wykładają na stół po jednej karcie (jeśli mają) i zaraz na nią kładą kartę (jeśli mają) decydującą o wyniku wojny; jeśli dalej jest remis, to wojna toczy się dalej wpp wygrany gracz zabiera obie kupki kart dla siebie;

•

jeśli po wykonaniu ILE starć, nie doszło do zakończenia partii, to o wygranej decyduje bieżąca liczba kart u gracza;

Dla tych, co nie trzymają zbyt często kart w swoich rękach Nowa talia składa się z 52 kart, (stała N=52) Nowa talia składa się z 13 kart (stała KOLOR=13) w każdym kolorze (razem 52): KIER (kod znaku 3),

KARO ((kod znaku 4),

TREFL ((kod znaku 5) oraz

PIK ((kod znaku 6).

Każda karta jest reprezentowana przez: kolor (3÷6) oraz wartość (0÷12).

Jak wygenerować nową talię kart?

Kolejne liczby porządkowe 0÷51 należy przekonwertować na reprezentację karty dwiema wartościami:

0

1

2

3

4

5

6

7

8

9

10

11

12

2♥ 3♥ 4♥ 5♥ 6♥ 7♥ 8♥ 9♥ 10♥ J♥

Q♥ K♥ A♥

13

14

15

16

17

18

19

20

21

22

23

24

25

2♦ 3♦ 4♦ 5♦ 6♦ 7♦ 8♦ 9♦ 10♦ J♦

Q♦ K♦ A♦

26

27

28

29

30

31

32

33

34

35

36

37

38

2♣ 3♣ 4♣ 5♣ 6♣ 7♣ 8♣ 9♣ 10♣ J♣

Q♣ K♣ A♣

39

40

41

42

43

44

45

46

47

48

49

50

51

2♠ 3♠ 4♠ 5♠ 6♠ 7♠ 8♠ 9♠ 10♠ J♠

Q♠ K♠ A♠