Asked
— Edited
Resolved by Dunning-Kruger!
I am writing a script for playing a game with my robot. I am stumped on what to put in the script to keep score. How would i do that? Thanks
@Bob... If it is just a numeric value then you can just use a variable....
EG... your inmoov just scored a point in a game $inmoov =$inmoov+1 or $inmoov++
... then later you scored a point $human=$human + 1 or you can use $human++
at the end of the game just compare values
if $inmoov>$human say(I won, nice game") elseif $inmoov=$human say("it's a tie, want to play again?") else say("You won, nice game") endif
Something like that, anyway
Yep, as Richard said. My method is as so...
I've combined my method into one script there. Usually the $P1_score = 0 (and P2, P3 etc) are defined in the init script to avoid accidental resetting.
Then the code for the game is a new script. At the end of the script has the If shown above.
Thanks guys, - Richard, using your example and putting it in my script as below. I get a error;
This is where I still struggle with these variables - how to define them. How do I define $human / $inmoov?
Variables are defined as soon as they are made. However, in order to make a variable it must have contents.
I use an init script which defines all of my variables. For example you could have this in an init script which runs automatically on connection or on load.
I have many variables on my projects due to the way I write scripts in ways that can be reused and easily modified. Usually I rewrite public scripts to include the variables in the script and define them amongst the first few lines. In reality these variables on my projects are defined in the init script, this avoids accidental resetting of counters etc. should there be a problem with a script stopping.
@bhouston... see Rich's post #5
$human="Bob" or something like that... or whatever name you wish...
I got it to work but it doesn't add up the score correctly. There's what I have at the end.
Are you setting $human and $inmoov variables to 0 before starting each game? Try putting in print statements at the end (see below) so you can see the values of $human and $inmoov
Add the variable watcher control, it comes in handy for debugging.
Also, I noticed you are using WaitForChange for the response in your script. You should use WaitForSpeech(), it will work much better.
InMoov cheats! Here's what I have at the beginning of my script to set the variables;
it's adding up correctly but saying the wrong thing.
On this one InMoov announced he won.
Every time you use the script
You are effectively only adding a 1 to the end of the string. "Human = 0" + 1 is "Human = 01".
It is saying the correct thing for what you are asking to to say. What you are asking for is not the same as what you want.
Your variables for the scoring aren't decimal they are strings. The lines of code should be;
These are decimal and you will be able to use math with them. You cannot use math with strings.
With these lines of code $human + 1 would be 1, then 2, then 3 as the variable is a number not a string.
oops sorry Bob... Rich is right, I made a mistake...
before your game set your variables like this... then start the game...
Thank you both for all your help with this.