mirror of
https://github.com/irmen/prog8.git
synced 2024-12-11 19:49:45 +00:00
75 lines
2.0 KiB
Lua
75 lines
2.0 KiB
Lua
%import c64utils
|
|
%import c64lib
|
|
%zeropage basicsafe
|
|
|
|
; The classic number guessing game.
|
|
|
|
main {
|
|
|
|
sub start() {
|
|
str name = "????????????????????????????????????????"
|
|
str input = "??????????"
|
|
ubyte secretnumber = rnd() % 99 + 1 ; random number 1..100
|
|
ubyte attempts_left
|
|
|
|
c64.VMCSB |= 2 ; switch lowercase chars
|
|
c64scr.print("Please introduce yourself: ")
|
|
void c64scr.input_chars(name)
|
|
c64scr.print("\n\nHello, ")
|
|
c64scr.print(name)
|
|
c64scr.print(".\nLet's play a number guessing game.\nI am thinking of a number from 1 to 100!You'll have to guess it!\n")
|
|
|
|
for attempts_left in 10 downto 1 {
|
|
|
|
c64scr.print("\nYou have ")
|
|
c64scr.print_ub(attempts_left)
|
|
c64scr.print(" guess")
|
|
if attempts_left>1
|
|
c64scr.print("es")
|
|
c64scr.print(" left.\nWhat is your next guess? ")
|
|
void c64scr.input_chars(input)
|
|
ubyte guess = lsb(c64utils.str2uword(input))
|
|
|
|
if guess==secretnumber {
|
|
ending(true)
|
|
return
|
|
} else {
|
|
c64scr.print("\n\nThat is too ")
|
|
if guess<secretnumber
|
|
c64scr.print("low!\n")
|
|
else
|
|
c64scr.print("high!\n")
|
|
}
|
|
}
|
|
|
|
ending(false)
|
|
return
|
|
|
|
|
|
sub ending(ubyte success) {
|
|
if success
|
|
c64scr.print("\n\nYou guessed it, impressive!\n")
|
|
else {
|
|
c64scr.print("\nToo bad! My number was: ")
|
|
c64scr.print_ub(secretnumber)
|
|
c64scr.print(".\n")
|
|
}
|
|
c64scr.print("Thanks for playing, ")
|
|
c64scr.print(name)
|
|
c64scr.print(".\n")
|
|
|
|
check_eval_stack()
|
|
}
|
|
}
|
|
|
|
|
|
sub check_eval_stack() {
|
|
if X!=255 {
|
|
c64scr.print("stack x=")
|
|
c64scr.print_ub(X)
|
|
c64scr.print(" error!\n")
|
|
}
|
|
}
|
|
|
|
}
|