Jump to content

  • Log In with Google      Sign In   
  • Create Account

Banner advertising on our site currently available from just $5!


1. Learn about the promo. 2. Sign up for GDNet+. 3. Set up your advert!


Need Help Fixing Problem With Simple Program(Python/Pygame)


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
4 replies to this topic

#1 tigers_on_moon   Members   -  Reputation: 197

Like
0Likes
Like

Posted 03 August 2014 - 07:11 PM

Recently I've been going going through the lessons on this site - http://programarcadegames.com/index.php?lang=en. I'm currently on the first part of chapter 8(Trying to make the white box bounce around on a black backround). When I try to run my program, all I get is a blank black window, no square. But when I close the program, the square appears for a moment. The code is below. If anyone can see the problem and point it out, I'd greatly appreciate it.

# Import a library of functions called 'pygame'
import pygame

# Initialize the game engine
pygame.init()

# Defining some colors
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
GREEN = (0, 255, 0)
RED = (255, 0, 0)

# Opening and setting window size
size = (700, 500)
screen = pygame.display.set_mode(size)

# Setting the window title
pygame.display.set_caption("rabbitrabbit's game")

# Setting up main program loop
# Loop until user clicks the close button
done = False

# Manage how fast screen updates
clock = pygame.time.Clock()
# Starting position of the rectangle
rect_x = 50
rect_y = 50
# Speed and direction of rectangle
rect_change_x = 8
rect_change_y = 8


#------------ Main Program Loop -------------
while not done:  
    #---------Main Event Loop-------------
    for event in pygame.event.get():# User did something
        if event. type == pygame.QUIT: # If user clicked close
            done = True # Flag that we are done so exit this loop
# Set Screen backround
screen.fill(BLACK)
# Draw the rectangle
pygame.draw.rect(screen, WHITE, [rect_x, 50, 50, 50])
# Move the rectangle's starting point
rect_x += rect_change_x
rect_y += rect_change_y
# Bounce the rectangle if needed
if rect_y > 450 or rect_y < 0:
    rect_change_y = rect_change_y * -1
if rect_x > 650 or rect_x < 0:
    rect_change_x = rect_change_x * -1

# Game logic here

# Drawing code here

# Update screen
pygame.display.flip()
# --- Limit to 60 FPS
clock.tick(60)

pygame.quit()


Edited by rabbitrabbit, 04 August 2014 - 10:10 AM.

Beginner. Whatever I said above could be completely wrong.


Sponsor:

#2 DiegoSLTS   Members   -  Reputation: 2101

Like
1Likes
Like

Posted 03 August 2014 - 08:43 PM

Maybe posting the code directly isn't a good idea. Python depends on the corrent indentation to work as you expect. Try to use the code option while writing the post or something like http://pastebin.com/ to make sure it looks like the code in your script.

 

Now, only guessing, maybe you forgot to put the pygame.display.flip() and clock.tick(60) lines inside the while block.



#3 exOfde   Members   -  Reputation: 824

Like
0Likes
Like

Posted 04 August 2014 - 03:07 AM

If your code copy&pasted correctly you did not put the code to draw the rectangle
Into the while loop. First after you left the loop you start to draw your rectangle.

#4 KnolanCross   Members   -  Reputation: 1610

Like
1Likes
Like

Posted 04 August 2014 - 10:36 AM

Assuming the code you paste is correct, the problem is that the actual drawing code is outisde the main loop.

 

The short answer is:

Add a single tab (or four spaces, depending on what you are using to indent) to every line from line 44 to line 64.

 

The long answer is:

Python takes context by code indentation, in the code you posted here, your program will loop in the wait for the close click event, and won't draw a single thing. When the user press the close, it will leave the loop and execute the drawing code ONCE (hence, you see the drawn there) and then quit. You need to put the drawing code inside the main loop to see it actually draw something.


Edited by KnolanCross, 04 August 2014 - 10:37 AM.

Currently working on a scene editor for ORX (http://orx-project.org), using kivy (http://kivy.org).


#5 tigers_on_moon   Members   -  Reputation: 197

Like
1Likes
Like

Posted 04 August 2014 - 01:24 PM

Thanks KnolanCross, I changed it and the code works now. Also, I'll be sure to use the code option from now on when posting.


Beginner. Whatever I said above could be completely wrong.





Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS