Откомпилировал свои игры написанные 1991-1998 гг. Как понизить скорость? - QBasic
Формулировка задачи:
Решение задачи: «Откомпилировал свои игры написанные 1991-1998 гг. Как понизить скорость?»
DATA 3,3,2,8,8,8,7,4,4,2,1,2,4,4,4,4,4,4,3,3,8,8,8,8,8,8,8,8 DATA 7,7,6,6,4,4,4,6,7,7,7,7,6,7,2,3,6,6 DATA 6,6,6,6,6,4,4,3,6,6,6,6,6,6,6,8,10,10,9,7,3,2,4,5,7,7,7,7,7,7,7,6,6,6 DIM a(500), B(500), c(1000), e(1000), w(10000), w1(1000), z(100), m(100), t(100), v(100) SCREEN 1, 0 PRESET (205, 20) DRAW "c2d15e5g5h5" 9 LINE (155, y5)-(165, y5), 2 a$ = INKEY$ IF a$ = "2" AND y5 < 199 THEN y5 = y5 + 1 IF a$ = "q" OR a$ = "Q" THEN END 'IF NOT a$ = " " THEN 9 y5 = 1000 y5 = y5 * 1000 COLOR 8, 0 x1 = 143 y1 = 74 f = 0 m = 2 m1 = 1 PRESET (7, 11) 'tank 2 DRAW "c1 h2 u2 e2 r5u1e3r6f1 r10l10f3 r2f1r1f1r1f1r1d1g2l23" PAINT (18, 8), 1, 1 LINE (12, 4)-(24, 4), 0 FOR w = 7 TO 33 STEP 4 CIRCLE (w, 9), 1, 0 NEXT 'tank 2 GET (0, 0)-(33, 11), t() CLS PRESET (6, 9) DRAW "c3u3l1r2u1d1r2l1d3u2l1" GET (100, 100)-(136, 136), B() PRESET (105, 117) DRAW "c1r24l12u12d24u5c0u14d7l7r14" GET (100, 100)-(134, 134), e() GET (0, 0)-(14, 14), a() CLS PRESET (5, 10) 'jeep DRAW "c1u5r1d5u3r3u5l1h1r1u1r4d1r3u1d2u1r2u1d2u1r2u1d2u1r2l9d1l2dd5r2f2r4u5d1r6f1d1f1d2l1u2d3l1h2l1g2d1f2r1e2g2l1h2u1l6h2l1g2d1f2r1e3g3l1h3u3" PAINT (10, 1), 1, 1 PAINT (16, 11), 1, 1 PSET (22, 8), 2 GET (0, 0)-(26, 15), m() 'jeep CLS PRESET (28, 18) DRAW "c1r10l5u5d10u4c0l1u2r2d1" CIRCLE (33, 18), 7, 1, , , 1 GET (15, 0)-(51, 36), c() CLS FOR t = 0 TO 240 STEP 80 'The town RESTORE FOR i = t TO t + 79 READ j1 LINE (i, 65)-(i, 65 - j1), 2 NEXT i, t LINE (0, 66)-(319, 75), 2, BF PAINT (160, 7), 1, 2 PRESET (5, 2) DRAW "c2 r4f3r10u1e2r2u2l10r20l9d2r1f4d2g2f2h2l7g2e2h2u2l12h3" PAINT (27, 8), 2, 2 PAINT (9, 4), 2, 2 PSET (9, 4), 3 PRESET (28, 3) DRAW "c3d2r2h1" GET (5, 0)-(36, 12), z() 'helicopter LINE (0, 0)-(36, 12), 1, BF CIRCLE (255, 17), 7, 3, , , .93: PAINT (255, 17), 3 LINE (0, 20)-(40, 32), 1, BF LINE (0, 0)-(319, 199), , B GET (0, 0)-(319, 80), w() FOR x = 3 TO 318 STEP 2.5 'The bridge LINE (x, 99)-(x - 2, 98), 1 NEXT FOR i = 100 TO 106 LINE (0, i)-(319, i), 1, , &HAAAA NEXT PRESET (25, 115) '‚®«*л DRAW "c1r2e2u1d1f1" GET (25, 112)-(30, 115), v() FOR i = 14 TO 300 STEP 6 PUT (i, 112), v(), PSET NEXT '‚®«*л FOR g = 0 TO 10 STEP 2 LINE (g, 107)-(g, 116), 1 NEXT FOR g = 308 TO 318 STEP 2 LINE (g, 107)-(g, 116), 1 NEXT h = 8 FOR g = 12 TO 28 STEP 2 LINE (g, 107)-(g, 107 + h), 1 h = h - 1 NEXT h = h + 1 FOR g = 290 TO 306 STEP 2 LINE (g, 107)-(g, 107 + h), 1 h = h + 1 NEXT GET (0, 98)-(319, 116), w1() 'The bridge 1 f = 0 x = INT(RND(1) * 243) + 20 y = INT(RND(1) * 21) + 127 v2 = 1 LINE (138, 195)-(150, 184), , B: LINE (167, 195)-(179, 184), , B 2 LINE (110, 198)-(134, 174) LINE (210, 198)-(186, 174) LINE (134, 174)-(186, 174) 'FOR r5 = 0 TO y5: NEXT 'compensation of speed IF j = 1 THEN LINE (139, 194)-(149, 185), 2, BF ELSE LINE (139, 194)-(149, 185), 0, BF IF m5 = 1 THEN LINE (168, 194)-(178, 185), 2, BF ELSE LINE (168, 194)-(178, 185), 0, BF PUT (0, 0), w(), PSET PUT (0, 98), w1(), PSET LOCATE 23, 19: PRINT v IF m < 283 THEN PUT (m, 32), z(), PSET: m = m + 6 ELSE m = 1 IF m1 < 299 AND v3 <> v2 THEN PUT (m1, 82), m(), PSET: m1 = m1 + 5 IF v3 = v2 AND m1 < 283 THEN PUT (m1, 86), t(), PSET: m1 = m1 + 5 IF m1 > 285 AND v2 = v3 THEN m1 = 1: LINE (m1, 82)-(318, 97), 0, BF: v1 = v1 + 1: v2 = INT(v1 / 3): v3 = v1 / 3 IF m1 > 292 AND v2 <> v3 THEN m1 = 1: LINE (m1, 82)-(318, 97), 0, BF: v1 = v1 + 1: v2 = INT(v1 / 3): v3 = v1 / 3 IF a$ = "9" THEN m5 = 1 IF a$ = "0" THEN m5 = 0: j = 0: f = 0: LINE (1, 117)-(318, 173), 0, BF IF a$ = "1" THEN m5 = 1: j = 1: f = 1 IF x1 < 0 THEN x1 = x1 + 11 IF x1 > 283 THEN x1 = x1 - 11 IF y1 < 11 THEN y1 = y1 + 11 IF y1 > 148 THEN y1 = y1 - 11 IF f = 0 THEN PUT (x1, y1), c(), XOR 'the cross-sight startTime# = TIMER ' Calculate speed of system 'PRINT startTime# FOR i# = 1 TO 5000000: NEXT i# ' and do some compensation stopTime# = TIMER 'PRINT stopTime# speed = speed * .5 / (stopTime# - startTime#) curSpeed = speed 'Delay game FOR a# = 1 TO curSpeed: NEXT a# PUT (x1, y1), c(), XOR END IF x = x + x2 y = y + y2 IF x < 20 THEN x = x + 5 IF x > 263 THEN x = x - 5 IF y < 127 THEN y = y + 5 IF y > 148 THEN y = y - 5 PUT (x, y), a(), PSET x9 = x1 + 18 y9 = y1 + 18 'LOCATE 15, 1: PRINT "27"; y1 + 18; "45" 'LOCATE 23, 4: PRINT m - 7; x1 + 18; m + 26 'Џа®ўҐаЄ* 'PSET (m - 7, 21), 3 'PSET (m + 26, 21), 3 IF m - 7 < x1 + 18 AND x1 + 18 < m + 26 AND y1 + 18 > 27 AND y1 + 18 < 45 AND a$ = " " THEN m = 283: v = v + 10 IF v2 <> v3 THEN IF x1 > m1 - 20 AND x1 < m1 + 2 AND y1 > 63 AND y1 < 79 AND a$ = " " THEN m1 = 1: v = v + 10: LINE (1, 82)-(318, 97), 0, BF: v1 = v1 + 1: v3 = v1 / 3: v2 = INT(v1 / 3) IF v2 = v3 THEN IF x1 > m1 - 20 AND x1 < m1 + 10 AND y1 > 63 AND y1 < 79 AND a$ = " " THEN m4 = m4 + 1: IF m4 = 3 THEN m4 = 0: m1 = 1: v = v + 15: LINE (1, 82)-(318, 97), 0, BF: v1 = v1 + 1: v3 = v1 / 3: v2 = INT(v1 / 3) a$ = INKEY$ a = INT(RND(1) * 20) IF a = 0 THEN x2 = 5: y2 = 0 IF a = 1 THEN x2 = -5: y2 = 0 IF a = 2 THEN y2 = 5: x2 = 0 IF a = 3 THEN y2 = -5: x2 = 0 IF a = 4 THEN x2 = -5: y2 = -5 IF a = 5 THEN x2 = 5: y2 = -5 IF a = 6 THEN x2 = 5: y2 = 5 IF a = 7 THEN x2 = -5: y2 = 5 IF a$ = "6" THEN x1 = x1 + 11 IF a$ = "2" THEN y1 = y1 + 11 IF a$ = "4" THEN x1 = x1 - 11 IF a$ = "8" THEN y1 = y1 - 11 IF a$ = "q" OR a$ = "Q" OR a$ = "©" OR a$ = "‰" THEN END '‚л室 IF m5 = 1 AND x > x1 - 13 AND x < x1 + 35 AND y > y1 - 13 AND y < y1 + 35 THEN f = 1: LINE (1, 117)-(318, 173), 0, BF IF f = 1 THEN LINE (1, 117)-(318, 173), 0, BF: PUT (x - 10, y - 10), e(), PSET: x1 = x: y1 = y IF j = 1 AND f = 1 THEN a$ = " " IF a$ = " " THEN LINE (1, 198)-(x1 + 18, y1 + 18), 3: LINE (318, 198)-(x1 + 18, y1 + 18), 3: LINE (1, 198)-(x1 + 18, y1 + 18), 0: LINE (318, 198)-(x1 + 18, y1 + 18), 0 IF v > 745 THEN CLS: OUT 985, 10: LOCATE 11, 11: PRINT "- congratulation -": PLAY "g7e7c7e7d3 c5e7g7f3g7e7c7d7c3": PLAY "E6F6C6E6F6C3E3F6E6C7E7D3 ": END IF a$ = " " OR a$ = "5" THEN GOSUB 3 GOTO 2 3 IF f = 1 THEN x1 = x - 11: y1 = y - 11: y = y1 + 3: x = x1 + 19 IF x > x1 + 2 AND x < x1 + 20 AND y > y1 + 2 AND y < y1 + 20 THEN LINE (1, 117)-(318, 173), 0, BF: v = v + 1: GOTO 1 RETURN
Объяснение кода листинга программы
This code is written in QBasic and seems to be a game. It contains a lot of game logic, including moving objects, drawing bridges, and handling user input. The speed of the game is controlled by a variable called speed
, which is reduced by half every time the game is played.
The code also includes a number of timers and delays, which are used to compensate for the speed of the system and ensure that the game runs at a consistent speed.
There are a number of objects in the game, including a helicopter and a cross-hair, which move around the screen. The movement of these objects is controlled by variables such as x1, y1, x2, and y2, which are updated each time the game is played.
The game also includes a number of conditions and if statements, which are used to handle collisions and other events in the game.
Overall, this code seems to be a fairly complex game with a lot of moving parts and game logic. It would take some time and effort to fully understand and optimize the code for a specific purpose.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д