02-08-2026, 07:03 AM
One prompt to google and i got this so why would i use inform?
Up/Down arrows and space serves
Unseen
Up/Down arrows and space serves
Code: (Select All)
' NEON-PONG ULTIMATE - QB64 Edition
' Controls: UP/DOWN Arrows to move, SPACE to serve
' Features: Particle FX, Screen Shake, Adaptive AI, Neon Glow
$RESIZE:ON
SCREEN _NEWIMAGE(800, 600, 32)
_TITLE "NEON-PONG: THE ULTIMATE QB64 CLONE"
RANDOMIZE TIMER
' --- Constants & Variables ---
CONST P_WIDTH = 15, P_HEIGHT = 90
CONST BALL_SIZE = 10, MAX_PARTICLES = 100
TYPE Particle
x AS SINGLE: y AS SINGLE
xv AS SINGLE: yv AS SINGLE
life AS SINGLE: active AS INTEGER
END TYPE
DIM SHARED p1y, p2y, bx, by, bxv, byv, p1s, p2s, serving, shake
DIM SHARED parts(MAX_PARTICLES) AS Particle
p1y = 250: p2y = 250: serving = 1: p1s = 0: p2s = 0
' --- Main Game Loop ---
DO
_LIMIT 60 ' Smooth 60 FPS
CLS
' Draw Background & UI
LINE (400, 0)-(400, 600), _RGB32(50, 50, 80) ' Center Line
COLOR _RGB32(0, 255, 255): LOCATE 2, 20: PRINT USING "PLAYER: ##"; p1s
COLOR _RGB32(255, 0, 255): LOCATE 2, 60: PRINT USING "CPU: ##"; p2s
' Handle Input
IF _KEYDOWN(18432) THEN p1y = p1y - 8 ' Up Arrow
IF _KEYDOWN(20480) THEN p1y = p1y + 8 ' Down Arrow
IF p1y < 0 THEN p1y = 0 ELSE IF p1y > 510 THEN p1y = 510
' Serving Mechanic
IF serving THEN
bx = 40: by = p1y + 45
IF _KEYDOWN(32) THEN ' Space to serve
serving = 0: bxv = 7: byv = (RND * 10) - 5
SOUND 800, 0.5 ' High pitch serve
END IF
ELSE
UpdateBall
UpdateCPU
END IF
' Update Visuals
UpdateParticles
DrawGame
_DISPLAY
LOOP UNTIL _KEYDOWN(27) ' ESC to exit
SUB UpdateBall
bx = bx + bxv: by = by + byv
' Top/Bottom Bounce
IF by < 0 OR by > 590 THEN
byv = -byv: shake = 5
SOUND 400, 0.2
CreateBurst bx, by, 5
END IF
' Paddle Collisions (Neon Logic)
IF bx < 30 AND by > p1y AND by < p1y + P_HEIGHT THEN
bxv = -bxv * 1.05: bx = 31: CreateBurst bx, by, 10
byv = (by - (p1y + 45)) * 0.2 ' Deflection angle
SOUND 600, 0.3
END IF
IF bx > 760 AND by > p2y AND by < p2y + P_HEIGHT THEN
bxv = -bxv * 1.05: bx = 759: CreateBurst bx, by, 10
byv = (by - (p2y + 45)) * 0.2
SOUND 600, 0.3
END IF
' Scoring
IF bx < 0 THEN p2s = p2s + 1: serving = 1: CreateBurst 400, 300, 30
IF bx > 800 THEN p1s = p1s + 1: serving = 1: CreateBurst 400, 300, 30
END SUB
SUB UpdateCPU
' Adaptive AI: Follows ball with a bit of "lag" for fairness
IF by > p2y + 45 THEN p2y = p2y + 6
IF by < p2y + 45 THEN p2y = p2y - 6
IF p2y < 0 THEN p2y = 0 ELSE IF p2y > 510 THEN p2y = 510
END SUB
SUB CreateBurst (x, y, num)
FOR i = 1 TO MAX_PARTICLES
IF parts(i).active = 0 AND num > 0 THEN
parts(i).active = 1: parts(i).x = x: parts(i).y = y
parts(i).xv = (RND * 10) - 5: parts(i).yv = (RND * 10) - 5
parts(i).life = 255: num = num - 1
END IF
NEXT
END SUB
SUB UpdateParticles
FOR i = 1 TO MAX_PARTICLES
IF parts(i).active THEN
parts(i).x = parts(i).x + parts(i).xv
parts(i).y = parts(i).y + parts(i).yv
parts(i).life = parts(i).life - 10
IF parts(i).life <= 0 THEN parts(i).active = 0
CIRCLE (parts(i).x, parts(i).y), 2, _RGB32(255, 255, 0, parts(i).life)
END IF
NEXT
END SUB
SUB DrawGame
' Screen Shake Effect
DIM ox, oy: IF shake > 0 THEN ox = (RND * 10) - 5: oy = (RND * 10) - 5: shake = shake - 1
' Neon Paddles (using LINE with BF for solid boxes)
LINE (15 + ox, p1y + oy)-(15 + P_WIDTH + ox, p1y + P_HEIGHT + oy), _RGB32(0, 255, 255), BF
LINE (770 + ox, p2y + oy)-(770 + P_WIDTH + ox, p2y + P_HEIGHT + oy), _RGB32(255, 0, 255), BF
' Neon Ball (Circle with color)
CIRCLE (bx + ox, by + oy), BALL_SIZE, _RGB32(255, 255, 255)
PAINT (bx + ox, by + oy), _RGB32(255, 255, 255)
END SUB
Unseen

