mirror of
https://github.com/coding-horror/basic-computer-games.git
synced 2025-12-22 07:10:42 -08:00
Added MiniScript version of 36_Flip_Flop.
(This game is too hard for me!)
This commit is contained in:
19
00_Alternate_Languages/36_Flip_Flop/MiniScript/README.md
Normal file
19
00_Alternate_Languages/36_Flip_Flop/MiniScript/README.md
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
Original source downloaded from [Vintage Basic](http://www.vintage-basic.net/games.html).
|
||||||
|
|
||||||
|
Conversion to [MiniScript](https://miniscript.org).
|
||||||
|
|
||||||
|
Ways to play:
|
||||||
|
|
||||||
|
0. Try-It! Page:
|
||||||
|
Go to https://miniscript.org/tryit/, clear the sample code from the code editor, and paste in the contents of flipflop.ms. Then click the "Run Script" button. Program output (and input) will appear in the green-on-black terminal display to the right of or below the code editor.
|
||||||
|
|
||||||
|
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 flipflop.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 "flipflop"
|
||||||
|
run
|
||||||
97
00_Alternate_Languages/36_Flip_Flop/MiniScript/flipflop.ms
Normal file
97
00_Alternate_Languages/36_Flip_Flop/MiniScript/flipflop.ms
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
print " "*32 + "FlipFlop"
|
||||||
|
print " "*15 + "Creative Computing Morristown, New Jersey"
|
||||||
|
print
|
||||||
|
// Created by Michael Cass (1978)
|
||||||
|
// Ported to MiniScript by Joe Strout (2023)
|
||||||
|
|
||||||
|
print "The object of this puzzle is to change this:"
|
||||||
|
print
|
||||||
|
print "X X X X X X X X X X"
|
||||||
|
print
|
||||||
|
print "to this:"
|
||||||
|
print
|
||||||
|
print "O O O O O O O O O O"
|
||||||
|
print
|
||||||
|
print "By typing the number corresponding to the position of the"
|
||||||
|
print "letter on some numbers, one position will change, on"
|
||||||
|
print "others, two will change. To reset line to all X's, type 0"
|
||||||
|
print "(zero) and to start over in the middle of a game, type "
|
||||||
|
print "11 (eleven)."
|
||||||
|
print
|
||||||
|
|
||||||
|
startNewGame = function
|
||||||
|
globals.q = rnd
|
||||||
|
globals.guesses = 0
|
||||||
|
print "Here is the starting line of X's."
|
||||||
|
print
|
||||||
|
print "1 2 3 4 5 6 7 8 9 10"
|
||||||
|
print "X X X X X X X X X X"
|
||||||
|
print
|
||||||
|
end function
|
||||||
|
|
||||||
|
getInput = function
|
||||||
|
while true
|
||||||
|
n = input("Input the number: ").val
|
||||||
|
if n == floor(n) and 0 <= n <= 11 then break
|
||||||
|
print "Illegal entry--try again."
|
||||||
|
end while
|
||||||
|
return n
|
||||||
|
end function
|
||||||
|
|
||||||
|
startNewGame
|
||||||
|
while true
|
||||||
|
A = [""] + ["X"] * 10 // (include empty 0th element so we can index 1-based
|
||||||
|
m = 0 // (previous input)
|
||||||
|
while true
|
||||||
|
n = getInput
|
||||||
|
if n == 11 then
|
||||||
|
startNewGame
|
||||||
|
continue
|
||||||
|
else if n == 0 then
|
||||||
|
A = ["X"] * 10
|
||||||
|
continue
|
||||||
|
end if
|
||||||
|
|
||||||
|
if n != m then
|
||||||
|
// when user enters a different number from previous time
|
||||||
|
m = n
|
||||||
|
if A[n] == "O" then A[n] = "X" else A[n] = "O"
|
||||||
|
while m == n
|
||||||
|
r = tan(q + n/q - n) - sin(q/n) + 336*sin(8*n)
|
||||||
|
n = floor(10 * (r - floor(r)))
|
||||||
|
if A[n] != "O" then
|
||||||
|
A[n] = "O"
|
||||||
|
break
|
||||||
|
end if
|
||||||
|
A[n] = "X"
|
||||||
|
end while
|
||||||
|
else
|
||||||
|
// when n == m, i.e., user entered the same number twice in a row
|
||||||
|
while m == n
|
||||||
|
if A[n] == "O" then A[n] = "X" else A[n] = "O"
|
||||||
|
r = 0.592 * (1 / tan(q/n + q)) / sin(n*2 + q) - cos(n)
|
||||||
|
n = floor(10 * (r - floor(r)))
|
||||||
|
if A[n] != "O" then
|
||||||
|
A[n] = "O"
|
||||||
|
break
|
||||||
|
end if
|
||||||
|
A[n] = "X"
|
||||||
|
end while
|
||||||
|
end if
|
||||||
|
|
||||||
|
print "1 2 3 4 5 6 7 8 9 10"
|
||||||
|
print A[1:].join
|
||||||
|
guesses += 1
|
||||||
|
if A[1:] == ["O"]*10 then break
|
||||||
|
end while
|
||||||
|
|
||||||
|
if guesses <= 12 then
|
||||||
|
print "Very good. You guessed it in only " + guesses + " guesses."
|
||||||
|
else
|
||||||
|
print "Try harder next time. It took you " + guesses + " guesses."
|
||||||
|
end if
|
||||||
|
|
||||||
|
yesNo = input("Do you want to try another puzzle? ").lower
|
||||||
|
if not yesNo or yesNo[0] == "n" then break
|
||||||
|
print
|
||||||
|
end while
|
||||||
Reference in New Issue
Block a user