A stupid newbie question

Patrick Castle lemeia at bigpond.com
Sat Oct 6 18:42:13 UTC 2001


Hi all,

I'm having a particular problem which is probably laughably stupid and
although I managed a workaround the whole implementation is looking really
sloppy.

I'm trying to implement an example from the book: 'Discovering Smalltalk' -
the TicTacToeGame if anyone is interested.

Now I know some of the code won't work as it isn't written for Squeak. I
have translated it as best I can and have actually managed to implement a
full solution.

However.....

The idea is to prompt the user for a simple point on a 3x3 grid meaning:
answer isKindOf: Point.
But when implementing..


|aPoint|

aPoint := FillInTheBlank
	request: 'Next move?'
	initialAnswer: '1 at 1'.

..a String is bound to the aPoint variable.

As part of the move's validation process a method is used to determine
firstly whether the user has actually entered a point and secondly whether
the point is valid. But it won't even pass the    aPoint isKindOf: Point
test.

Now feel free to laugh out loud at my workaround, but this is how I turned
achieved the desired result:


|aPoint|

aPoint := FillInTheBlank
	request: 'Next move?'
	initialAnswer: '1 at 1'.
aPoint := Point x: ((aPoint at: 1) asInteger - 48) y: ((aPoint at: 3)
asInteger - 48).


This binds a Point instance to aPoint which is the desired outcome. However,
I don't personally think the workaround is very acceptable. For a start I
could enter 'Johnny Rotten' and the application would happily convert my
answer into a Point instance which I think is very sloppy. I would need an
extra layer of validation to stop this. Mind you - any string other than the
legal values for the game will come up with an 'illegal move' response (or
at least they seem to).

So my question is how to a turn a String response '1 at 1' into Point instance
1 at 1? And it actually opens up a larger question for me. Using
FillInTheBlank, how to I return anything other than String objects? From my
example it seems that if I had used the class to prompt me for a number I
would be return '5' rather than 5, which isn't much use if I'm wanting to
make calculations with the answer.

I know the answer would have to be very simple, but I just haven't found the
solution in the class library yet, or any tutorials or books I have.

Just to try your patience I thought I'd add another question.

Now that I have the application functioning I would like to make it into an
.exe file to see how it functions outside of the Squeak development
environment. The only info I've found so far on doing this is to type:

CCodeGenerator new initialize addClass: ClassName) codeString.

Inspecting this gives me some C code with an #include 'sq.h'  line in it. I
don't have this header file so where would I get it? Is this all I need to
do to turn a Squeak application into an .exe?

I'm presuming I would have to do this with all Classes I create to make the
application plus any other pre-existing Classes I have modified or created
that happen to be used within the application.

I have a GNU C/C++ compiler so I'm guessing that should be enough for
compilation.

Thanks for perservering.

Regards
Patrick






More information about the Squeak-dev mailing list