Files
basic-computer-games/00_Alternate_Languages/31_Depth_Charge/MiniScript/depthcharge.ms

117 lines
2.9 KiB
Plaintext

// 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