I need help on why this isn't working

Started by
4 comments, last by BCullis 11 years, 6 months ago
I'm trying to make it where i display my main starting screen with a while loop and it doesn't seem to be working. If i blit the pictures normally outside of the loop it works, but just simply having the loop stops the program from even going. This is my while loop:

[source lang="python"]#Menu screen
start_screen = True

while start_screen:
DISPLAY.blit(sbg, (0, 0))
DISPLAY.blit(stitle, (188, 10))
DISPLAY.blit(textObj1, RectObj1)

for event in pygame.event.get():

if event.type == pygame.KEYDOWN:
if event.key == pygame.K_RETURN:
start_screen == False
game == True[/source]
"game" being another loop that simply fills the screen white(for testing, later this will initiate the game).

Here's the whole code:

[source lang="python"]import pygame, random
import randint
import pplrty
import sys
from pygame.locals import *

pygame.init()

FPS = 30
fpsClock = pygame.time.Clock()

#variables
x = randint.x
year = 2011
p = pplrty.p

#get colors
WHITE = (255, 255, 255)
RED = (255, 0, 0)

#get display stuff
DISPLAY = pygame.display.set_mode((640,480))
pygame.display.set_caption('Program')

#create fonts
fontObj1 = pygame.font.Font('freesansbold.ttf', 16)

#make words
textObj1 = fontObj1.render('Hit Enter', True, RED)
RectObj1 = textObj1.get_rect()
RectObj1.center = (315, 240)

#get images
title = pygame.image.load('title.png')
stitle = pygame.transform.scale(title, (264, 64))

bg = pygame.image.load('bg.png')
sbg = pygame.transform.scale(bg, (640, 480))


#Menu screen
start_screen = True

while start_screen:
DISPLAY.blit(sbg, (0, 0))
DISPLAY.blit(stitle, (188, 10))
DISPLAY.blit(textObj1, RectObj1)

for event in pygame.event.get():

if event.type == pygame.KEYDOWN:
if event.key == pygame.K_RETURN:
start_screen == False
game == True

while game:
DISPLAY.fill(WHITE)


#Main Loop
while True:

for event in pygame.event.get():

if event.type == QUIT:
pygame.quit()
sys.exit()

pygame.display.update()

[/source]

The game is going to be a simple game with a simple gui and is in its first stages so certain things are not there, but it was working until i put the blit images in the loop.
Advertisement
Did you mean to use == instead of = for start_screen == False?

Did you mean to use == instead of = for start_screen == False?


Yes that was a mistake, i'll fix it when i get back to working on it.
That actually didn't work either. Am i using the while loop wrong? when i replaced the "=" with "==" it errored and said "start_screen is not defined"

EDIT:

I fixed it, i was forgetting to call pygame.display.update
You mistake his meaning. Your initialization of start_screen needs to remain start_screen=True, but in your conditionals if event.key==pygame.K_RETURN you need to change start_screen==False and game==True to start_screen=False and game=True. Because as it stands, you are not assigning to those values you are just comparing them to True or False.

[sub]

That actually didn't work either. Am i using the while loop wrong? when i replaced the "=" with "==" it errored and said "start_screen is not defined"
[/sub]
[sub]That's partially because you corrected in the wrong direction. Line 42 in your post above (the "entire code" section) is fine. It declares and defines the start_screen variable. The problem is lines 53 and 54. Those should be assignments and not boolean checks, so replace their =='s with a single =.[/sub]

[sub]Edit: slightly too slow. Ah well.[/sub]

Hazard Pay :: FPS/RTS in SharpDX (gathering dust, retained for... historical purposes)
DeviantArt :: Because right-brain needs love too (also pretty neglected these days)

This topic is closed to new replies.

Advertisement