为什么函数代码这样优化就不行?
相关截图:
war.py
mian.py
问题描述:
函数代码这样优化后始终无法运行,不知道为什么
相关代码:
war.py
import sys, pygame
import constants
from game.plane import Ourplane, Enemyplane
class Planewar(object):
READY=0
PLAYING=1
OVER=2
status=READY
small_enemies = pygame.sprite.Group()
enemies = pygame.sprite.Group()
counter = 0
def __init__(self):
pygame.init()
self.width, self.height = 480, 852
self.screen = pygame.display.set_mode((self.width, self.height))
self.bg = pygame.image.load(constants.bg_img)
self.img_game_title = pygame.image.load(constants.game_title_img)
self.img_game_title_rect = self.img_game_title.get_rect()
t_width, t_height = self.img_game_title.get_size()
self.img_game_title_rect.topleft = (int((self.width - t_width))/ 2, int(self.height / 2-t_height))
self.btn_start = pygame.image.load(constants.game_start_img)
self.btn_start_rect = self.btn_start.get_rect()
btn_width, btn_height = self.btn_start.get_size()
self.btn_start_rect.topleft =(int(self.width - btn_width) / 2), int(self.height / 2+btn_height)
pygame.mixer.music.load(constants.bg_music)
pygame.mixer.music.play(-1)
pygame.mixer.music.set_volume(0.5)
self.ourplane = Ourplane(self.screen, speed = 10)
self.clock = pygame.time.Clock()
for i in range(0, 6):
self.plane = Enemyplane(self.screen, speed=5)
self.plane.add(self.small_enemies, self.enemies)
def loop(self):
while True:
self.counter += 1
self.clock.tick(60)
if self.counter >= 60:
self.counter = 0
def bind_event(self):
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.MOUSEBUTTONDOWN:
if self.status == self.READY:
self.status = self.PLAYING
elif event.type == pygame.KEYDOWN:
if self.status == self.PLAYING:
if event.key == pygame.K_w or event.key == pygame.K_UP:
self.ourplane.move_up()
elif event.key == pygame.K_a or event.key == pygame.K_LEFT:
self.ourplane.move_left()
elif event.key == pygame.K_d or event.key == pygame.K_RIGHT:
self.ourplane.move_right()
elif event.key == pygame.K_s or event.key == pygame.K_DOWN:
self.ourplane.move_down()
elif event.key == pygame.K_SPACE:
self.ourplane.shoot()
def run_game(self):
self.loop()
self.bind_event()
if self.status == self.READY:
self.screen.blit(self.bg, self.bg.get_rect())
self.screen.blit(self.img_game_title, self.img_game_title_rect)
self.screen.blit(self.btn_start, self.btn_start_rect)
elif self.status == 1:
self.screen.blit(self.bg, self.bg.get_rect())
self.ourplane.update(self.counter)
self.ourplane.bullets.update()
self.small_enemies.update()
pygame.display.set_caption('飞机大战游戏')
pygame.display.flip()
相关代码:
mian.py
from game.war import Planewar
def main():
War=Planewar()
War.loop()
War.bind_event()
War.run_game()
if __name__ == "__main__":
main()
10
收起
正在回答
1回答
同学,你好!同学在调用loop()方法时,循环会一直执行导致死循环,不会继续向下执行其他代码,因此会无法执行。同学可以根据视频讲解的方法进行修改
祝学习愉快!
1.Python零基础入门
- 参与学习 人
- 提交作业 2727 份
- 解答问题 8160 个
想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星