Pygame,Python 2.7.3。重复障碍

时间:2016-03-27 02:21:03

标签: python python-2.7 pygame

我使用python 2.7.3创建一个简单的Pygame游戏,其中一个球必须避免障碍物向球落下。但我无法弄清楚如何使障碍物反复下降,同时每个障碍物也随机下降。这是我的代码:

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()

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

处理每个需要附加数据的代码的最佳方法通常是为它编写一个类。你可以从头开始自己的类,但是从pygame.sprite.Sprite这样的东西继承可能更容易,它已经完成了你想要的大部分工作(也可以做更多的东西,比如使用更复杂的图像而不是只是一个坚实的颜色框。)