A stupid newbie question
john-reed.x.maffeo at mail.sprint.com
john-reed.x.maffeo at mail.sprint.com
Sat Oct 6 21:03:17 UTC 2001
aPoint := Point readFromString: ( FillInTheBlank
request: 'Next move?'
initialAnswer: '1 at 1')
I figured this out be going to String and browsing
the protocol. I found asNumber which contained
Number readFromStr:. I tried readFromStr: on
Point and it worked.
NOTE: I used ':=' instead of '_' for readability in email.
The answer is out there!
Best Regards,
John-Reed Maffeo
> -----Original Message-----
> From: lemeia [mailto:lemeia at bigpond.com]
> Sent: Saturday, October 06, 2001 1:42 PM
> To: squeak-dev
> Cc: lemeia
> Subject: A stupid newbie question
>
>
>
> 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
|