Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
New PongClone Demo
#2
One prompt to google and i got this so why would i use inform?
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
Reply


Messages In This Thread
New PongClone Demo - by TempodiBasic - 02-08-2026, 01:50 AM
RE: New PongClone Demo - by Unseen Machine - 02-08-2026, 07:03 AM
RE: New PongClone Demo - by SMcNeill - 02-08-2026, 07:29 AM
RE: New PongClone Demo - by Unseen Machine - 02-08-2026, 08:59 AM
RE: New PongClone Demo - by Magdha - 02-08-2026, 10:53 AM
RE: New PongClone Demo - by TempodiBasic - 02-08-2026, 02:06 PM
RE: New PongClone Demo - by TempodiBasic - 02-08-2026, 02:31 PM
RE: New PongClone Demo - by Magdha - 02-08-2026, 02:46 PM
RE: New PongClone Demo - by bplus - 02-08-2026, 02:59 PM
RE: New PongClone Demo - by TempodiBasic - 02-08-2026, 04:46 PM
RE: New PongClone Demo - by bplus - 02-08-2026, 07:19 PM
RE: New PongClone Demo - by Unseen Machine - 02-17-2026, 03:33 AM
RE: New PongClone Demo - by bplus - 02-17-2026, 03:48 AM
RE: New PongClone Demo - by Unseen Machine - 02-17-2026, 04:00 AM
RE: New PongClone Demo - by bplus - 02-17-2026, 04:18 AM
RE: New PongClone Demo - by Unseen Machine - 02-17-2026, 04:30 AM
RE: New PongClone Demo - by dbox - 02-17-2026, 04:36 AM
RE: New PongClone Demo - by Unseen Machine - 02-17-2026, 04:44 AM
RE: New PongClone Demo - by dbox - 02-17-2026, 05:29 AM
RE: New PongClone Demo - by bplus - 02-17-2026, 04:54 AM
RE: New PongClone Demo - by Unseen Machine - 02-17-2026, 10:17 AM

Forum Jump:


Users browsing this thread: