Код:
InitSprite()
InitKeyboard()
; Pong Game in PureBasic

; Инициализация
OpenWindow(0, 0, 0, 800, 600, "Pong Game", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0),1,1,800,600)

; Определение переменных
playerY = 250
computerY = 250
ballX = 400
ballY = 300
ballSpeedX = 7
ballSpeedY = 7
paddleSpeed = 8
paddleWidth = 10
paddleHeight = 100
ballSize = 10

Repeat
  ExamineKeyboard()
  
  ; Управление игроком
  If KeyboardPushed(#PB_Key_Up) And playerY > 0
    playerY - paddleSpeed
  EndIf
  
  If KeyboardPushed(#PB_Key_Down) And playerY < 600 - paddleHeight
    playerY + paddleSpeed
  EndIf

  ; Движение компьютера
  If ballY < computerY + paddleHeight / 2 And computerY > 0
    computerY - paddleSpeed
  ElseIf ballY > computerY + paddleHeight / 2 And computerY < 600 - paddleHeight
    computerY + paddleSpeed
  EndIf

  ; Движение мяча
  ballX + ballSpeedX
  ballY + ballSpeedY

  ; Проверка столкновений
  If ballY <= 0 Or ballY >= 600 - ballSize
    ballSpeedY *- 1 ; Отскок от верхней и нижней границ
  EndIf
  
  If ballX <= paddleWidth And ballY >= playerY And ballY <= playerY + paddleHeight
    ballSpeedX *- 1 ; Столкновение с игроком
  EndIf

  If ballX >= 800 - paddleWidth - ballSize And ballY >= computerY And ballY <= computerY + paddleHeight
    ballSpeedX *- 1 ; Столкновение с компьютером
  EndIf

  ; Проверка на выход за пределы
  If ballX < 0 Or ballX > 800
    ballX = 400
    ballY = 300
    ballSpeedX = -ballSpeedX ; Сменить направление мяча
  EndIf

  ; Отрисовка
  StartDrawing(ScreenOutput())
  Box(0, 0, 800, 600, RGB(0, 0, 0)) ; Задний фон
  Box(0, playerY, paddleWidth, paddleHeight, RGB(255, 255, 255)) ; Игрок
  Box(800 - paddleWidth, computerY, paddleWidth, paddleHeight, RGB(255, 255, 255)) ; Компьютер
  Box(ballX, ballY, ballSize, ballSize, RGB(255, 0, 0)) ; Мяч
  StopDrawing()

  ; Обновление окна
  FlipBuffers()
  
  Delay(5) ; Задержка для контроля скорости игры
Until WindowEvent() = #PB_Event_CloseWindow