Код:
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