PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » OpenSource » Игра Змейка


Игра Змейка

Сообщений 1 страница 4 из 4

1

чуть подправил то что выдала нейросеть и получилось:

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

0

2

Пройдет какое-то время и скажет машина: "Ну и накой мне эти ваши языки? Нате вам готовый софт - пользуйтесь! А то Бейсики какие-то, Паскали понимаешь ли..."

0

3

https://www.purebasic.fr/english/viewto … 26#p299626

0

4

Эхехе, давно это было. В 90х в советско-польском журнале "Компьютер" публиковалась статья с исходниками.
Мне вот интересно увидеть версию AI snake - где змея играет без участия игрока.

0


Вы здесь » PureBasic - форум » OpenSource » Игра Змейка