Another way is to store a offset value...something like:
all you would need to do is keep track of a value indicateing the number of array spaces that have been rolled (note this number can be negative too...as long as it's an integer)
say you have:
for such a small array, actually moveing the data around isn't such a big deal...but when you get into larger arrays, and wish to "roll" them very often it can slow things down considerably.
;some function calls ;each "rolls" the array, or at least gives the impression it does fruitroll(3) fruitroll(7) fruitroll(1) ;now the function FUNCTION fruitroll(offset%) FOR i = 0 TO 9 temp = ABS( ( i + offset ) MOD 10 ) value = fruit(temp) ;now you can print the value, display the graphic value..whatever NEXT END FUNCTION
all you would need to do is keep track of a value indicateing the number of array spaces that have been rolled (note this number can be negative too...as long as it's an integer)
say you have:
;just setting a value here rolls = 45829 ;the exact array value at that location value1 = fruit( ABS( rolls MOD 10 ) ) ;the array value two spaces below it, in terms of a slot machine value2 = fruit( ABS( ( rolls + 2 ) MOD 10 ) ) ;if you wish you can stick the math stuff into a function FUNCTION fruitindex(value%) RETURN ABS( value MOD 10 ) END FUNCTION ;then its just a matter of calling it value1 = fruit( fruitindex( rolls ) ) value3 = fruit( fruitindex( rolls - 37 ) ) ;etc..
for such a small array, actually moveing the data around isn't such a big deal...but when you get into larger arrays, and wish to "roll" them very often it can slow things down considerably.