Hey!
Some time ago I used to practice coding by creating a few games using Python and pygame.
I did so using some how-to videos on Youtube.
Here's a racing game I tried putting together.
There's still some weirdness on how it behaves, but I guess it's almost OK.
I need to figure out how to make the steering not continue to the right after the direction button has been released.
But what I'd really like to do is re-create this game on Godot. It looks like Godot is very easy, so it'll likely not take very long.
Here's the code for the game:
import pygame
import time
import random
pygame.init()
display_width = 1024
display_height = 768
black = (0,0,0)
white = (255,255,255)
red = (255,0,0)
green = (0,255,0)
blue = (0,0,255)
car_width = 73
gameDisplay = pygame.display.set_mode((display_width,display_height))
pygame.display.set_caption("Kilpa-ajo")
clock = pygame.time.Clock()
carImg = pygame.image.load('race car.png')
icon = pygame.image.load("racecar32.png")
pygame.display.set_icon(icon)
def things(thingx, thingy, thingw, thingh, colour):
pygame.draw.rect(gameDisplay, colour, [thingx, thingy, thingw, thingh])
def car(x,y):
gameDisplay.blit(carImg, (x,y))
def text_objects(text, font):
textSurface = font.render(def text, True, red)
return textSurface, textSurface.get_rect()
message_display(text):
largeText = pygame.font.Font('freesansbold.ttf', 115)
TextSurf, TextRect = text_objects(text, largeText)
TextRect.center = ((display_width/2),(display_height/2))
gameDisplay.blit(TextSurf, TextRect)
pygame.display.update()
time.sleep(2)
game_loop()
def crash():
message_display('You crashed!')
def game_loop():
x = (display_width * 0.45)
y = (display_height * 0.8)
x_change = 0
thing_startx = random.randrange(0, display_width)
thing_starty = -600
thing_speed = 7
thing_width = 100
thing_height = 100
gameExit = False
while not gameExit:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
x_change = -5
elif event.key == pygame.K_RIGHT:
x_change = 5
if event.type == pygame.KEYUP:
if event.type == pygame.K_RIGHT or event.key == pygame.K_LEFT:
x_change = 0
x += x_change
gameDisplay.fill(white)
#thingx, thingy, thingw, thingh, colour
things(thing_startx, thing_starty, thing_width, thing_height, black)
thing_starty += thing_speed
car(x,y)
if x > display_width - car_width or x < 0:
crash()
if thing_starty > display_height:
thing_starty = 0 - thing_height
thing_startx = random.randrange(0, display_width)
if y < thing_starty+thing_height:
if x > thing_startx and x < thing_startx + thing_width or x+car_width > thing_startx and x + car_width < thing_startx + thing_width:
crash()
pygame.display.update()
clock.tick(120)
game_loop()
pygame.quit()
quit()
It might have been smarter to not write the game inside the loop, but call the game from inside the loop instead. Well, maybe I'll do that the next time.
Retracting that. I had named the definition game_loop, so it wasn't actually in the loop, it was just the running part of the game that was called again every time it was stopped.
I really need to warm up my coding skills. I was a beginner before and I feel more like a beginner right now. I can't even read the code I wrote years ago. 😅
It look pretty great. I was thinking the black blocks will start to become faster at one point
Yes that's something I should implement too. Miro played the game, and while he said it sucked 😅, he was actually quite glued into it. 😂
Oh, this coding could be make insane to mad too! But appreciate to your hard work.
Upvoted by GITPLAIT!
We have a curation trial on Hive.vote. you can earn a passive income by delegating to @gitplait
We share 80 % of the curation rewards with the delegators.
To delegate, use the links or adjust 10HIVE, 20HIVE, 50HIVE, 100HIVE, 200HIVE, 500HIVE, 1,000HIVE, 10,000HIVE, 100,000HIVE
Join the Community and chat with us on Discord let’s solve problems & build together.
I have picked your post for my daily hive voting initiative, Keep it up and Hive On!!