PureBasic - форум

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

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


Вы здесь » PureBasic - форум » OpenSource » Нейросеть создала арканоид


Нейросеть создала арканоид

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

1

Я немного поправил, а то не запускалось и вот что получилось:

Код:
InitSprite()
InitMouse()
; Установка начальных параметров
Global bRunning = 1
Global fBallX = 200
Global fBallY = 300
Global fBallDX = 3
Global fBallDY = -3
Global fPaddleX = 200
Global fPaddleY = 450
Global iPaddleWidth = 80
Global iPaddleHeight = 20
Global iBlockWidth = 50
Global iBlockHeight = 20
Global Dim iBlocks(10, 5)

; Инициализация блока
For x = 0 To 9
  For y = 0 To 4
    iBlocks(x, y) = 1 ; 1 означает, что блок существует
  Next
Next

; Инициализация окна
If OpenWindow(0, 0, 0, 600, 500, "Arkanoid", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
  OpenWindowedScreen(WindowID(0), 1,1,  600,  500)
  Repeat
    ; Обработка ввода
    If ExamineMouse()
      fPaddleX = MouseX() - (iPaddleWidth / 2)
      If fPaddleX < 0 : fPaddleX = 0 : EndIf
      If fPaddleX > 600 - iPaddleWidth : fPaddleX = 600 - iPaddleWidth : EndIf
    EndIf

    ; Обновление позиции мяча
    fBallX + fBallDX
    fBallY + fBallDY

    ; Проверка столкновений
    If fBallX < 0 Or fBallX > 590
      fBallDX = -fBallDX ; Отскок от стены
    EndIf

    If fBallY < 0
      fBallDY = -fBallDY ; Отскок от верхней стены
    EndIf

    ; Проверка столкновения с платформой
    If fBallY > fPaddleY - 10 And fBallX > fPaddleX And fBallX < fPaddleX + iPaddleWidth
      fBallDY = -fBallDY ; Отскок от платформы
      fBallY = fPaddleY - 10 ; Чтобы мяч не застревал
    EndIf

    ; Проверка столкновения с блоками
    For x = 0 To 9
      For y = 0 To 4
        If iBlocks(x, y) = 1
          If fBallX > x * iBlockWidth And fBallX < (x + 1) * iBlockWidth And fBallY > y * iBlockHeight And fBallY < (y + 1) * iBlockHeight
            iBlocks(x, y) = 0 ; Удаляем блок
            fBallDY = -fBallDY ; Отскок от блока
          EndIf
        EndIf
      Next
    Next

    ; Проверка падения мяча
    If fBallY > 500
      bRunning = 0 ; Игра окончена
    EndIf

    ; Отрисовка
    ClearScreen(0)
    StartDrawing(ScreenOutput())
    ; Отрисovка блоков
    For x = 0 To 9
      For y = 0 To 4
        If iBlocks(x, y) = 1
          Box(x * iBlockWidth, y * iBlockHeight, iBlockWidth, iBlockHeight, $00FF00)
        EndIf
      Next
    Next

    ; Рисуем платформу
    Box(fPaddleX, fPaddleY, iPaddleWidth, iPaddleHeight, $FFFFFF)

    ; Рисуем мяч
    Circle(fBallX, fBallY, 10, $FF0000)

    ; Обновляем экран
    StopDrawing()
    FlipBuffers()

  Until WindowEvent() = #PB_Event_CloseWindow Or bRunning = 0
EndIf

End

0

2

кому интересно - доработайте

0

3

Код:
; Инициализация
InitSprite()
InitKeyboard()

; Размеры окна
#SCREEN_WIDTH = 640
#SCREEN_HEIGHT = 480

; Создание окна
OpenWindow(0, 0, 0, #SCREEN_WIDTH, #SCREEN_HEIGHT, "Arkanoid", #PB_Window_ScreenCentered|#PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(0), 0, 0, #SCREEN_WIDTH, #SCREEN_HEIGHT, 0, 0, 0)

; Переменные для платформы
PlatformWidth = 100
PlatformHeight = 20
PlatformX = (#SCREEN_WIDTH - PlatformWidth) / 2
PlatformY = #SCREEN_HEIGHT - 50
PlatformSpeed = 5

; Переменные для мяча
BallRadius = 10
BallX = #SCREEN_WIDTH / 2
BallY = #SCREEN_HEIGHT / 2
BallSpeedX = 3
BallSpeedY = 3

; Переменные для блоков
#BLOCK_ROWS = 5
#BLOCK_COLUMNS = 10
Dim Blocks.b(#BLOCK_COLUMNS - 1, #BLOCK_ROWS - 1)

; Инициализация блоков
For x = 0 To #BLOCK_COLUMNS - 1
  For y = 0 To #BLOCK_ROWS - 1
    Blocks(x, y) = 1
  Next
Next

; Основной игровой цикл
Repeat
  ; Очистка экрана
  ClearScreen(RGB(0, 0, 0))

  ; Обработка ввода
  ExamineKeyboard()
  If KeyboardPushed(#PB_Key_Left) And PlatformX > 0
    PlatformX - PlatformSpeed
  EndIf
  If KeyboardPushed(#PB_Key_Right) And PlatformX < #SCREEN_WIDTH - PlatformWidth
    PlatformX + PlatformSpeed
  EndIf

  ; Движение мяча
  BallX + BallSpeedX
  BallY + BallSpeedY

  ; Отскок мяча от стен
  If BallX <= 0 Or BallX >= #SCREEN_WIDTH
    BallSpeedX = -BallSpeedX
  EndIf
  If BallY <= 0
    BallSpeedY = -BallSpeedY
  EndIf

  ; Отскок мяча от платформы
  If BallY + BallRadius >= PlatformY And BallY + BallRadius <= PlatformY + PlatformHeight And BallX >= PlatformX And BallX <= PlatformX + PlatformWidth
    BallSpeedY = -BallSpeedY
  EndIf

  ; Проверка столкновения мяча с блоками
  For x = 0 To #BLOCK_COLUMNS - 1
    For y = 0 To #BLOCK_ROWS - 1
      If Blocks(x, y) = 1
        BlockX = x * 64
        BlockY = y * 24
        If BallX >= BlockX And BallX <= BlockX + 64 And BallY >= BlockY And BallY <= BlockY + 24
          Blocks(x, y) = 0
          BallSpeedY = -BallSpeedY
        EndIf
      EndIf
    Next
  Next
  StartDrawing(ScreenOutput())
  ; Отрисовка платформы
  Box(PlatformX, PlatformY, PlatformWidth, PlatformHeight, RGB(255, 255, 255))

  ; Отрисовка мяча
  Circle(BallX, BallY, BallRadius, RGB(255, 0, 0))

  ; Отрисовка блоков
  For x = 0 To #BLOCK_COLUMNS - 1
    For y = 0 To #BLOCK_ROWS - 1
      If Blocks(x, y) = 1
        Box(x * 64, y * 24, 64, 24, RGB(0, 0, 255))
      EndIf
    Next
  Next
  StopDrawing()
  ; Обновление экрана
  FlipBuffers()

  ; Задержка для стабилизации FPS
  Delay(10)

Until KeyboardPushed(#PB_Key_Escape) Or WindowEvent() = #PB_Event_CloseWindow

0

4

PSY написал(а):

кому интересно - доработайте

Не интересно!
Написал бы ты лучше на PureBasic некоторые известные алгоритмы:
Ссылка на визуальное демо
хотя бы с помощью нейросети.
Я пробовал, но нейросеть, хоть и крутая штука, но, в PureBasic - пока полный ноль!
Поэтому, сам, пока пишу алгоритмы своими мозгами)

0

5

да это всё уже есть или было ранее когда-то... быть может на забугорном или на старом purebasic.info было. А чё там писать то, фибоначи, факториал?! По-моему это уже разжёвано давно.

0

6

PSY написал(а):

да это всё уже есть или было ранее когда-то... быть может на забугорном или на старом purebasic.info было. А чё там писать то, фибоначи, факториал?! По-моему это уже разжёвано давно.

Слушай, ну покажи пожалуйста, сделай ссылки, я буду только рад! Сжатые префиксные деревья, АВЛ-дерево, да и другие деревья поиска. Я считаю, что их нужно совместно поддерживать для PureBasic. Да и многие другие алгоритмы.
Если для тебя, что-то просто, ну было бы круто, если бы ты создал и поддерживал такие алгоритмы в общую копилку "знаний".

Отредактировано Webarion (09.02.2025 04:13:57)

0


Вы здесь » PureBasic - форум » OpenSource » Нейросеть создала арканоид