// Depth Charge // Originally by Dana Noftle (1978) // Translated from BASIC to MiniScript by Ryushinaka and Joe Strout (2023) askYesNo = function(prompt) while true answer = input(prompt).lower[:1] if answer == "y" or answer == "n" then return answer end while end function showWelcome = function print print " "*34 + "Depth Charge" print " "*15 + "Creative Computing Morristown, New Jersey" print end function setup = function while true globals.size = input("Dimension of search area? ").val if size > 0 then break end while globals.numCharges = ceil(log(size,2)) if numCharges == 0 then globals.numCharges = 1 // ensure we have at least 1 shot print "You are the captain of the destroyer USS Computer." print "An enemy sub has been causing you trouble. Your" print "mission is to destroy it. You have " + numCharges + " shots." print "Specify depth charge explosion point with a" print "trio of numbers -- the first two are the" print "surface coordinates; the third is the depth." end function showShotResult = function(shot,location) result = "Sonar reports shot was " if shot[1] > location[1] then result = result + "north" else if shot[1] < location[1] then result = result + "south" end if if shot[0] > location[0] then result = result + "east" else if shot[0] < location[0] then result = result + "west" end if if shot[1] != location[1] or shot[0] != location[0] then result = result + " and " end if if shot[2] > location[2] then result = result + "too low." else if shot[2] < location[2] then result = result + "too high." else result = result + "depth OK." end if print result end function getShot = function shotPos = [0,0,0] while true rawGuess = input("Enter coordinates: ").split(" ") if rawGuess.len == 3 then shotPos[0] = rawGuess[0].val shotPos[1] = rawGuess[1].val shotPos[2] = rawGuess[2].val return shotPos else print "Please enter coordinates separated by spaces" print "Example: 3 2 1" end if end while end function playGame = function print "Good luck!" print subPos = [floor(rnd*size), floor(rnd*size), floor(rnd*size)] // For debugging, you can give away the answer: //print "(Sub is hidden at: " + subPos.join(" ") + ")" for c in range(1, numCharges) print "Trial " + c shot = getShot if shot[0] == subPos[0] and shot[1] == subPos[1] and shot[2] == subPos[2] then print "B O O M ! ! You found it in " + c + " tries!" return else showShotResult(shot,subPos) end if end for print "You have been torpedoed! Abandon ship!" print "The submarine was at " + subPos.join(" ") + "." end function showWelcome setup while true playGame if askYesNo("Another game (Y or N): ") == "n" then print "OK. Hope you enjoyed yourself." break end if end while