58 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			QBasic
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			QBasic
		
	
	
	
	
	
10 rem gunner program
 | 
						|
90 randomize
 | 
						|
100 print "this program simulates the results "
 | 
						|
110 print "of firing a field artillery weapon"
 | 
						|
120 print
 | 
						|
130 print "you are the officer-in-charge, giving orders to the gun"
 | 
						|
140 print "crew, telling them the degrees of elevation you estimate"
 | 
						|
150 print "will place the projectile on target. A hit within 100 yards"
 | 
						|
160 print "of the target will destroy it. Take more than 5 shots,"
 | 
						|
170 print "end the enemy will destroy you!":print
 | 
						|
180 print "maximum range of your gun is 46500 yards."
 | 
						|
185 z=0
 | 
						|
190 print
 | 
						|
195 s1=0
 | 
						|
200 t= 43000-30000*rnd(x)
 | 
						|
210 s=0
 | 
						|
220 goto 370
 | 
						|
230 print"minimum elevation of the gun is one degree."
 | 
						|
240 goto 390
 | 
						|
250 print "maximum elevation of gun is 89 degrees."
 | 
						|
260 goto 390
 | 
						|
270 print "over target by";abs(e);"yards"
 | 
						|
280 goto 390
 | 
						|
290 print "short of target by";abs(e);"yards"
 | 
						|
300 goto 390
 | 
						|
310 goto 320
 | 
						|
320 print "*****target destroyed ****";s;"rounds of ammunition expended"
 | 
						|
322 gosub 600
 | 
						|
325 s1=s1+s
 | 
						|
330 if z=4 then 490
 | 
						|
340 z=z+1
 | 
						|
345 print
 | 
						|
350 print "the forward observer has sighted more enemy activity."
 | 
						|
360 goto 200
 | 
						|
370 print "	distance to the target is";int(t);"yards...."
 | 
						|
380 print
 | 
						|
390 print
 | 
						|
400 print "elevation";
 | 
						|
410 input b
 | 
						|
420 if b>89 then 250
 | 
						|
430 if b<1 then 230
 | 
						|
440 s=s+1
 | 
						|
442 if s<6 then 450
 | 
						|
444 print:print "BOOM !!! You have been destroyed";
 | 
						|
445 gosub 600
 | 
						|
446 print "by the enemy":print:print:goto 495
 | 
						|
450 b2=2*b/57.3:let i=46500*sin(b2):x=t-i:e=int(x)
 | 
						|
460 if abs(e)<100 then 310
 | 
						|
470 if e>100 then 290
 | 
						|
480 if e<-100 then 270
 | 
						|
490 print:print:print "total rounds expended were";s1
 | 
						|
491 if s1>15 then 495:print "nice shooting!!":gosub 600:goto 500
 | 
						|
495 print "better go back to fort silly for refresher training!"
 | 
						|
500 print:print "thank you for playing!"
 | 
						|
505 print:print "try again....":print:goto 180
 | 
						|
600 rem for n=1 to 10 print chr$(7): rem next n
 | 
						|
610 return
 | 
						|
999 end
 |