Python游戏入门 新手千万不要使用AI代码辅助
#alien_invasion.py
#新手千万不要使用AI代码辅助,容易被AI伪代码折磨,不知道错在哪里
import sys
import pygame
from settings import Settings
from ship import Ship
class AlienInvasion:
"""管理游戏资源和行为的类"""
def __init__(self):
"""初始化游戏并创建游戏资源"""
pygame.init()
self.clock = pygame.time.Clock()#定义一个时钟控制帧率
self.settings = Settings()
#创建Settings实例
self.screen = pygame.display.set_mode(
(self.settings.screen_width, self.settings.screen_height))
#使用self.settings中的两属性来获取屏幕的宽度和高度
self.screen = pygame.display.set_mode((1200, 800))#设置窗口大小
pygame.display.set_caption("Alien Invasion")
self.ship = Ship(self)
#设置背景色
self.bg_color = (230, 230, 230)
#在Pygame中颜色是由RGB值指定的,(230,230,230)代表浅灰色
def run_game(self):
"""开始游戏的主循环"""
while True:
# 监视键盘和鼠标活动
self._check_events()
self.ship.update()
self._update_screen()
self.clock.tick(60)
def _check_events(self):
"""响应按键和鼠标事件"""
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.KEYDOWN:
self._check_keydown_events(event)
elif event.type == pygame.KEYUP:
self._check_keyup_events(event)
def _check_keydown_events(self, event):
"""响应按键"""
if event.key == pygame.K_RIGHT:
self.ship.moving_right = True
elif event.key == pygame.K_LEFT:
self.ship.moving_left = True
elif event.key == pygame.K_q:
#一定要在英文输入法里按,中文输入法的英文状态都不行
sys.exit()
def _check_keyup_events(self, event):
"""松开按键"""
if event.key == pygame.K_RIGHT:
self.ship.moving_right = False
elif event.key == pygame.K_LEFT:
self.ship.moving_left = False
def _update_screen(self):
"""更新屏幕上的图像,并切换到新屏幕"""
#每次循环时都重绘屏幕
self.screen.fill(self.settings.bg_color)
#使用self.settings中的属性来获取屏幕的宽度和高度
self.ship.blitme(self)#在ship.blitme方法中加传了实参self
pygame.display.flip()
self.clock.tick(60)#把帧率控制在60帧
if __name__ == '__main__':
""" 创建游戏实例并运行游戏"""
#仅有直接运行该文件时,它们才会运行
ai = AlienInvasion()
ai.run_game()