我写了一个游戏,就是在按下空格键时,在屏幕上打出一个蓝色方块。然而,我得到的只是射击者上方的蓝色方块。这是我的代码:import pygame, sys, random
from gameobjects import *
def main():
pygame.init()
screen = pygame.display.set_mode((800, 800))
numberOfColumns = 5
columnWidth = screen.get_width() / numberOfColumns
numberOfRows = 5
rowWidth = screen.get_width() / numberOfRows
magazineImage = pygame.image.load("images/Magazine.bmp")
magazineIssueOneImage = pygame.image.load("images/Magazine #1.bmp")
monsterState1 = pygame.image.load("images/Zombie Pos 1.bmp")
monsterState2 = pygame.image.load("images/Zombie Pos 2.bmp")
monsterState3 = pygame.image.load("images/Zombie Pos 3.bmp")
monsters = []
forryState1 = pygame.image.load("images/Forry Pos 1.bmp")
forryState2 = pygame.image.load("images/Forry Pos 2.bmp")
forryDelayTime = 8
gameObjects = []
gameObjectBlittingCounter = 0
monsterSpawnSpotList = [(rowWidth * -5), (rowWidth * -4), (rowWidth * -3), (rowWidth * -2), (rowWidth * -1)]
for monster in range(0, 5):
monster = Monster(monsterState1, monsterState2, monsterState3, ((columnWidth / 2 - monsterState1.get_width() / 2) + gameObjectBlittingCounter * columnWidth), random.choice(monsterSpawnSpotList))
monsters.append(monster)
gameObjects.append(monster)
gameObjectBlittingCounter += 1
forry = Forry(forryState1, forryState2, columnWidth, rowWidth, screen, forryDelayTime, magazineImage, magazineIssueOneImage)
gameObjects.append(forry)
while True:
screen.fill((0,255,0))
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
#Update Projectiles
if forry.projectileCall == True:
magazine = Magazine(magazineImage, forry)
gameObjects.append(magazine)
#Update Game Objects
for gameObject in gameObjects:
gameObject.update()
#Render
gameObjectBlittingCounter = 0
for gameObject in gameObjects:
screen.blit(gameObjects[gameObjectBlittingCounter].image, ((gameObjects[gameObjectBlittingCounter].rect.x), (gameObjects[gameObjectBlittingCounter].rect.y)))
gameObjectBlittingCounter += 1
pygame.display.flip()
if __name__ == "__main__":
main()
文件游戏对象.py看起来像这样:
^{pr2}$
我的杂志是蓝色的正方形
那为什么我的炮弹不上屏幕呢?在
+
在下面的答案中进行了所有修复后,现在我遇到了另一个错误:
当蓝色的盒子从屏幕上消失时,它应该是因为自我毁灭()在Magazine类的更新功能中。在
然而,当他们中的一个离开屏幕的时候,并不是被杀,而是给了我这些错误:Traceback (most recent call last):
File "main.py", line 106, in
main()
File "main.py", line 78, in main
projectileObject.update()
File "/Users/number1son100/Desktop/Famous Monsters Game/gameobjects.py", line 117, in update
self.kill()
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pygame/sprite.py", line 174, in kill
for c in self.__g.keys():
AttributeError: 'Magazine' object has no attribute '_Sprite__g'