81 lines
1.7 KiB
Text
81 lines
1.7 KiB
Text
do
|
|
clear screen
|
|
n$=""
|
|
for i=1 to 4
|
|
n$=n$+str$(int(ran(9)+1))
|
|
next i
|
|
print at(35,0) "24 GAME\n"
|
|
print "Combine numbers and operators for obtain 24."
|
|
print "Allowed characters: ";
|
|
i$=n$+"+-*/()"
|
|
for i=1 to 10
|
|
print mid$(i$,i,1)," ";
|
|
next i
|
|
print "[nothing to end program]\n"
|
|
label accept
|
|
p$=""
|
|
i$=n$+"+-*/()"
|
|
print at(0,4);:input "Enter the formula: " f$
|
|
if f$="" end
|
|
for i=1 to len(f$)
|
|
c$=mid$(f$,i,1)
|
|
switch c$
|
|
case " ": f$=left$(f$,i-1)+right$(f$,len(f$)-i): break
|
|
case "+":case "-":case "*":case "/": p$=p$+"o": break
|
|
case "(":case ")": p$=p$+c$: break
|
|
case mid$(i$,1,1): p$=p$+"n": mid$(i$,1,1)=" ": break
|
|
case mid$(i$,2,1): p$=p$+"n": mid$(i$,2,1)=" ": break
|
|
case mid$(i$,3,1): p$=p$+"n": mid$(i$,3,1)=" ": break
|
|
case mid$(i$,4,1): p$=p$+"n": mid$(i$,4,1)=" ": break
|
|
default: message(" = Invalid argument! "): break
|
|
end switch
|
|
if f$="" goto accept
|
|
next i
|
|
restore
|
|
for i=1 to 11
|
|
read t$
|
|
if t$=p$ break
|
|
next i
|
|
if t$<>p$ then
|
|
message(" = Bad construction! ")
|
|
goto accept
|
|
end if
|
|
let r=eval(f$)
|
|
print "\n",f$," = ",r," ";
|
|
if r<>24 then
|
|
message(" = Wrong! ")
|
|
goto accept
|
|
else
|
|
message(" = Correct! ")
|
|
pause 5
|
|
end if
|
|
loop
|
|
|
|
DATA "nononon"
|
|
DATA "(non)onon"
|
|
DATA "nono(non)"
|
|
DATA "no(no(non))"
|
|
DATA "((non)on)on"
|
|
DATA "no(non)on"
|
|
DATA "(non)o(non)"
|
|
DATA "no((non)on)"
|
|
DATA "(nonon)on"
|
|
DATA "(no(non))on"
|
|
DATA "no(nonon)"
|
|
|
|
sub message(m$)
|
|
print at(0,7) f$,m$
|
|
beep: beep: beep
|
|
pause 1
|
|
print at(19,4) " "
|
|
f$=""
|
|
end sub
|
|
|
|
sub eval(c$)
|
|
static linea
|
|
|
|
linea=linea+1
|
|
c$="sub s"+str$(linea+1000000,"#######")+"():return "+c$+":end sub"
|
|
compile c$
|
|
return execute(mid$(c$,5,8))
|
|
end sub
|