, или компилируем старые проги для QBasic, в FreeBasic под Вин.
однажды (а может быть дважды) делал я заготовки для аркадных игрушек, сейчас взял одну из них - заготовка для asteroids (2006 год).
SCREEN 12,8,2,0
LET cx = 160: cy = 100: a = 0: sp = .1
REM particles
LET ix = 100: iy = 100
DIM tx(10), ty(10), ttl(10)
LET fx = 0: fy = 0: fa = 0: fl = 0
REM коорд., угол наклона, жизнь пули
FOR n = 0 TO 10
ttl(n) = 0
NEXT n
COLOR 3
cyc:
REM 90 180+30 360-30
LET z1 = 10 * COS((a + 90) * .0174): z2 = 10 * SIN((a + 90) * .0174)
LET z11 = 10 * COS((a + 210) * .0174): z22 = 10 * SIN((a + 210) * .0174)
LINE (cx + z1, cy + z2)-(cx + z11, cy + z22)
LET z1 = 10 * COS((a + 210) * .0174): z2 = 10 * SIN((a + 210) * .0174)
LET z11 = 2.5 * COS((a + 240) * .0174): z22 = 2.5 * SIN((a + 240) * .0174)
LINE (cx + z1, cy + z2)-(cx + z11, cy + z22)
LET z1 = 2.5 * COS((a + 240) * .0174): z2 = 2.5 * SIN((a + 240) * .0174)
LET z11 = 10 * COS((a + 330) * .0174): z22 = 10 * SIN((a + 330) * .0174)
LINE (cx + z1, cy + z2)-(cx + z11, cy + z22)
LET z1 = 10 * COS((a + 330) * .0174): z2 = 10 * SIN((a + 330) * .0174)
LET z11 = 10 * COS((a + 90) * .0174): z22 = 10 * SIN((a + 90) * .0174)
LINE (cx + z1, cy + z2)-(cx + z11, cy + z22)
REM
LET z1 = COS((a + 90) * .0174): z2 = SIN((a + 90) * .0174)
REM прорисовка
PSET (ix + RND * 4 - 2, iy + RND * 4 - 2), 7
i$ = INKEY$
FOR n = 0 TO 2000000: NEXT n
CLS
REM управление
IF i$ = CHR$(27) GOTO quit
IF i$ = "a" THEN a = a - 10
IF i$ = "d" THEN a = a + 10
IF i$ = "w" THEN sp = sp + .1
IF i$ = "s" THEN sp = sp - .1
IF i$ = "q" AND fl = 0 THEN
fx = cx
fy = cy
fl = 40
fa = a
END IF
REM полет пули
IF fl <> 0 THEN
PSET (fx, fy), 4
fl = fl - 1
fx = fx + 2 * COS((fa + 90) * .0174): fy = fy + 2 * SIN((fa + 90) * .0174)
END IF
REM гравити :)
IF sp < 0 THEN sp = 0
rem IF cx > 310 THEN cx = 10
rem IF cx < 10 THEN cx = 310
cx = cx + sp * z1: cy = cy + sp * z2
FOR n = 0 TO 10
ttl(n) = ttl(n) - 1
IF ttl(n) = -1 THEN
tx(n) = cx
ty(n) = cy
ttl(n) = INT(RND * 20)
END IF
IF sp <> 0 THEN PSET (tx(n), ty(n)), 2
NEXT n
REM нечто, похожее на ai
REM ix = ix + (cx - ix) / 1000
REM iy = iy + (cy - iy) / 1000
IF ix < cx THEN ix = ix + .25
IF ix > cx THEN ix = ix - .25
IF iy < cy THEN iy = iy + .25
IF iy > cy THEN iy = iy - .25
IF ABS(cx - ix) < 10 AND ABS(cy - iy) < 10 THEN CIRCLE (cx, cy), 10, 7
IF ABS(ix - fx) < 5 AND ABS(iy - fy) < 5 THEN CIRCLE (ix, iy), 10, 7
GOTO cyc
quit:
изменению подверглись всего 2 вещи - установка видеорежима + сделал паузу в 2000 раз больше.
также пришлось заREMить два строчки там где "гравити", - что именно я хотел этим тогда сказать, пока не понял.
компиляция - "fbc.exe alph.bas -lang qb"

