Snakes and Ladders for the HP-41
Overview
-You and the HP-41 are on square#0
-The 2 players alternately roll 2 dice. ( Flag F01 is set if it's your
turn to play )
-If the dice are D1 D2, the player on square S moves forward on square
S+D1+D2
-The snakes and the ladders may appear at random on every square#S provided
1 < S < 100
-When a snake appears, you move back. If a ladder appears, you move
forward.
-Ladders are long near square#1, short near square#99
-Snakes are short near square#1, long near square#99
-The winner is the first one who reaches ( or exceeds ) square#100
Program Listing
Data Registers: • R00 = r = random numbers ( Register R00 is to be initialized before executing "SNLD" )
R01 thru R05: temp
Flags: F01 when F01
is set, it's your turn to play: press any key to roll the dice
F29 when F01 is clear, the HP-41 is playing.
Subroutines: /
-The append character is denoted ~
-Line 92 is a three-byte GTO 02
01 LBL "SNLD"
02 " 00/00" 03 AVIEW 04 CLX 05 STO 01 06 STO 02 07 FIX 0 08 CF 01 09 CF 29 10 XEQ 06 11 4 12 X>Y? 13 SF 01 14 LBL 01 15 FS? 01 16 GETKEY 17 XEQ 06 18 STO 03 19 XEQ 06 20 STO 04 21 + 22 LBL 02 23 FS? 01 |
24 ST+ 01
25 FC? 01 26 ST+ 02 27 COS 28 COS 29 COS 30 RCL 01 31 10 32 " " 33 X>Y? 34 "~0" 35 ARCL 01 36 "~/" 37 RCL 02 38 X<Y? 39 "~0" 40 ARCL 02 41 "~ " 42 ARCL 03 43 "~+" 44 ARCL 04 45 AVIEW 46 FS? 01 |
47 RCL 01
48 STO 05 49 99 50 X<Y? 51 GTO 07 52 SIGN 53 X=Y? 54 GTO 03 55 RCL 00 56 R-D 57 FRC 58 STO 00 59 .8 60 X<Y? 61 GTO 04 62 6 63 / 64 X>Y? 65 GTO 05 66 LBL 03 67 FC?C 01 68 SF 01 69 GTO 01 |
70 LBL 04
71 RCL 05 72 3 73 / 74 1 75 + 76 INT 77 CHS 78 " SNAKE" 79 AVIEW 80 GTO 02 81 LBL 05 82 15 83 RCL 05 84 7 85 / 86 - 87 INT 88 1 89 + 90 " LADDER" 91 AVIEW 92 GTO 02 |
93 LBL 06
94 RCL 00 95 R-D 96 FRC 97 STO 00 98 6 99 * 100 1 101 + 102 INT 103 RTN 104 LBL 07 105 FS? 01 106 " YOU WIN" 107 FC?C 01 108 " HP-41 WINS" 109 FIX 4 110 SF 29 111 AVIEW 112 END |
( 210 bytes / SIZE 006 )
STACK | INPUTS | OUTPUTS |
X | / | / |
Example: 5
STO 00 XEQ "SNLD"
" 00/00"
and flag F01 is set: it's your turn to play, press any key
" 04/00 3+1"
the dice are 3 & 1 so you move on square#04. Flag F01 is cleared so
the HP-41 roll the dice
" 04/07 6+1"
the dice are 6 & 1 the HP-41 move on square#07...
" SNAKE"
but there is a snake, the calculator moves back...
" 04/04 6+1"
... on square#04...
" LADDER"
a ladder! HP-41 moves forward
" 04/19 6+1"
... on square#19 and flag F01 is set again: you press a key
" 13/19 3+6"
the dice are 3 & 6 so you move on square#13 ... and so forth ...
Notes:
-The HP-41 displays " S1/S2 D1+D2" where S1 is your square, S2 is HP-41's square, D1+D2 are the 2 dice.
-Actually, the game is completely determined by the seed you've stored
in register R00
-If you want to influence the chance, add FS? 01 ST+ 00
after line 16:
the keys you'll press will modify the random numbers in register
R00.
-Do not store a number like PI in R00: the sequence of "random" numbers
would be 0 0 0 0 ....
( or change the random number generator lines 94 to 97 )
-There is a snake if r > 0.8
where r is the content of register R00
-There is a ladder if r < 0.8/6
-Change lines 59-62-63 if you prefer more ( or less ) snakes
and/or ladders.