Pygame freezes on startup
Question:
I’m using pygame to try and get better with python but it just doesn’t respond.
I don’t know why, as I have similar code that works just fine.
import pygame
import random
import time
width = 500
height = 500
snake = [[width / 2,height / 2]]
direction = "right"
pygame.init()
move_increment = 0.1
screen = pygame.display.set_mode((width,height))
running = True
pygame.display.set_caption(("Snake for Python"))
icon = pygame.image.load(("download.png"))
pygame.display.set_icon(icon)
def Keys():
keys = pygame.key.get_pressed()
if keys[pygame.K_w]:
direction = "up"
print("w pressed")
if keys[pygame.K_s]:
direction = "down"
print("s pressed")
if keys[pygame.K_d]:
direction = "right"
print("d pressed")
if keys[pygame.K_a]:
direction = "left"
print("a pressed")
while running:
for x in snake:
pygame.draw.rect(screen, (255,255,255), [x[0], x[1], 15, 15])
if direction == "up":
x[1] -= move_increment
if direction == "down":
x[1] += move_increment
if direction == "left":
x[0] -= move_increment
if direction == "right":
x[0] += move_increment
pygame.draw.rect(screen,(0,0,0),[0,0,width,height])
pygame.display.flip()
Keys()
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
No errors, no prompts stopping execution, this just makes NO SENSE.
Answers:
pygame.draw.rect(screen,(0,0,0),[0,0,width,height])
pygame.display.flip()
Keys()
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
This code needs to be indented more. It’s currently outside the while
loop, and therefore never being run
I’m using pygame to try and get better with python but it just doesn’t respond.
I don’t know why, as I have similar code that works just fine.
import pygame
import random
import time
width = 500
height = 500
snake = [[width / 2,height / 2]]
direction = "right"
pygame.init()
move_increment = 0.1
screen = pygame.display.set_mode((width,height))
running = True
pygame.display.set_caption(("Snake for Python"))
icon = pygame.image.load(("download.png"))
pygame.display.set_icon(icon)
def Keys():
keys = pygame.key.get_pressed()
if keys[pygame.K_w]:
direction = "up"
print("w pressed")
if keys[pygame.K_s]:
direction = "down"
print("s pressed")
if keys[pygame.K_d]:
direction = "right"
print("d pressed")
if keys[pygame.K_a]:
direction = "left"
print("a pressed")
while running:
for x in snake:
pygame.draw.rect(screen, (255,255,255), [x[0], x[1], 15, 15])
if direction == "up":
x[1] -= move_increment
if direction == "down":
x[1] += move_increment
if direction == "left":
x[0] -= move_increment
if direction == "right":
x[0] += move_increment
pygame.draw.rect(screen,(0,0,0),[0,0,width,height])
pygame.display.flip()
Keys()
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
No errors, no prompts stopping execution, this just makes NO SENSE.
pygame.draw.rect(screen,(0,0,0),[0,0,width,height])
pygame.display.flip()
Keys()
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
This code needs to be indented more. It’s currently outside the while
loop, and therefore never being run