Added MiniScript implementation of bagels.

This commit is contained in:
JoeStrout
2023-07-11 07:50:40 -07:00
parent 5a886283aa
commit d9b3d47343
2 changed files with 99 additions and 0 deletions

View File

@@ -0,0 +1,16 @@
Original source downloaded from [Vintage Basic](http://www.vintage-basic.net/games.html).
Conversion to [MiniScript](https://miniscript.org).
Ways to play:
1. Command-Line MiniScript:
Download for your system from https://miniscript.org/cmdline/, install, and then run the program with a command such as:
miniscript bagels.ms
2. Mini Micro:
Download Mini Micro from https://miniscript.org/MiniMicro/, launch, and then click the top disk slot and chose "Mount Folder..." Select the folder containing the BASIC program. Then, at the Mini Micro command prompt, enter:
load "bagels"
run

View File

@@ -0,0 +1,83 @@
print " "*33 + "BAGELS"
print " "*15 + "Creative Computing Morristown, New Jersey"; print; print
// *** BAGELS Number Guessing Game
// *** Original source unknown but suspected to be
// *** Lawrence Hall of Science, U.C. Berkely
print; print; print
inp = input("Would you like the rules (yes or no)? ")
if not inp or inp[0].lower != "n" then
print; print "I am thinking of a three-digit number. Try to guess"
print "my number and I will give you clues as follows:"
print " PICO - one digit correct but in the wrong position"
print " FERMI - one digit correct and in the right position"
print " BAGELS - no digits correct"
end if
pickNumber = function
// pick three unique random digits
while true
actual = [floor(10*rnd), floor(10*rnd), floor(10*rnd)]
if actual[0] != actual[1] and actual[0] != actual[2] and actual[1] != actual[2] then break
end while
//print "DEBUG: actual=" + actual
print; print "O.K. I have a number in mind."
return actual
end function
getGuess = function(guessNum)
isNotDigit = function(c); return c < "0" or c > "9"; end function
while true
inp = input("Guess #" + guessNum + "? ")
if inp.len != 3 then
print "Try guessing a three-digit number."
else if inp[0] == inp[1] or inp[0] == inp[2] or inp[1] == inp[2] then
print "Oh, I forgot to tell you that the number I have in mind"
print "has no two digits the same."
else if isNotDigit(inp[0]) or isNotDigit(inp[1]) or isNotDigit(inp[2]) then
print "What?"
else
return [inp[0].val, inp[1].val, inp[2].val]
end if
end while
end function
doOneGame = function
actual = pickNumber
for guessNum in range(1, 20)
guess = getGuess(guessNum)
picos = 0; fermis = 0
for i in [0,1,2]
if guess[i] == actual[i] then
fermis += 1
else if actual.indexOf(guess[i]) != null then
picos += 1
end if
end for
if fermis == 3 then
print "YOU GOT IT!!!"
globals.score += 1
return
else if picos or fermis then
print "PICO " * picos + "FERMI " * fermis
else
print "BAGELS"
end if
end for
print "Oh well."
print "That's twenty guesses. My number was " + actual.join("")
end function
// main loop
score = 0
while true
doOneGame
print
inp = input("Play again (yes or no)? ")
if not inp or inp[0].upper != "Y" then break
end while
if score then
print; print "A " + score + " point BAGELS buff!!"
end if
print "Hope you had fun. Bye."