чуть подправил то что выдала нейросеть и получилось:
Код:
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)