чуть подправил то что выдала нейросеть и получилось:
Код:
InitSprite()
InitKeyboard()
; Настройки игры
Define.b SnakeDirection = 2 ; Направление змейки: 0 - вверх, 1 - вправо, 2 - вниз, 3 - влево
Define.b SnakeLength = 3
Define.b MaxSnakeLength = 100
Dim SnakeX(MaxSnakeLength)
Dim SnakeY(MaxSnakeLength)
Global.b FoodX, FoodY
Define.b GameOver = 0
; Инициализация змейки
For i = 0 To SnakeLength - 1
SnakeX(i) = 10
SnakeY(i) = 10 - i
Next
; Генерация еды
Procedure GenerateFood()
FoodX = Random(19)
FoodY = Random(19)
EndProcedure
GenerateFood()
; Основной игровой цикл
OpenWindow(0, 0, 0, 400, 400, "Змейка", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0),1,1,400,400)
While Not GameOver
; Обработка ввода
If ExamineKeyboard()
If KeyboardPushed(#PB_Key_Up) And SnakeDirection <> 2
SnakeDirection = 0
ElseIf KeyboardPushed(#PB_Key_Right) And SnakeDirection <> 3
SnakeDirection = 1
ElseIf KeyboardPushed(#PB_Key_Down) And SnakeDirection <> 0
SnakeDirection = 2
ElseIf KeyboardPushed(#PB_Key_Left) And SnakeDirection <> 1
SnakeDirection = 3
EndIf
EndIf
; Движение змейки
For i = SnakeLength To 1 Step -1
SnakeX(i) = SnakeX(i - 1)
SnakeY(i) = SnakeY(i - 1)
Next
Select SnakeDirection
Case 0: SnakeY(0) - 1
Case 1: SnakeX(0) + 1
Case 2: SnakeY(0) + 1
Case 3: SnakeX(0) - 1
EndSelect
; Проверка на столкновение с границами
If SnakeX(0) < 0 Or SnakeX(0) >= 20 Or SnakeY(0) < 0 Or SnakeY(0) >= 20
GameOver = 1
EndIf
; Проверка на столкновение с собой
For i = 1 To SnakeLength
If SnakeX(0) = SnakeX(i) And SnakeY(0) = SnakeY(i)
GameOver = 1
EndIf
Next
; Проверка на поедание еды
If SnakeX(0) = FoodX And SnakeY(0) = FoodY
If SnakeLength < MaxSnakeLength
SnakeLength + 1
EndIf
GenerateFood()
EndIf
; Отрисовка
ClearScreen(0) ; очищаем экран
StartDrawing(ScreenOutput())
For i = 0 To SnakeLength - 1
Box(SnakeX(i) * 20, SnakeY(i) * 20, 20, 20, $00FF00)
Next
Box(FoodX * 20, FoodY * 20, 20, 20, $FF0000)
StopDrawing()
; Обновление экрана
FlipBuffers()
Delay(100) ; задержка
Wend
MessageRequester("Игра окончена", "Вы столкнулись с границей или с собой.", #PB_MessageRequester_Ok)