So I'm making a monopoly map, and I'm stuck on how to do one of the triggers. I have, when you press the roll button a random number between 2 and 12 will generate. and I have a region for each space, but I'm confused as to how to move the certain number of spaces. Any help would be appreciated.
I would put all the regions in a Region Array named "Plot Regions". So, say you have the Go square in Plot Regions[0], the next one in Plot Regions[1] and so on. Also, keep a counter for each player's token that keeps track on which Plot that player is on. So if a player is on the Go square, his counter is 0.
Now, let "Roll Amount" be a random number between 2 and 12. Now, assuming there are 40 squares on the board (just like in actual monopoly), the region to move to is:
Target Region = (Player Counter + Roll Amount) % 40
Where the percent sign represents a modulo operation. Finally just have the player's token (ie. his unit) move to region in Plot Regions[Target Region].
P.S. You probably want to generate two numbers between 1 and 6 to check for doubles. Then the roll amount would be their sum.
Now I might be understanding your modulo operation wrong (I know some maths in my own language, not all of it in English), but won't you run into the inetivable problem of being on region 39, rolling 3 and ending up on region 42, which doesn't exist? How do you prevent the trigger from doing crazy stuff once you reach higher regions and have to 'reset' back to region 0?
The modulo operation does exactly that. A modulo (I think you can find it under the Arithmetic (integer) function in the Editor) performs a division and gives the remainder.
So for example, to work out 10 % 3, where the percent sign is the modulo operation, you first divide:
10 / 3 = 3 remainder 1
The remainder (which is 1) is the answer for the modulo operation, so you get:
10 % 3 = 1
Now, for your example, if the player is on 39 and rolls three so that the player would end up on 42, the modulo fixes that because:
42 / 40 = 1 remainder 2 so 42 % 40 = 2
And, voilĂ , 2 is actually the number you want the player to land on without you having to worry about including if statement for range checking, etc.
Modulo is a neat trick whose use might not be apparent at first but it is essential to write awesome, efficient stuff. For more information on the modulo operation go to: http://en.wikipedia.org/wiki/Modulo_operation
So I'm making a monopoly map, and I'm stuck on how to do one of the triggers. I have, when you press the roll button a random number between 2 and 12 will generate. and I have a region for each space, but I'm confused as to how to move the certain number of spaces. Any help would be appreciated.
@Gaurus:
You're gonna have to setup points or regions on each space stored in an Array
SpacesArray[1] = Point1
SpacesArray[2] = Point2
etc.
Then when they roll, add the ammount they rolled to their Current Space
Current Space = 3
Rolled a 5
New space to move to is ...
SpacesArray[8]
That should get you pointed in the right direction.
I would put all the regions in a Region Array named "Plot Regions". So, say you have the Go square in Plot Regions[0], the next one in Plot Regions[1] and so on. Also, keep a counter for each player's token that keeps track on which Plot that player is on. So if a player is on the Go square, his counter is 0.
Now, let "Roll Amount" be a random number between 2 and 12. Now, assuming there are 40 squares on the board (just like in actual monopoly), the region to move to is:
Target Region = (Player Counter + Roll Amount) % 40
Where the percent sign represents a modulo operation. Finally just have the player's token (ie. his unit) move to region in Plot Regions[Target Region].
P.S. You probably want to generate two numbers between 1 and 6 to check for doubles. Then the roll amount would be their sum.
@Klishu: Go
Now I might be understanding your modulo operation wrong (I know some maths in my own language, not all of it in English), but won't you run into the inetivable problem of being on region 39, rolling 3 and ending up on region 42, which doesn't exist? How do you prevent the trigger from doing crazy stuff once you reach higher regions and have to 'reset' back to region 0?
@Mozared:
Simple checks of
If CurrentSpace + RolledAmmount > TotalSpaces
Set NextSpace = TotalSpaces - CurrentSpace
endif
Or something similiar.
@Mozared: Go
The modulo operation does exactly that. A modulo (I think you can find it under the Arithmetic (integer) function in the Editor) performs a division and gives the remainder.
So for example, to work out 10 % 3, where the percent sign is the modulo operation, you first divide:
10 / 3 = 3 remainder 1
The remainder (which is 1) is the answer for the modulo operation, so you get:
10 % 3 = 1
Now, for your example, if the player is on 39 and rolls three so that the player would end up on 42, the modulo fixes that because:
42 / 40 = 1 remainder 2 so 42 % 40 = 2
And, voilĂ , 2 is actually the number you want the player to land on without you having to worry about including if statement for range checking, etc.
Modulo is a neat trick whose use might not be apparent at first but it is essential to write awesome, efficient stuff. For more information on the modulo operation go to: http://en.wikipedia.org/wiki/Modulo_operation
Thanks a lot it worked perfectly