Posts: 730
Threads: 30
Joined: Apr 2022
Reputation:
43
I am working on a QB64 GPT. I have been training it on the Wiki as well as some sample programs. Doesn't always produce ready-to-use code, especially when it comes to OpenGL or Windows API. Otherwise, most things it makes should be good. If anyone is
willing to concatenate all their samples or libraries into single files, I'd be happy to use them as training data for the GPT. It also has InForm as training data, though I can't say it does too well. I plan on making another GPT that is strictly for helping with making changes to the IDE/compiler.
https://chatgpt.com/g/g-Cufiyami0-qb64-gpt
Tread on those who tread on you
Posts: 730
Threads: 30
Joined: Apr 2022
Reputation:
43
05-17-2024, 05:25 PM
(This post was last modified: 05-17-2024, 05:29 PM by SpriggsySpriggs.)
Here is some code that it wrote when I asked for a game. Doesn't work, but it is syntactically correct and does compile:
Code: (Select All)
DECLARE SUB InitializeGame ()
DECLARE SUB HandleInput ()
DECLARE SUB UpdateGame ()
DECLARE SUB RenderGame ()
DECLARE SUB CheckPlatformCollision ()
DECLARE SUB CreatePlatforms ()
DECLARE SUB CreateEnemies ()
DECLARE SUB UpdateEnemies ()
DECLARE SUB CheckEnemyCollision ()
Const SCREEN_WIDTH = 800
Const SCREEN_HEIGHT = 600
Type Platform
x As Single
y As Single
width As Single
height As Single
End Type
Type Enemy
x As Single
y As Single
width As Single
height As Single
velX As Single
End Type
Dim Shared playerX As Single, playerY As Single
Dim Shared playerVelX As Single, playerVelY As Single
Dim Shared gravity As Single
Dim Shared isJumping As Integer
Dim Shared platforms(10) As Platform
Dim Shared enemies(5) As Enemy
Screen _NewImage(SCREEN_WIDTH, SCREEN_HEIGHT, 32)
InitializeGame
Do
HandleInput
UpdateGame
RenderGame
_Limit 60
Loop Until InKey$ = Chr$(27) ' Esc key to exit
Sub InitializeGame
playerX = SCREEN_WIDTH / 2
playerY = SCREEN_HEIGHT - 50
playerVelX = 0
playerVelY = 0
gravity = 0.5
isJumping = 0
CreatePlatforms
CreateEnemies
End Sub
Sub HandleInput
playerVelX = 0
If _KeyDown(203) Then playerVelX = -5 ' Left arrow key
If _KeyDown(205) Then playerVelX = 5 ' Right arrow key
If _KeyDown(57) And isJumping = 0 Then ' Space bar
playerVelY = -10
isJumping = 1
End If
End Sub
Sub UpdateGame
playerY = playerY + playerVelY
playerX = playerX + playerVelX
playerVelY = playerVelY + gravity
' Simulate ground
If playerY >= SCREEN_HEIGHT - 50 Then
playerY = SCREEN_HEIGHT - 50
playerVelY = 0
isJumping = 0
End If
' Check collision with platforms
CheckPlatformCollision
' Update enemies
UpdateEnemies
' Check collision with enemies
CheckEnemyCollision
End Sub
Sub CheckPlatformCollision
For i = 0 To 9
If playerX + 10 > platforms(i).x And playerX < platforms(i).x + platforms(i).width Then
If playerY + 10 > platforms(i).y And playerY < platforms(i).y + platforms(i).height Then
playerY = platforms(i).y - 10
playerVelY = 0
isJumping = 0
End If
End If
Next
End Sub
Sub CreatePlatforms
For i = 0 To 9
platforms(i).x = Rnd * (SCREEN_WIDTH - 100)
platforms(i).y = Rnd * (SCREEN_HEIGHT - 200)
platforms(i).width = 100
platforms(i).height = 10
Next
End Sub
Sub CreateEnemies
For i = 0 To 4
enemies(i).x = Rnd * (SCREEN_WIDTH - 50)
enemies(i).y = Rnd * (SCREEN_HEIGHT - 50)
enemies(i).width = 30
enemies(i).height = 30
enemies(i).velX = 2 * (Rnd - 0.5)
Next
End Sub
Sub UpdateEnemies
For i = 0 To 4
enemies(i).x = enemies(i).x + enemies(i).velX
If enemies(i).x < 0 Or enemies(i).x > SCREEN_WIDTH - enemies(i).width Then
enemies(i).velX = -enemies(i).velX
End If
Next
End Sub
Sub CheckEnemyCollision
For i = 0 To 4
If playerX + 10 > enemies(i).x And playerX < enemies(i).x + enemies(i).width Then
If playerY + 10 > enemies(i).y And playerY < enemies(i).y + enemies(i).height Then
' Game over or reduce player health
Print "Game Over!"
Sleep
End
End If
End If
Next
End Sub
Sub RenderGame
Cls
_PrintString (playerX, playerY), "O"
For i = 0 To 9
Line (platforms(i).x, platforms(i).y)-(platforms(i).x + platforms(i).width, platforms(i).y + platforms(i).height), _RGB(0, 255, 0), BF
Next
For i = 0 To 4
Line (enemies(i).x, enemies(i).y)-(enemies(i).x + enemies(i).width, enemies(i).y + enemies(i).height), _RGB(255, 0, 0), BF
Next
_Display
End Sub
When I adjusted the arrow key controls to A, D, and space bar it actually worked. It ain't the prettiest, but it does work.
Tread on those who tread on you
Posts: 3,982
Threads: 178
Joined: Apr 2022
Reputation:
220
you should give it terry's tut so it can learn how to comment it's code
b = b + ...
Posts: 730
Threads: 30
Joined: Apr 2022
Reputation:
43
Good one
Tread on those who tread on you
Posts: 730
Threads: 30
Joined: Apr 2022
Reputation:
43
(05-18-2024, 04:11 PM)grymmjack Wrote: (05-17-2024, 05:08 PM)SpriggsySpriggs Wrote: I am working on a QB64 GPT. I have been training it on the Wiki as well as some sample programs. Doesn't always produce ready-to-use code, especially when it comes to OpenGL or Windows API. Otherwise, most things it makes should be good. If anyone is willing to concatenate all their samples or libraries into single files, I'd be happy to use them as training data for the GPT. It also has InForm as training data, though I can't say it does too well. I plan on making another GPT that is strictly for helping with making changes to the IDE/compiler.
https://chatgpt.com/g/g-Cufiyami0-qb64-gpt
Sick! How did you train it?
It says I have to sign-up.
Are you going to put your model onto hugging face? (is that a thing that can happen with what you did?) then we could like host our own local copy of the model?
This was made using the GPT builder on ChatGPT. I don't have any models. It was trained using the Wiki and some sample code.
Tread on those who tread on you