mirror of
https://github.com/coding-horror/basic-computer-games.git
synced 2025-12-21 23:00:43 -08:00
Added MiniScript implementation of bagels.
This commit is contained in:
16
00_Alternate_Languages/05_Bagels/MiniScript/README.md
Normal file
16
00_Alternate_Languages/05_Bagels/MiniScript/README.md
Normal 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
|
||||
83
00_Alternate_Languages/05_Bagels/MiniScript/bagels.ms
Normal file
83
00_Alternate_Languages/05_Bagels/MiniScript/bagels.ms
Normal 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."
|
||||
|
||||
Reference in New Issue
Block a user