Program GameScaleProgram; (** c Copyright 1997 Louis R. Coatney **) uses CRT; var Done, LoopDone, LoopDeLoopDone, Loop1Done, Loop2Done, Loop3Done, Loop4Done : Boolean; Q : String[1]; GameScale, TimeScale, SpeedScale : real; Procedure GameScaleDetermination; begin ClrScr; GameScale := 333.33; TimeScale := 5; SpeedScale := 0.5; GoToXY(18,1);writeln('NAVAL WARGAME GAMESCALE SELECTION'); writeln; writeln('A very good scale for a naval wargame is 333.33 yards/meters per'); writeln(' inch/centimeter, 5 minutes per gameturn, and .5 in/cm per knot of speed.'); writeln; writeln('This is ideal for floor play (in inches) at 1:1200 model scale'); writeln(' and tabletop play (in cms) at 1:4800 model scale.'); writeln; Loop1Done := false; While Loop1Done = false do begin Q := ' '; writeln('At this scale of ',GameScale:6:2,' yds/m per in/cm, ...'); writeln; writeln('the 36,000 yd range of a battleship comes out to ',36000/GameScale:5:0, ' in/cm or ',36000/GameScale/12:6:1,' feet.'); writeln('the 30,000 yd range of a heavy cruiser comes out to ',30000/GameScale:5:0, ' in/cm or ',30000/GameScale/12:6:1,' feet.'); writeln('the 24,000 yd range of a light cruiser comes out to ',24000/GameScale:5:0, ' in/cm or ',24000/GameScale/12:6:1,' feet.'); writeln('and the 18,000 yd range of a destroyer comes out to ',18000/GameScale:5:0, ' in/cm or ',18000/GameScale/12:6:1,' feet.'); writeln; writeln; writeln('At ',TimeScale:4:2,' minutes per turn -- which produces ', 60/TimeScale:4:2,' turns per hour'); writeln(' -- speed should be ',SpeedScale:4:2,' in/cm per knot per turn.'); writeln; writeln('Thus, a 48-knot torpedo with an maximum range of 8,000 yds --'); writeln(' ',8000/GameScale:6:0,' in/cms -- could theoretically travel'); writeln(' ',48*SpeedScale:6:0,' in/cm per turn, equaling ', 48*SpeedScale/8000*GameScale*100:6:2,'% of its maximum range.'); writeln; writeln(' To continue, just hit the ENTER key.');readln; ClrScr; writeln(' NAVAL WARGAME GAMESCALE VS. MODEL SELECTION CONSIDERATIONS'); writeln; writeln('At a 1:1 model-to-range scale, the max. gun range of a battleship would be:'); writeln(' 750 feet (or 250 yards) at 1:144 (RC Combat) scale.'); writeln(' 360 feet (or 120 yards) at 1:300 scale.'); writeln(' 180 feet (or 60 yards) at 1:600 scale.'); writeln(' 154.3 feet (or 51.5 yards) at 1:700 scale.'); writeln(' 90 feet (or 30 yards) at 1:1200 scale.'); writeln(' 45 feet (or 15 yards) at 1:2400 scale.'); writeln(' 22.5 feet (or 7.5 yards) at 1:4800 scale.'); writeln(' 18 feet (or 6 yards) at 1:6000 scale.'); writeln; writeln('For model-to-gamescale proportions, at this scale of ',GameScale:6:2,' yds/m per in/cm a'); writeln(' 1:144 (4 yds/in) model ship would be ',GameScale*36/144:6:2,' times the size it should be.'); writeln(' 1:300 (8.33 yds/in) model ship would be ',GameScale*36/300:6:2,' times the size it should be.'); writeln(' 1:600 (16.67 yds/in) model ship would be ',GameScale*36/600:6:2,' times the size it should be.'); writeln(' 1:700 (19.44 yds/in) model ship would be ',GameScale*36/700:6:2,' times the size it should be.'); writeln(' 1:720 (20 yds/in) model ship would be ',GameScale*36/720:6:2,' times the size it should be.'); writeln(' 1:1200 (33.33 yds/in) model ship would be ',GameScale*36/1200:6:2,' times the size it should be.'); writeln(' 1:2400 (66.67 yds/in) model ship would be ',GameScale*36/2400:6:2,' times the size it should be.'); writeln(' 1:3000 (83.33 yds/in) model ship would be ',GameScale*36/3000:6:2,' times the size it should be.'); writeln(' 1:4800 (133.33 yds/in) model ship would be ',GameScale*36/4800:6:2,' times the size it should be.'); writeln(' 1:6000 (166.67 yds/in) model ship would be ',GameScale*36/6000:6:2,' times the size it should be.'); writeln(' To continue, just hit the ENTER key.');readln; ClrScr; writeln; writeln(' NAVAL WARGAME GAMESCALE SELECTION/CONFIRMATION'); writeln; writeln; writeln('Again, at this scale of ',GameScale:6:2,' yds/m per in/cm, ...'); writeln; writeln('the 36,000 yd range of a battleship comes out to ',36000/GameScale:5:0, ' in/cm or ',36000/GameScale/12:6:1,' feet.'); writeln('the 30,000 yd range of a heavy cruiser comes out to ',30000/GameScale:5:0, ' in/cm or ',30000/GameScale/12:6:1,' feet.'); writeln('the 24,000 yd range of a light cruiser comes out to ',24000/GameScale:5:0, ' in/cm or ',24000/GameScale/12:6:1,' feet.'); writeln('and the 18,000 yd range of a destroyer comes out to ',18000/GameScale:5:0, ' in/cm or ',18000/GameScale/12:6:1,' feet.'); writeln; writeln; writeln('If these scales of'); writeln(' ',GameScale:6:2,' yards/meters per inch/centimeter'); writeln(' ',TimeScale:4:2,' minutes per gameturn'); writeln(' and ',SpeedScale:4:2,' inches/centimeters per knot of speed'); writeln(' are acceptable, just hit the ENTER key.'); writeln; writeln('Otherwise,'); writeln(' if you want to change the yds/m per in/cm game-scale, Enter G'); writeln(' if you want to change the number of minutes per turn, Enter M'); writeln(' if you want to change the distance moved per knot per turn, Enter K'); readln(Q); If (Q[1] = 'G') or (Q[1] = 'g') then begin writeln('How many yds/m per in/cm would you like?'); readln(GameScale); SpeedScale := 2000/GameScale*TimeScale/60; writeln('If you want to change the number of minutes per turn, Enter M'); writeln('If you want to change the distance moved per knot per turn, Enter K'); readln(Q); end; If (Q[1] = 'M') or (Q[1] = 'm') then begin writeln('How many minutes of real time per turn do you want?'); readln(TimeScale); SpeedScale := 2000/GameScale*TimeScale/60; writeln('If you would like to change the distance per knot per turn, Enter D'); readln(Q); end; If (Q[1] = 'K') or (Q[1] = 'k') then begin writeln('How many in/cms per knot per turn do you want a ship to travel?'); readln(SpeedScale); TimeScale := SpeedScale*GameScale*60/2000; end; If (Q[1] = 'D') or (Q[1] = 'd') then begin writeln('How many in/cms per knot per turn do you want a ship to travel?'); readln(SpeedScale); GameScale := TimeScale*2000/60/SpeedScale; end; If (Q[1] <> 'G') and (Q[1] <> 'g') and (Q[1] <> 'M') and (Q[1] <> 'm') and (Q[1] <> 'K') and (Q[1] <> 'k') and (Q[1] <> 'D') and (Q[1] <> 'd') then Loop1Done := true; ClrScr; If (Q[1] = 'G') or (Q[1] = 'g') or (Q[1] = 'M') or (Q[1] = 'm') or (Q[1] = 'K') or (Q[1] = 'k') or (Q[1] = 'D') or (Q[1] = 'd') then writeln(' NEW GAME SCALE'); writeln; end; end; Procedure FrontPage; begin ClrScr; (** TextColor(Black);TextBackground(LightGray); **) GoToXY(30,8);writeln('GAMESCALE'); writeln; writeln('A program to determine the distance and time scale of a naval wargame.'); GoToXY(20,16);writeln('Copyright 1996 Louis R. Coatney'); GoToXY(25,21);writeln('To begin, Hit ENTER'); readln end; Procedure Bye; begin GoToXY(25,12);writeln('BYE'); readln; end; begin FrontPage; GameScaleDetermination; Bye; end.