【发布时间】:2016-03-30 11:32:50
【问题描述】:
我正在编写程序中的第 12 章课程练习第 11 步 街机游戏,我无法显示我正在显示的 10 个椭圆 试图通过Rectangle的父类来做。我只是得到 现在有10个矩形。我知道问题出在第 34-37 行, 60-62 或 78-81。整个问题在下面的链接中列出
http://www.programarcadegames.com/index.php?chapter=lab_classes_and_graphics&lang=en
import pygame
from random import randrange
#Colors
black = (0, 0, 0)
white = (255, 255, 255)
green = (0, 255, 0)
red = (255, 0, 0)
pygame.init()
#Set width and height of screen
size = (700, 500)
screen = pygame.display.set_mode(size)
pygame.display.set_caption("Classes")
class Rectangle():
def __init__(self):
self.x = 0
self.y = 0
self.change_x = 0
self.change_y = 0
self.width = 0
self.height = 0
self.color = [0, 255, 0]
def draw(self, screen):
pygame.draw.rect(screen, self.color, [self.x, self.y, self.width, self.height])
def move(self):
self.x = self.x + self.change_x
self.y = self.y + self.change_y
class Ellipse(Rectangle):
def draw(self, screen):
pygame.draw.ellipse(screen, self.color, [self.x, self.y, self.width, self.height])
#Loop until user clicks close
done = False
#Manage how fast screen updates
clock = pygame.time.Clock()
my_list = []
for i in range(10):
my_object = Rectangle()
my_object.x = randrange(0, 701)
my_object.y = randrange(0, 501)
my_object.change_x = randrange(-3, 3)
my_object.change_y = randrange(-3, 3)
my_object.width = randrange(20, 71)
my_object.height = randrange(20, 71)
my_object.color = [0, 255, 0]
my_list.append(my_object)
for i in range(10):
my_ellipse = Ellipse()
my_list.append(my_ellipse)
#Main Program Loop
while not done:
#Main event loop
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
#Game logic goes here
#Screen clearing code or background image goes here
screen.fill(black)
#drawing code goes here
for my_object in my_list:
my_object.draw(screen)
my_ellipse.draw(screen)
my_object.move()
#update and display drawn screen
pygame.display.flip()
#limit to 60 frames per second
clock.tick(60)
#close the window and quit
pygame.quit()
【问题讨论】:
标签: python list class loops pygame