mirror of
https://github.com/coding-horror/basic-computer-games.git
synced 2025-12-22 07:10:42 -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