Mailing List Archive: 49091 messages
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

[REBOL] Re: Help me Obi REB Kenobi! You're my only hope!

From: carl::cybercraft::co::nz at: 12-May-2002 13:17

On 12-May-02, Ed Dana wrote:
> In an effort to understand this new (and very interesting) language, > I decided to try something simple; I created a simple guessing game > where the computer picks a number between 1 and 100. > Simply yes? Yea, right! :) > For whatevcr reason: newbie, stupidity, or that my computer just > plain hates me, I can't get the silly thing to work. > Here is the script: > REBOL [ > Title: "Guess a number between 1 and 100" > Date: 05/11/2002 > Version: 0 > Author: "Ed Dana" > Purpose: "An excersize in REBOLion." > Comment: "Just goofing off." > Category: [game] > ] > pick: random/seed 100.0 > guess: ask {What is your guess? } > while [pick <> guess] [ > if [pick < guess] [ print "To low" ] > if [pick > guess] [ print "To high" ] > guess: input > ] > print pick > And the results I get: >>> do %guess.r > What is your guess? ** Script Error: trim expected series argument > of type: series port > ** Where: ask > ** Near: trim either hide [input/hide] [input] > What is it talking about? I haven't a clue. > I've even tried using Guess: Input and it defines Guess as 1. > Any advice is appreciated, including types on suicide so that I may > hide my shame from such a simple newbie mistake. :)
Hi Ed, A few REBOL specific mistakes there... pick: random/seed 100.0 'pick shouldn't be used there, as it's a common REBOL word and I think may have been the cause of your error message. Anyway, changing it to 'target prevented the error happening for me. ie... target: random/seed 100.0 (Adding 'protect-system to your user.r script will prevent this kind of problem by not allowing you to over-write the default REBOL words.) Another problem is with the 'ifs... if [target < guess] [ print "To low" ] The "target < guess" shouldn't be in a block there, as 'if doesn't evaluate the block like 'while does. So, this is the correct syntax for 'if... if target < guess [ print "To low" ] but it still won't work in your case as you're comparing a number (target) with a string (guess). So, to fix that use... if target < to-integer guess [ print "To low" ] Which should almost get your script working for you. (I say almost as I'm leaving what you really should be ashamed of for you to find out for yourself;) HTH. -- Carl Read