tasks a-s
This commit is contained in:
parent
47bf37c096
commit
b83f433714
12433 changed files with 156208 additions and 123 deletions
103
Task/Playing-cards/Smalltalk/playing-cards.st
Normal file
103
Task/Playing-cards/Smalltalk/playing-cards.st
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
Object subclass: #Card
|
||||
instanceVariableNames: 'thePip theSuit'
|
||||
classVariableNames: 'pips suits'
|
||||
poolDictionaries: ''
|
||||
category: nil !
|
||||
|
||||
!Card class methods!
|
||||
initialize
|
||||
suits ifNil: [ suits := 'clubs,hearts,spades,diamonds' subStrings: $, ].
|
||||
pips ifNil: [ pips := '2,3,4,5,6,7,8,9,10,jack,queen,king,ace' subStrings: $, ]
|
||||
!
|
||||
new
|
||||
| o |
|
||||
o := super new.
|
||||
^o
|
||||
!
|
||||
new: card
|
||||
| o |
|
||||
o := self new.
|
||||
o initWithPip: (card at: 1) andSuit: (card at: 2).
|
||||
^o
|
||||
!!
|
||||
|
||||
!Card class methods !
|
||||
pips
|
||||
Card initialize.
|
||||
^pips
|
||||
!
|
||||
suits
|
||||
Card initialize.
|
||||
^suits
|
||||
!!
|
||||
|
||||
!Card methods!
|
||||
initWithPip: aPip andSuit: aSuit
|
||||
( (pips includes: aPip asLowercase) &
|
||||
(suits includes: aSuit asLowercase) )
|
||||
ifTrue: [
|
||||
thePip := aPip copy.
|
||||
theSuit := aSuit copy
|
||||
] ifFalse: [ 'Unknown pip or suit' displayOn: stderr .
|
||||
Character nl displayOn: stderr ].
|
||||
^self
|
||||
!
|
||||
asString
|
||||
^('(%1,%2)' % { thePip . theSuit })
|
||||
!
|
||||
display
|
||||
self asString display
|
||||
!
|
||||
displayNl
|
||||
self display.
|
||||
Character nl display
|
||||
!!
|
||||
|
||||
|
||||
Object subclass: #Deck
|
||||
instanceVariableNames: 'deck'
|
||||
classVariableNames: ''
|
||||
poolDictionaries: ''
|
||||
category: nil !
|
||||
|
||||
!Deck class methods !
|
||||
new
|
||||
|d|
|
||||
d := super new.
|
||||
d init.
|
||||
^d
|
||||
!!
|
||||
|
||||
!Deck methods !
|
||||
init
|
||||
deck := OrderedCollection new.
|
||||
Card suits do: [ :suit |
|
||||
Card pips do: [ :pip |
|
||||
deck add: (Card new: { pip . suit })
|
||||
]
|
||||
]
|
||||
!
|
||||
deck
|
||||
^deck
|
||||
!
|
||||
shuffle
|
||||
1 to: self deck size do: [ :i |
|
||||
|r2 o|
|
||||
r2 := Random between: 1 and: self deck size.
|
||||
o := self deck at: i.
|
||||
self deck at: i put: (self deck at: r2).
|
||||
self deck at: r2 put: o
|
||||
].
|
||||
^self
|
||||
!
|
||||
display
|
||||
self deck do: [ :card |
|
||||
card displayNl
|
||||
]
|
||||
!
|
||||
deal
|
||||
^self deck removeFirst
|
||||
!!
|
||||
|
||||
"create a deck, shuffle it, remove the first card and display it"
|
||||
Deck new shuffle deal displayNl.
|
||||
Loading…
Add table
Add a link
Reference in a new issue