[Newbies] Smalltalk is a Mystery to Me
Tcykgreis at aol.com
Tcykgreis at aol.com
Fri Aug 22 00:30:25 UTC 2008
I have had a curiosity about Smalltalk for many years so I recently
downloaded and installed Squeak. That's when the trouble began. I have written
applications that deal bridge hands and either display the hands on screen or save
them in a couple of different formats. I originally wrote the 'words' in
Forth. I later tried Ruby and rewrote most of the programs in Ruby. I did it as a
learning experience. I sat out to do the same thing in Squeak, again as a
learning experience, but have made virtually no progress. I create the class
'Bridge' with the subclass of dealer. I try to initialize by filling a byteArray
with 52 numbers, 0 through 51. I tended to create additional methods to
shuffle and deal the cards to four more byte arrays named north, east, south, and
west. Eventually I will need another method to "stack the deck." I will also
need a counter to keep track of the deal number.
I can't get started, and I mean zero progress, because I can't create and
load deck. It seems like the documentation is never quit up to date. I read
about curly braces and tried deck := {0. 1. 2. ... }. When I try to accept it,
first deck is questioned and then after deck I get something about not
expecting anything else.
I know there is a word 'asByteArray:' and I assume a number would specify
the size of the array but nowhere can I find anything about the order in which
the information should be provided. I tried deck asByteArray: 52 but I don't
know if it worked. If it did work, how do I load the bytes into it? How do I
look at a byte in a particular location in the array? Can I remove a byte from
position x and/or insert a byte at position y and everything moves to
accommodate the change.
In Forth and Ruby, I was able to store the hands as a 2D bit array, 4 suits
and 13 bits. If the card was present the bit was set. When I dealt the cards,
the appropriate bits were set.. This worked really well. The suits came out
already sorted. The strength of a suit turned out to be related to the value
stored for the suit. The number of cards in the suit could be found by
counting set bits. I have yet to find bit-manipulating words in Squeak/Smalltalk.
As an aside, the least number of bits that must be used to store a complete
deal is 104 or 13 bytes. The bits are arranged in 52 2-bit groups. The
position in the array represents the value of the card and the bits determine which
hands gets the card represented by that position. When you shuffle the 2-bit
groups must be kept in tact. I could easily do this in Forth but could not do
it in Ruby. If you are going to save a few million hands, it is nice to be
able to do so in this most compact form.
If I could just figure out where to find the answers to these beginner
question, I would really appreciate it. It would also be nice if I could see some
examples of these methods.
Charlie
**************It's only a deal if it's where you want to go. Find your travel
deal here.
(http://information.travel.aol.com/deals?ncid=aoltrv00050000000047)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/beginners/attachments/20080821/59af88f6/attachment.htm
More information about the Beginners
mailing list