我试图写一个像游戏一样的太空侵略者。我最初编写代码时只提供1个入侵者来给我一些东西来构建。当我开始添加更多入侵者时,我决定创建一个类,在这个类中,我可以让入侵者列表循环。
我试图在我的列表中的方法中更改入侵者的x坐标,但发现它不会改变值,因此入侵者被留在原地。任何帮助将不胜感激!
这是我正在研究的课程:
import sys, pygame, random
from pygame.locals import *
import itertools
#from bullet import Invader
pygame.init()
screen_height = 600
screen_width = 1200
DISPLAYSURF = pygame.display.set_mode((screen_width, screen_height))
FPS = 200
score = 0
pygame.display.set_caption('Testing Pygame')
spaceship = pygame.image.load('spaceship copy.bmp')
spaceship_rect = spaceship.get_rect()
DISPLAYSURF_rect = DISPLAYSURF.get_rect()
FONT = pygame.font.Font('freesansbold.ttf', 32)
text = FONT.render('Score ' + str(score), True, (180, 180, 180))
text_rect = text.get_rect()
text_rect.centerx = DISPLAYSURF_rect.centerx
text_rect.centery = DISPLAYSURF_rect.centery
invader_right_movement = False
invader_left_movement = True
class Invader():
def __init__(self, invader, invader_x, invader_y):
self.invader = invader
self.rect = invader.get_rect()
self.rect.x = invader_x
self.rect.y = invader_y
def move_invader(self, movement):
#self.x = self.rect.x
#self.y = self.rect.y
#Move invader
if invader_right_movement == True:
self.rect.x += movement
if invader_left_movement == True:
self.rect.x -= movement
DISPLAYSURF.blit(self.invader, (self.rect.x, self.rect.y))
invaders_x = [10, 90, 170, 250, 330, 410, 490, 570, 650, 730]
invaders_y = 40
invader_image = pygame.image.load('invader.bmp')
invaders = []
for x in invaders_x:
invaders.append(Invader(invader_image,x,invaders_y))
invaders_rect = []
for invader, x in zip(invaders, invaders_x):
invader.centerx = x
invader.centery = invaders_y
spaceship_rect.centerx = DISPLAYSURF_rect.centerx
spaceship_rect.centery = DISPLAYSURF_rect.bottom - 40
move_right = False
move_left = False
move_rate = 5
bullet_firing = False
月关宝盒
相关分类