"муха", которая бегает за корабликом, это самонаводная ракета/пуля/вражина/нужное_вписать.
кружок, который появляется вокруг корабля, означает что вас подбили (здесь по идее должна выполниться процедура обработки попадания, с уменьшением кол-ва жизней/энергии).
управление кораблем при помощи православных WASD, выход ESC.
интересно сделана анимация "огня" из "движков" кораблика.
p.s. используя код, не забывайте про копирайт.
однажды (а может быть дважды) делал я заготовки для аркадных игрушек, сейчас взял одну из них - заготовка для asteroids (2006 год).
SCREEN 12,8,2,0
LET cx = 160: cy = 100: a = 0: sp = .1
REM particles
LET ix = 100: iy = 100
DIM tx(10), ty(10), ttl(10)
LET fx = 0: fy = 0: fa = 0: fl = 0
REM коорд., угол наклона, жизнь пули
FOR n = 0 TO 10
ttl(n) = 0
NEXT n
COLOR 3
cyc:
REM 90 180+30 360-30
LET z1 = 10 * COS((a + 90) * .0174): z2 = 10 * SIN((a + 90) * .0174)
LET z11 = 10 * COS((a + 210) * .0174): z22 = 10 * SIN((a + 210) * .0174)
LINE (cx + z1, cy + z2)-(cx + z11, cy + z22)
LET z1 = 10 * COS((a + 210) * .0174): z2 = 10 * SIN((a + 210) * .0174)
LET z11 = 2.5 * COS((a + 240) * .0174): z22 = 2.5 * SIN((a + 240) * .0174)
LINE (cx + z1, cy + z2)-(cx + z11, cy + z22)
LET z1 = 2.5 * COS((a + 240) * .0174): z2 = 2.5 * SIN((a + 240) * .0174)
LET z11 = 10 * COS((a + 330) * .0174): z22 = 10 * SIN((a + 330) * .0174)
LINE (cx + z1, cy + z2)-(cx + z11, cy + z22)
LET z1 = 10 * COS((a + 330) * .0174): z2 = 10 * SIN((a + 330) * .0174)
LET z11 = 10 * COS((a + 90) * .0174): z22 = 10 * SIN((a + 90) * .0174)
LINE (cx + z1, cy + z2)-(cx + z11, cy + z22)
REM
LET z1 = COS((a + 90) * .0174): z2 = SIN((a + 90) * .0174)
REM прорисовка
PSET (ix + RND * 4 - 2, iy + RND * 4 - 2), 7
i$ = INKEY$
FOR n = 0 TO 2000000: NEXT n
CLS
REM управление
IF i$ = CHR$(27) GOTO quit
IF i$ = "a" THEN a = a - 10
IF i$ = "d" THEN a = a + 10
IF i$ = "w" THEN sp = sp + .1
IF i$ = "s" THEN sp = sp - .1
IF i$ = "q" AND fl = 0 THEN
fx = cx
fy = cy
fl = 40
fa = a
END IF
REM полет пули
IF fl <> 0 THEN
PSET (fx, fy), 4
fl = fl - 1
fx = fx + 2 * COS((fa + 90) * .0174): fy = fy + 2 * SIN((fa + 90) * .0174)
END IF
REM гравити :)
IF sp < 0 THEN sp = 0
rem IF cx > 310 THEN cx = 10
rem IF cx < 10 THEN cx = 310
cx = cx + sp * z1: cy = cy + sp * z2
FOR n = 0 TO 10
ttl(n) = ttl(n) - 1
IF ttl(n) = -1 THEN
tx(n) = cx
ty(n) = cy
ttl(n) = INT(RND * 20)
END IF
IF sp <> 0 THEN PSET (tx(n), ty(n)), 2
NEXT n
REM нечто, похожее на ai
REM ix = ix + (cx - ix) / 1000
REM iy = iy + (cy - iy) / 1000
IF ix < cx THEN ix = ix + .25
IF ix > cx THEN ix = ix - .25
IF iy < cy THEN iy = iy + .25
IF iy > cy THEN iy = iy - .25
IF ABS(cx - ix) < 10 AND ABS(cy - iy) < 10 THEN CIRCLE (cx, cy), 10, 7
IF ABS(ix - fx) < 5 AND ABS(iy - fy) < 5 THEN CIRCLE (ix, iy), 10, 7
GOTO cyc
quit:
изменению подверглись всего 2 вещи - установка видеорежима + сделал паузу в 2000 раз больше.
также пришлось заREMить два строчки там где "гравити", - что именно я хотел этим тогда сказать, пока не понял.
компиляция - "fbc.exe alph.bas -lang qb"

"муха", которая бегает за корабликом, это самонаводная ракета/пуля/вражина/нужное_вписать.
кружок, который появляется вокруг корабля, означает что вас подбили (здесь по идее должна выполниться процедура обработки попадания, с уменьшением кол-ва жизней/энергии).
управление кораблем при помощи православных WASD, выход ESC.
интересно сделана анимация "огня" из "движков" кораблика.
p.s. используя код, не забывайте про копирайт.