2018-09-29 15:33:59 +00:00
|
|
|
%output prg
|
|
|
|
%import c64lib
|
2018-10-21 21:03:15 +00:00
|
|
|
%import c64utils
|
2018-09-29 15:33:59 +00:00
|
|
|
|
|
|
|
~ main {
|
2018-10-21 21:03:15 +00:00
|
|
|
sub start() {
|
|
|
|
str name = "????????????????????????????????????????"
|
|
|
|
str guess = "??????????"
|
|
|
|
ubyte secretnumber = 0
|
|
|
|
ubyte attempts_left = 10
|
|
|
|
memory uword freadstr_arg = $22 ; argument for FREADSTR
|
2018-11-21 23:01:41 +00:00
|
|
|
uword testword
|
2018-09-29 15:33:59 +00:00
|
|
|
|
|
|
|
; greeting
|
2018-12-06 23:08:22 +00:00
|
|
|
c64.VMCSB = %10111 ; switch lowercase chars
|
|
|
|
c64.STROUT("Please introduce yourself: ")
|
2018-11-21 23:01:41 +00:00
|
|
|
Y = c64scr.input_chars(name)
|
2018-11-28 00:12:23 +00:00
|
|
|
c64.CHROUT('\n')
|
|
|
|
c64.CHROUT('\n')
|
2018-12-06 23:08:22 +00:00
|
|
|
c64.STROUT("Hello, ")
|
|
|
|
c64.STROUT(name)
|
|
|
|
c64.STROUT(".\nLet's play a number guessing game.\nI am thinking of a number from 1 to 100!You'll have to guess it!\n")
|
2018-09-29 15:33:59 +00:00
|
|
|
|
|
|
|
; create a secret random number from 1-100
|
2018-12-06 23:08:22 +00:00
|
|
|
c64.RND() ; fac = random number
|
2018-09-29 15:33:59 +00:00
|
|
|
c64.MUL10() ; fac *= 10
|
|
|
|
c64.MUL10() ; .. and now *100
|
|
|
|
c64.FADDH() ; add 0.5..
|
|
|
|
c64.FADDH() ; and again, so +1 total
|
2018-12-04 21:30:35 +00:00
|
|
|
A, Y = c64flt.GETADRAY()
|
2018-09-29 15:33:59 +00:00
|
|
|
secretnumber = A
|
|
|
|
|
|
|
|
ask_guess:
|
2018-12-06 23:08:22 +00:00
|
|
|
c64.STROUT("\nYou have ")
|
2018-09-29 15:33:59 +00:00
|
|
|
c64scr.print_byte_decimal(attempts_left)
|
2018-12-06 23:08:22 +00:00
|
|
|
c64.STROUT(" guess")
|
|
|
|
if(attempts_left>0) c64.STROUT("es")
|
2018-09-29 15:33:59 +00:00
|
|
|
|
2018-12-06 23:08:22 +00:00
|
|
|
c64.STROUT(" left.\nWhat is your next guess? ")
|
2018-09-29 15:33:59 +00:00
|
|
|
Y = c64scr.input_chars(guess)
|
2018-11-28 00:12:23 +00:00
|
|
|
c64.CHROUT('\n')
|
|
|
|
freadstr_arg = guess
|
2018-09-29 15:33:59 +00:00
|
|
|
c64.FREADSTR(A)
|
2018-12-04 21:30:35 +00:00
|
|
|
A, Y = c64flt.GETADRAY()
|
2018-09-29 15:33:59 +00:00
|
|
|
if(A==secretnumber) {
|
2018-12-06 23:08:22 +00:00
|
|
|
c64.STROUT("\nThat's my number, impressive!\n")
|
2018-09-29 15:33:59 +00:00
|
|
|
goto goodbye
|
|
|
|
}
|
2018-12-06 23:08:22 +00:00
|
|
|
c64.STROUT("\nThat is too ")
|
2018-09-29 15:33:59 +00:00
|
|
|
if(A > secretnumber)
|
2018-12-06 23:08:22 +00:00
|
|
|
c64.STROUT("low!\n")
|
2018-09-29 15:33:59 +00:00
|
|
|
else
|
2018-12-06 23:08:22 +00:00
|
|
|
c64.STROUT("high!\n")
|
2018-09-29 15:33:59 +00:00
|
|
|
|
|
|
|
attempts_left--
|
|
|
|
if(attempts_left>0) goto ask_guess
|
|
|
|
; more efficient: if_nz goto ask_guess
|
|
|
|
|
|
|
|
; game over.
|
2018-12-06 23:08:22 +00:00
|
|
|
c64.STROUT("\nToo bad! It was: ")
|
2018-09-29 15:33:59 +00:00
|
|
|
c64scr.print_byte_decimal(secretnumber)
|
2018-11-28 00:12:23 +00:00
|
|
|
c64.CHROUT('\n')
|
2018-09-29 15:33:59 +00:00
|
|
|
|
|
|
|
goodbye:
|
2018-12-06 23:08:22 +00:00
|
|
|
c64.STROUT("\nThanks for playing, ")
|
|
|
|
c64.STROUT(name)
|
|
|
|
c64.STROUT(".\n")
|
2018-09-29 15:33:59 +00:00
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|