mirror of
https://github.com/coding-horror/basic-computer-games.git
synced 2026-01-11 04:35:48 -08:00
MAINT: Apply pre-commit
Remove byte-order-marker pre-commit check as there would be many adjustments necessary
This commit is contained in:
@@ -112,7 +112,7 @@ namespace Splat
|
||||
else
|
||||
{
|
||||
int JumpPosition = DistanceLog.IndexOf(Distance);
|
||||
|
||||
|
||||
|
||||
if (ArrayLength - JumpPosition <= .1 * ArrayLength)
|
||||
{
|
||||
@@ -155,13 +155,13 @@ namespace Splat
|
||||
{
|
||||
bool InputSuccess = false;
|
||||
Random rand = new Random();
|
||||
double Velocity = 0;
|
||||
double TerminalVelocity = 0;
|
||||
double Acceleration = 0;
|
||||
double AccelerationInput = 0;
|
||||
double Altitude = ((9001 * rand.NextDouble()) + 1000);
|
||||
double SecondsTimer = 0;
|
||||
double Distance = 0;
|
||||
double Velocity = 0;
|
||||
double TerminalVelocity = 0;
|
||||
double Acceleration = 0;
|
||||
double AccelerationInput = 0;
|
||||
double Altitude = ((9001 * rand.NextDouble()) + 1000);
|
||||
double SecondsTimer = 0;
|
||||
double Distance = 0;
|
||||
bool TerminalVelocityReached = false;
|
||||
|
||||
Console.WriteLine("");
|
||||
@@ -177,7 +177,7 @@ namespace Splat
|
||||
InputSuccess = double.TryParse(Input, out TerminalVelocity);
|
||||
if (!InputSuccess)
|
||||
Console.WriteLine("*** Please enter a valid number ***");
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -203,7 +203,7 @@ namespace Splat
|
||||
InputSuccess = double.TryParse(Input, out AccelerationInput);
|
||||
if (!InputSuccess)
|
||||
Console.WriteLine("*** Please enter a valid number ***");
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -232,7 +232,7 @@ namespace Splat
|
||||
InputSuccess = double.TryParse(Input, out SecondsTimer);
|
||||
if (!InputSuccess)
|
||||
Console.WriteLine("*** Please enter a valid number ***");
|
||||
}
|
||||
}
|
||||
|
||||
// Begin the drop!
|
||||
Console.WriteLine("Here we go.");
|
||||
@@ -240,9 +240,9 @@ namespace Splat
|
||||
|
||||
WriteColumnOutput("Time (sec)", "Dist to Fall (ft)");
|
||||
WriteColumnOutput("==========", "=================");
|
||||
|
||||
|
||||
// Loop through the number of seconds stepping by 8 intervals
|
||||
for (double i = 0; i < SecondsTimer; i+=(SecondsTimer/8))
|
||||
for (double i = 0; i < SecondsTimer; i+=(SecondsTimer/8))
|
||||
{
|
||||
if (i > (Velocity / Acceleration))
|
||||
{
|
||||
@@ -294,17 +294,17 @@ namespace Splat
|
||||
|
||||
// Store succesful jump and write out a fun message
|
||||
WriteSuccessfulResults(Distance);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void PlayTheGame()
|
||||
{
|
||||
bool ContinuePlay = false;
|
||||
|
||||
|
||||
DisplayIntro();
|
||||
|
||||
do
|
||||
do
|
||||
{
|
||||
PlayOneRound();
|
||||
|
||||
@@ -327,4 +327,4 @@ namespace Splat
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -354,4 +354,4 @@ public class Splat {
|
||||
return terminalVelocity / acceleration;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,10 +12,10 @@ function input()
|
||||
{
|
||||
var input_element;
|
||||
var input_str;
|
||||
|
||||
|
||||
return new Promise(function (resolve) {
|
||||
input_element = document.createElement("INPUT");
|
||||
|
||||
|
||||
print("? ");
|
||||
input_element.setAttribute("type", "text");
|
||||
input_element.setAttribute("length", "50");
|
||||
|
||||
@@ -21,7 +21,7 @@ print <<'EOD';
|
||||
|
||||
|
||||
Welcome to 'Splat' -- the game that simulates a parachute
|
||||
jump. Try to open your chute at the last possible
|
||||
jump. Try to open your chute at the last possible
|
||||
moment without going splat.
|
||||
EOD
|
||||
|
||||
@@ -115,8 +115,8 @@ EOD
|
||||
if ( $fractile <= 0.1 ) {
|
||||
print <<"EOD";
|
||||
Wow! That's some jumping. Of the $jumps successful jumps
|
||||
before yours, only $better opened their chutes lower than
|
||||
you did.
|
||||
before yours, only $better opened their chutes lower than
|
||||
you did.
|
||||
EOD
|
||||
} elsif ( $fractile <= 0.25 ) {
|
||||
print <<"EOD";
|
||||
@@ -126,7 +126,7 @@ opened.
|
||||
EOD
|
||||
} elsif ( $fractile <= 0.5 ) {
|
||||
print <<"EOD";
|
||||
Not bad. There have been $jumps successful jumps before yours.
|
||||
Not bad. There have been $jumps successful jumps before yours.
|
||||
You were beaten out by $better of them.
|
||||
EOD
|
||||
} elsif ( $fractile <= 0.75 ) {
|
||||
@@ -136,7 +136,7 @@ $jumps successful jumps before yours.
|
||||
EOD
|
||||
} elsif ( $fractile <= 0.9 ) {
|
||||
print <<"EOD";
|
||||
Humph! Don't you have any sporting blood? There were
|
||||
Humph! Don't you have any sporting blood? There were
|
||||
$jumps successful jumps before yours and you came in $worse jumps
|
||||
better than the worst. Shape up!!!
|
||||
EOD
|
||||
|
||||
@@ -137,7 +137,7 @@ def jump():
|
||||
# here, the displacement is just a function of the terminal
|
||||
# velocity and the time passed after having reached terminal
|
||||
# velocity: d2 = v * (t - t_reached_term_vel)
|
||||
d1 = (v ** 2) / (2 * a)
|
||||
d1 = (v**2) / (2 * a)
|
||||
d2 = v * (t - (v / a))
|
||||
altitude = initial_altitude - (d1 + d2)
|
||||
if altitude <= 0:
|
||||
@@ -160,7 +160,7 @@ def jump():
|
||||
# From the second equation of motion,
|
||||
# d = v_0 * t + 0.5 * a * t^2, with v_0 = 0, we can get
|
||||
# the displacement using d1 = a / 2 * t^2
|
||||
d1 = (a / 2) * (t ** 2)
|
||||
d1 = (a / 2) * (t**2)
|
||||
altitude = initial_altitude - d1
|
||||
if altitude <= 0:
|
||||
# Time taken for an object to fall to the ground given that
|
||||
@@ -206,7 +206,7 @@ def jump_stats(previous_jumps, chute_altitude):
|
||||
the current jump is better.
|
||||
"""
|
||||
n_previous_jumps = len(previous_jumps)
|
||||
n_better = sum([1 for pj in previous_jumps if chute_altitude < pj])
|
||||
n_better = sum(1 for pj in previous_jumps if chute_altitude < pj)
|
||||
return n_previous_jumps, n_better
|
||||
|
||||
|
||||
|
||||
@@ -3,122 +3,122 @@
|
||||
40 PRINT:PRINT:PRINT
|
||||
50 DIM A(42)
|
||||
95 PRINT "WELCOME TO 'SPLAT' -- THE GAME THAT SIMULATES A PARACHUTE"
|
||||
96 PRINT "JUMP. TRY TO OPEN YOUR CHUTE AT THE LAST POSSIBLE"
|
||||
96 PRINT "JUMP. TRY TO OPEN YOUR CHUTE AT THE LAST POSSIBLE"
|
||||
97 PRINT "MOMENT WITHOUT GOING SPLAT."
|
||||
118 PRINT:PRINT:D1=0:V=0:A=0:N=0:M=0:D1=INT(9001*RND(1)+1000)
|
||||
119 PRINT "SELECT YOUR OWN TERMINAL VELOCITY (YES OR NO)";:INPUT A1$
|
||||
119 PRINT "SELECT YOUR OWN TERMINAL VELOCITY (YES OR NO)";:INPUT A1$
|
||||
120 IF A1$="NO" THEN 128
|
||||
121 IF A1$<>"YES" THEN PRINT "YES OR NO";:INPUT A1$:GOTO 120
|
||||
123 PRINT "WHAT TERMINAL VELOCITY (MI/HR)";:INPUT V1
|
||||
123 PRINT "WHAT TERMINAL VELOCITY (MI/HR)";:INPUT V1
|
||||
125 V1=V1*(5280/3600):V=V1+((V1*RND(1))/20)-((V1*RND(1))/20):GOTO 135
|
||||
128 V1=INT(1000*RND(1))
|
||||
130 PRINT "OK. TERMINAL VELOCITY ="V1"MI/HR"
|
||||
131 V1=V1*(5280/3600):V=V1+((V1*RND(1))/20)-((V1*RND(1))/20)
|
||||
135 PRINT "WANT TO SELECT ACCELERATION DUE TO GRAVITY (YES OR NO)";
|
||||
131 V1=V1*(5280/3600):V=V1+((V1*RND(1))/20)-((V1*RND(1))/20)
|
||||
135 PRINT "WANT TO SELECT ACCELERATION DUE TO GRAVITY (YES OR NO)";
|
||||
136 INPUT B1$
|
||||
140 IF B1$="NO" THEN 150
|
||||
141 IF B1$<>"YES" THEN PRINT "YES OR NO";:INPUT B1$:GOTO 140
|
||||
143 PRINT "WHAT ACCELERATION (FT/SEC/SEC)";:INPUT A2
|
||||
143 PRINT "WHAT ACCELERATION (FT/SEC/SEC)";:INPUT A2
|
||||
145 A=A2+((A2*RND(1))/20)-((A2*RND(1))/20):GOTO 205
|
||||
150 ON INT(1+(10*RND(1)))GOTO 151,152,153,154,155,156,157,158,159,160
|
||||
150 ON INT(1+(10*RND(1)))GOTO 151,152,153,154,155,156,157,158,159,160
|
||||
151 PRINT"FINE. YOU'RE ON MERCURY. ACCELERATION=12.2 FT/SEC/SEC.":GOTO 161
|
||||
152 PRINT"ALL RIGHT. YOU'RE ON VENUS. ACCELERATION=28.3 FT/SEC/SEC.":GOTO 162
|
||||
153 PRINT "THEN YOU'RE ON EARTH. ACCELERATION=32.16 FT/SEC/SEC.":GOTO 163
|
||||
153 PRINT "THEN YOU'RE ON EARTH. ACCELERATION=32.16 FT/SEC/SEC.":GOTO 163
|
||||
154 PRINT"FINE. YOU'RE ON THE MOON. ACCELERATION=5.15 FT/SEC/SEC.":GOTO 164
|
||||
155 PRINT"ALL RIGHT. YOU'RE ON MARS. ACCELERATION=12.5 FT/SEC/SEC.":GOTO 165
|
||||
155 PRINT"ALL RIGHT. YOU'RE ON MARS. ACCELERATION=12.5 FT/SEC/SEC.":GOTO 165
|
||||
156 PRINT"THEN YOU'RE ON JUPITER. ACCELERATION=85.2 FT/SEC/SEC.":GOTO 166
|
||||
157 PRINT"FINE. YOU'RE ON SATURN. ACCELERATION=37.6 FT/SEC/SEC.":GOTO 167
|
||||
158 PRINT"ALL RIGHT. YOU'RE ON URANUS. ACCELERATION=33.8 FT/SEC/SEC.":GOTO 168
|
||||
158 PRINT"ALL RIGHT. YOU'RE ON URANUS. ACCELERATION=33.8 FT/SEC/SEC.":GOTO 168
|
||||
159 PRINT"THEN YOU'RE ON NEPTUNE. ACCELERATION=39.6 FT/SEC/SEC.":GOTO 169
|
||||
160 PRINT"FINE. YOU'RE ON THE SUN. ACCELERATION=896 FT/SEC/SEC.":GOTO 170
|
||||
161 A2=12.2:GOTO 145
|
||||
162 A2=28.3:GOTO 145
|
||||
161 A2=12.2:GOTO 145
|
||||
162 A2=28.3:GOTO 145
|
||||
163 A2=32.16:GOTO 145
|
||||
164 A2=5.15:GOTO 145
|
||||
165 A2=12.5:GOTO 145
|
||||
166 A2=85.2:GOTO 145
|
||||
167 A2=37.6:GOTO 145
|
||||
164 A2=5.15:GOTO 145
|
||||
165 A2=12.5:GOTO 145
|
||||
166 A2=85.2:GOTO 145
|
||||
167 A2=37.6:GOTO 145
|
||||
168 A2=33.8 :GOTO 145
|
||||
169 A2=39.6:GOTO 145
|
||||
169 A2=39.6:GOTO 145
|
||||
170 A2=896:GOTO 145
|
||||
205 PRINT
|
||||
206 PRINT " ALTITUDE ="D1"FT"
|
||||
206 PRINT " ALTITUDE ="D1"FT"
|
||||
207 PRINT " TERM. VELOCITY ="V1"FT/SEC +/-5%"
|
||||
208 PRINT " ACCELERATION ="A2"FT/SEC/SEC +/-5%"
|
||||
210 PRINT "SET THE TIMER FOR YOUR FREEFALL."
|
||||
211 PRINT "HOW MANY SECONDS";:INPUT T
|
||||
215 PRINT "HERE WE GO."
|
||||
217 PRINT
|
||||
218 PRINT "TIME (SEC)","DIST TO FALL (FT)"
|
||||
219 PRINT "==========","================="
|
||||
218 PRINT "TIME (SEC)","DIST TO FALL (FT)"
|
||||
219 PRINT "==========","================="
|
||||
300 FOR I=0 TO T STEP (T/8)
|
||||
310 IF I>V/A THEN 400
|
||||
320 D=D1-((A/2)*I^2)
|
||||
320 D=D1-((A/2)*I^2)
|
||||
330 IF D<=0 THEN 1000
|
||||
340 PRINT I,D
|
||||
350 NEXT I
|
||||
360 GOTO 500
|
||||
350 NEXT I
|
||||
360 GOTO 500
|
||||
400 PRINT "TERMINAL VELOCITY REACHED AT T PLUS"V/A"SECONDS."
|
||||
405 FOR I=I TO T STEP (T/8)
|
||||
410 D=D1-((V^2/(2*A))+(V*(I-(V/A))))
|
||||
410 D=D1-((V^2/(2*A))+(V*(I-(V/A))))
|
||||
420 IF D<=0 THEN 1010
|
||||
430 PRINT I,D
|
||||
440 NEXT I
|
||||
440 NEXT I
|
||||
500 PRINT "CHUTE OPEN"
|
||||
510 K=0:K1=0
|
||||
510 K=0:K1=0
|
||||
550 FOR J=0 TO 42
|
||||
555 IF A(J)=0 THEN 620
|
||||
555 IF A(J)=0 THEN 620
|
||||
560 K=K+1
|
||||
570 IF D>=A(J) THEN 600
|
||||
580 K1=K1+1
|
||||
600 NEXT J
|
||||
610 GOTO 540
|
||||
620 A(J)=D
|
||||
600 NEXT J
|
||||
610 GOTO 540
|
||||
620 A(J)=D
|
||||
630 IF J>2 THEN 650
|
||||
635 PRINT "AMAZING!!! NOT BAD FOR YOUR ";
|
||||
636 IF J=0 THEN PRINT "1ST ";
|
||||
637 IF J=1 THEN PRINT "2ND ";
|
||||
638 IF J=2 THEN PRINT "3RD ";
|
||||
639 PRINT "SUCCESSFUL JUMP!!!":GOTO 2000
|
||||
650 IF K-K1<=.1*K THEN 700
|
||||
650 IF K-K1<=.1*K THEN 700
|
||||
660 IF K-K1<=.25*K THEN 710
|
||||
670 IF K-K1<=.5*K THEN 720
|
||||
670 IF K-K1<=.5*K THEN 720
|
||||
680 IF K-K1<=.75*K THEN 730
|
||||
690 IF K-K1<=.9*K THEN 740
|
||||
695 GOTO 750
|
||||
690 IF K-K1<=.9*K THEN 740
|
||||
695 GOTO 750
|
||||
700 PRINT "WOW! THAT'S SOME JUMPING. OF THE"K"SUCCESSFUL JUMPS"
|
||||
701 PRINT "BEFORE YOURS, ONLY"K-K1"OPENED THEIR CHUTES LOWER THAN"
|
||||
702 PRINT "YOU DID."
|
||||
701 PRINT "BEFORE YOURS, ONLY"K-K1"OPENED THEIR CHUTES LOWER THAN"
|
||||
702 PRINT "YOU DID."
|
||||
703 GOTO 2000
|
||||
710 PRINT "PRETTY GOOD! " K"SUCCESSFUL JUMPS PRECEDED YOURS AND ONLY"
|
||||
711 PRINT K-K1" OF THEM GOT LOWER THAN YOU DID BEFORE THEIR CHUTES"
|
||||
712 PRINT "OPENED." :GOTO 2000
|
||||
720 PRINT "NOT BAD. THERE HAVE BEEN"K"SUCCESSFUL JUMPS BEFORE YOURS."
|
||||
721 PRINT"YOU WERE BEATEN OUT BY"K-K1"OF THEM.":GOTO 2000
|
||||
712 PRINT "OPENED." :GOTO 2000
|
||||
720 PRINT "NOT BAD. THERE HAVE BEEN"K"SUCCESSFUL JUMPS BEFORE YOURS."
|
||||
721 PRINT"YOU WERE BEATEN OUT BY"K-K1"OF THEM.":GOTO 2000
|
||||
730 PRINT "CONSERVATIVE, AREN'T YOU? YOU RANKED ONLY"K-K1"IN THE"
|
||||
731 PRINT K"SUCCESSFUL JUMPS BEFORE YOURS.":GOTO 2000
|
||||
740 PRINT "HUMPH! DON'T YOU HAVE ANY SPORTING BLOOD? THERE WERE"
|
||||
740 PRINT "HUMPH! DON'T YOU HAVE ANY SPORTING BLOOD? THERE WERE"
|
||||
741 PRINT K"SUCCESSFUL JUMPS BEFORE YOURS AND YOU CAME IN"K1"JUMPS"
|
||||
742 PRINT "BETTER THAN THE WORST. SHAPE UP!!!":GOTO 2000
|
||||
750 PRINT "HEY! YOU PULLED THE RIP CORD MUCH TOO SOON. "K"SUCCESSFUL"
|
||||
751 PRINT "JUMPS BEFORE YOURS AND YOU CAME IN NUMBER"K-K1"! GET WITH IT!"
|
||||
751 PRINT "JUMPS BEFORE YOURS AND YOU CAME IN NUMBER"K-K1"! GET WITH IT!"
|
||||
752 GOTO 2000
|
||||
800 PRINT "REQUIESCAT IN PACE.":GOTO 1950
|
||||
801 PRINT "MAY THE ANGEL OF HEAVEN LEAD YOU INTO PARADISE.":GOTO 1950
|
||||
801 PRINT "MAY THE ANGEL OF HEAVEN LEAD YOU INTO PARADISE.":GOTO 1950
|
||||
802 PRINT "REST IN PEACE.":GOTO 1950
|
||||
803 PRINT "SON-OF-A-GUN.":GOTO 1950
|
||||
804 PRINT "#$%&&%!$":GOTO 1950
|
||||
803 PRINT "SON-OF-A-GUN.":GOTO 1950
|
||||
804 PRINT "#$%&&%!$":GOTO 1950
|
||||
805 PRINT "A KICK IN THE PANTS IS A BOOST IF YOU'RE HEADED RIGHT.":GOTO 1950
|
||||
806 PRINT "HMMM. SHOULD HAVE PICKED A SHORTER TIME.":GOTO 1950
|
||||
806 PRINT "HMMM. SHOULD HAVE PICKED A SHORTER TIME.":GOTO 1950
|
||||
807 PRINT "MUTTER. MUTTER. MUTTER.":GOTO 1950
|
||||
808 PRINT "PUSHING UP DAISIES.":GOTO 1950
|
||||
809 PRINT "EASY COME, EASY GO.":GOTO 1950
|
||||
808 PRINT "PUSHING UP DAISIES.":GOTO 1950
|
||||
809 PRINT "EASY COME, EASY GO.":GOTO 1950
|
||||
1000 PRINT SQR(2*D1/A),"SPLAT"
|
||||
1005 ON INT(1+(10*RND(1)))GOTO 800,801,802,803,804,805,806,807,808,809
|
||||
1010 PRINT (V/A)+((D1-(V^2/(2*A)))/V),"SPLAT"
|
||||
1020 GOTO 1005
|
||||
1950 PRINT "I'LL GIVE YOU ANOTHER CHANCE.":GOTO 2000
|
||||
2000 PRINT "DO YOU WANT TO PLAY AGAIN";:INPUT Z$
|
||||
2000 PRINT "DO YOU WANT TO PLAY AGAIN";:INPUT Z$
|
||||
2001 IF Z$="YES" THEN 118
|
||||
2002 IF Z$="NO" THEN 2005
|
||||
2003 PRINT "YES OR NO":GOTO 2000
|
||||
|
||||
Reference in New Issue
Block a user