Petras99
Petras99

Reputation: 45

Pygame, Python 2.7.3. Repeating obstacles

Im creating a simple game with Pygame using python 2.7.3, where a ball has to avoid obstacles falling down towards the ball. But i cannot figure out how to make the obstacles fall repeatedly while also each obstacle falls randomly. This is my code:

import pygame
from math import pi
import random

pygame.init()

BLACK = (  0,   0,   0)
WHITE = (255, 255, 255)
BLUE =  (  0,   0, 255)
GREEN = (  0, 255,   0)
RED =   (255,   0,   0)
TAN = (252,231,182)
background = (38,37,37)

size = [400, 400]
screen = pygame.display.set_mode(size)
pygame.display.set_caption("Game")

siz = 20
x = 200
xminus = x - 140
xadd = x + 140
y = 350
fallingy = 0
rectx = 0
rectl = 60
rectw = 30
done = False
clock = pygame.time.Clock()

while not done:

    clock.tick(10)

    for event in pygame.event.get(): 
        if event.type == pygame.QUIT: 
            done=True 
    screen.fill(background)
    pressed = pygame.key.get_pressed()
    circle = pygame.draw.circle(screen, BLUE, [x,y],siz)

    if pressed[pygame.K_LEFT]:
        screen.fill(background)
        x = 60
        circle2 = pygame.draw.circle(screen, BLUE,[x,y],siz)

    if pressed[pygame.K_RIGHT]:
        screen.fill(background)
        x = 340
        circle = pygame.draw.circle(screen, BLUE,[x,y],siz)

    if pressed[pygame.K_LEFT] and pressed[pygame.K_RIGHT]:
        screen.fill(background)
        circle = pygame.draw.circle(screen, BLUE,[xminus,y],siz)
        circle = pygame.draw.circle(screen, BLUE,[xadd,y],siz)

    else:
        circle = pygame.draw.circle(screen, BLUE, [x,y],siz)
        x = 200
    """THIS IS THE CODE I WANT TO BE REPEATED RANDOMLY"""   
    def middle1():
        pygame.draw.rect(screen, RED, [rectx, fallingy, 170, rectw])
        pygame.draw.rect(screen, RED, [rectx + 400, fallingy, -170, rectw])
    def lnr():
        pygame.draw.rect(screen, RED, [rectx, fallingy, 20, rectw])
        pygame.draw.rect(screen, RED, [rectx +400, fallingy, -20, rectw])
        pygame.draw.rect(screen, RED, [rectx + 100, fallingy, 200, rectw])
    def l():
        pygame.draw.rect(screen, RED, [rectx, fallingy, 20, rectw])
        pygame.draw.rect(screen, RED, [rectx + 400, fallingy, -300, rectw])
    def r():
        pygame.draw.rect(screen, RED, [rectx + 400, fallingy, -20, rectw])
        pygame.draw.rect(screen, RED, [rectx, fallingy, 300, rectw])
    """THIS IS THE CODE I WANT TO BE REPEATED RANDOMLY"""
    fallingy += 5
    pygame.display.flip()
pygame.quit()

Any help will be greatly appreciated.

Upvotes: 0

Views: 438

Answers (1)

Blckknght
Blckknght

Reputation: 104762

Often the best way to handle bits of code that each need their own data attached is to write a class for it. You could roll your own class from scratch, but it may be easier to inherit from something like pygame.sprite.Sprite which already does most of what you want (and can do a bunch more stuff too, like using a more complicated image instead of just a solid box of color).

Upvotes: 1

Related Questions