Files
basic-computer-games/00_Alternate_Languages/86_Target/MiniScript/target.ms
2023-09-15 15:45:26 -07:00

114 lines
3.1 KiB
Plaintext

degToRad = function(n)
return n * pi / 180
end function
radToDeg = function(n)
return n * 180 / pi
end function
roundDown = function(n, r)
return floor(n / r) * r
end function
getCoord = function(distance, radX, radZ)
xc = sin(radZ)*cos(radX)*distance
yc = sin(radZ)*sin(radX)*distance
zc = cos(radZ)*distance
return [xc,yc,zc]
end function
distanceBetween = function (d1,d2)
return ((d1[0]-d2[0])^2 + (d1[1]-d2[1])^2 + (d1[2]-d2[2])^2)^.5
end function
print " " * 33 + "TARGET"
print " " * 15 + "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
print; print; print
print "You are the weapons officer on the Starship Enterprise"
print "and this is a test to see how accurae a shot you"
print "are in a 3-dimensional range. You will be told"
print "the radian offset for the X and Z axes, the location"
print "of the target in 3-dimensional rectangular coordinates,"
print "the approximate number of degrees from the X and Z"
print "axes, and the approximate distance to the target."
print "You will then proceed to shoot at the target until it is"
print "destroyed!"
print; print
print "Good luck!"
roundToList = [20,10,2,1]
ready = true
while ready
turns = -1
radX = rnd * 2 * pi
radZ = rnd * 2 * pi
print "Radians from X axis = " + radX + " from Z axis = " + radZ
distance = 100000 * rnd * rnd
coords = getCoord(distance, radX, radZ)
print "Target sighted: Approx Coordinates (X,Y,Z) = ("+coords.join(",")+")"
gameRunning = true
while gameRunning
turns += 1
if turns >=4 then
estDistance = distance
else
estDistance = roundDown(distance, roundToList[turns])
end if
print " Estimated Distance: " + estDistance
print
tx = input ("Input angle deviation from X in degrees: ").val
tz = input ("Input angle deviation from Z in degrees: ").val
tdist = input ("Input distance: ").val
print
if tdist < 20 then
print "You blew yourself up!!"
gameRunning = false
else
tx = degToRad(tx)
tz = degToRad(tz)
print "Radians from X-axis = " + tx + " from Z-axis = " + tz
targeted = getCoord(tdist, tx,tz)
distBet = distanceBetween(coords, targeted)
if distBet > 20 then
dx = targeted[0] - coords[0]
dy = targeted[1] - coords[1]
dz = targeted[2] - coords[2]
xMsg = {false: "Shot in front of target ", true: "Shot behind target "}
print xMsg[dx<0] + dx + " kilometers."
yMsg = {false: "Shot to left of target ", true: "Shot to right of target "}
print yMsg[dy<0] + dy + " kilometers."
zMsg = {false: "Shot above target ", true: "Shot below target "}
print zMsg[dz<0] + dz + " kilometers."
print "Approx position of explosion + (" + targeted.join(",") + ")"
print " Distance from target = " + distBet
print
print
else
print
print " * * * HIT * * * Target is non-functional"
print
print "Distance of explosion from target was " + distBet + "kilometers."
print
print "Mission accomplished in " + (turns+1) + " shots."
print
gameRunning = false
end if
end if
end while
print
ans = input("Ready for next target? ").lower
if ans == "" then
ready == false
else
ready = ans[0].lower == "y"
end if
print
end while