Problem A
Spil
Languages
en
is
Í þessu verkefni útfærið þið þrjá klasa: Card, Deck, and Hand. Sérhvern klasa á að útfæri í eigin Python skrá. Tvö dæmi um aðalforrit sem notar klasana þrjá eru gefin (sjá main1.py og main2.py)
Athugið að fyrir suma liði þarf líka að fá rétt á prufutilvikunum fyrir meðlimabreytur og klasabreytur, og einnig fyrir rétta útfærslu á upphafsstilli.
Card klasinn (30 stig)
-
(10 stig) __init__(): Upphafsstillir (e. initializer) með færibreyturnar rank (annað hvort strengur eða heiltala) og suit (stafur).
-
(10 stig) Klasinn Card hefur tvær public tilvikabreytur: rank og suit. Sú fyrri er geymd sem heiltala á bilinu 2–14 og sú seinni sem stafur: ’H’, ’S’, ’D’, eða ’C’, fyrir hjarta, spaða, tígul og lauf (í þessari röð). Þið getið notað fallið type() til að athuga tagið á færibreytunum. Gera má ráð fyrir að alltaf sé kallað á smiðinn í Card með löglegum gildum.
-
(10 stig) __str__(): Strengjaframsetning fyrir tilvik af Card er hægri jafnað svið að lengdinni þrír: fyrst gildið (e. rank) og síðan sortin (e. suit). Stafirnir ’J’, ’Q’, ’K’ og ’A’ eru notaðir fyrir gildin 11, 12, 13 og 14 (í þessari röð). Til dæmis er "10H" strengjaframsetning fyrir hjartatíu og " AS" fyrir spaðaás.
Deck klasinn (40 stig)
-
(4 stig) __init__(): Upphafsstilir án færibreytna sem býr til stokk af 52 spilum. Stokkurinn er búinn til þannig að spilin eru fyrst röðuð eftir sort, HSDC (hjörtu fyrst, síðan spaðar, tíglar og lauf) og síðan eftir gildinu, í hækkandi röð. Fyrstu þrjú spilin í stokknum eru því: “2H”, “3H” og “4H”.
-
(9 stig) Klasinn Deck hefur eina public tilvikabreytu, deck, sem geymir lista af 13 spilum í sérhverri sort, það er 52 spil í heildina.
-
(9 stig) __str__(): Stengjaframsetning fyrir tilvik af Deck sýnir öll spilin í þeirri röð sem þau koma fyrir (með einu bili á eftir sérhverju spili) með nýrri línu á eftir sérhverjum 13 spilum.
-
(9 stig) shuffle(): Stokkar spilin á handahófskenndan hátt með því að nota random.shuffle(). Athugaðu að þú skalt ekki kalla á random.seed innan klasans.
-
(9 stig) deal(): Gefur eitt spil úr stokknum með því að skila spilinu sem er efst á stokknum (fyrsta spilið). Þú mátt gera ráð fyrir að það sé ekki kallað á þetta fall þegar stokkurinn er tómur.
Hand klasinn (30 stig)
-
(6 stig) __init__(): Upphafsstillir án færibreytna.
-
(8 stig) Klasinn Hand hefur eina public tilvikabreytu, cards, sem geymir lista af allt að 13 spilum.
-
(8 stig) __str__(): Strengjaframsetning fyrir tilvik af Hand er ein lína sem samanstendur af strengjaframsetningu sérhvers spils (með einu bili á eftir sérhverju spili). Ef höndin er tóm þá er strengnum “Empty” skilað.
-
(8 stig) add_card(card): Bætir gildi færibreytunnar við höndina. Ef höndin er full skal ekkert gerast.
Fastar
Þið eigið að nota fasta í útfærslunni ykkar. Þið þurfið að finna út sjálf hvaða fasta væri gott að hafa en eins og sést í aðalforritunum tveimur þá þurfið þið að minnsta kosi fastann NUMBER_OF_CARDS í klasanum Hand.
Úttak main1.py
5S QD KH 2C AS 10D JS KD 3C 10C 5C 5S 3H 8D 5H 7S AS 9C 8H 4D 10D 9H AD 7C JC KS 7H 3S 10H 10S JH 8C AH KH 8S JD QC 2D 2C QS 4S 6H 9S 6C 9D KC QH 4C 6S 7D 5D 2S 2H AC 6D 3D 4H QD JS KD 3C 10C 5C 5S 3H 8D 5H 7S AS 9C 8H 4D 10D 9H AD 7C JC KS 7H 3S 10H 10S JH 8C AH KH 8S JD QC 2D 2C QS 4S 6H 9S 6C 9D KC QH 4C 6S 7D 5D 2S 2H AC 6D 3D 4H QD