ۥ-1@ -U$$$$$$$2<nnnnn xn(!4$ DAB725 - Laboration 2 - Smalltalk Peter Holmstrand & Pr Danielsson Uppgift 2: Object subclass: #Card instanceVariableNames: 'theSuit theRank ' classVariableNames: 'List2 List1 ' poolDictionaries: '' ! !Card class methods ! suit: aSymbol rank: aCharacter "comment" | inst | List1 := #( '2' '3' '4' '5' '6' '7' '8' '9' 'T' 'J' 'Q' 'K' 'A'). List2 := #( 'S' 'H' 'D' 'C'). inst := Card new. inst setSuit: aSymbol rank: aCharacter. ^inst! ! !Card methods ! rank | return | return := (List1 at: theRank). ^return! setSuit: aSymbol rank: aCharacter "comment" | | theSuit := aSymbol. theRank := aCharacter.! suit "comment" | | ^(List2 at: theSuit)! ! Object subclass: #CardDeck instanceVariableNames: 'theCards ' classVariableNames: '' poolDictionaries: '' ! !CardDeck class methods ! newDeck "comment" | init | init := CardDeck new. init cards. ^init! ! !CardDeck methods ! cards "Skapar ett kort av varje sort." | list1 list2 | theCards := OrderedCollection new: 52. 1 to: 4 do: [ :s | 1 to: 13 do: [ :i | theCards addLast: (Card suit: s rank: i) ]. ].! isEmpty "returns true if Deck is empty" | status | theCards size > 0 ifTrue: [status := false] ifFalse: [status := true]. ^status! next "Draws a card from the deck" | drawnCard | drawnCard := theCards at: 1. theCards removeFirst. ^drawnCard! shuffle "Blandar leken" | n1 n2 temp1 temp2 | Random setFroTime. 1 to: 1000 do: [ :i | n1 := (Random next: ((theCards size) - 1)) + 1. n2 := (Random next: ((theCards size) - 1)) + 1. temp1 := theCards at: n1. temp2 := theCards at: n2. theCards at: n1 put: temp2. theCards at: n2 put: temp1. ]. ^(theCards size)! ! Object subclass: #CardHand instanceVariableNames: 'theCards theName ' classVariableNames: '' poolDictionaries: '' ! !CardHand class methods ! newHand: aName "Returns a new Hand" | init | init := CardHand new. init aNewHandIsCreated: aName. ^init! ! !CardHand methods ! aNewHandIsCreated: name "Fixar Collectionen" | | theCards := OrderedCollection new: 52. theName := name.! printCardHand: aStream "Prints a hand" | | aStream cr. theName printOn: aStream. aStream cr. #Spades: printOn: aStream. theCards do: [:kort| aStream space. kort suit = 'S' ifTrue: [ kort rank printOn: aStream.] ]. aStream cr. #Hearts: printOn: aStream. theCards do: [:kort| aStream space. kort suit = 'H' ifTrue: [ kort rank printOn: aStream.] ]. aStream cr. #Diamonds: printOn: aStream. theCards do: [:kort| aStream space. kort suit = 'D' ifTrue: [ kort rank printOn: aStream.] ]. aStream cr. #Clubs: printOn: aStream. theCards do: [:kort| aStream space. kort suit = 'C' ifTrue: [ kort rank printOn: aStream.] ]. aStream cr.! take: aDeck "Takes a Card from aDeck" | card | card := aDeck next. theCards add: card.! ! /=nnst89:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DAB725 - Laboration 2 - Smalltalk Peter Holmstrand & Pr Danielsson Uppgift 2: Object subclass: #Card instanceVariableUn !9Mgik /Fs}5RTZmw02;N\w!9'139_rt4&7&a4i ( * ? A ] w  " = a k m o q $ = G X w  B % X ;nP7SU&&7JF   U*n 4U (Times New Roman Symbol&ArialPostScript PrinterLPT1:PSCRIPTApple LaserWriter Plus WD[ 5d, l2.psXZZeMS Sans Serif "h*shsh