簡體   English   中英

Pygame,Python 2.7.3。 重復障礙

[英]Pygame, Python 2.7.3. Repeating obstacles

我使用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()

任何幫助將不勝感激。

處理每個需要附加自己數據的代碼位的最佳方法通常是為其編寫一個類。 您可以從頭開始創建自己的類,但是從諸如pygame.sprite.Sprite東西繼承起來可能會更容易,而pygame.sprite.Sprite已經完成了您想要的大部分工作(並且還可以做更多的事情,例如使用更復雜的圖像而不是只是一個實心的顏色框)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM