欢迎光临散文网 会员登陆 & 注册

搞定键盘控制,从零开始用Python制作飞机大战【教程第3集】

2023-07-01 16:06 作者:我真帅啊kk  | 我要投稿

'''编完之后回头看有看不懂代码的意义?来看看我的加注释版吧,标记了各个代码的意义'''

# !/user/bin/env python3

# -*- coding: utf-8 -*-

import pygame # 导入pygame库


# 定义常量

WIDTH = 500 # 界面的宽

HEIGHT = 600 # 界面的高

WHITE = (255, 255, 255) # 白色

GREEN = (0, 255, 0) # 绿色


# 游戏初始化

pygame.init() # 初始化函数

screen = pygame.display.set_mode((WIDTH, HEIGHT)) # 设置界面宽高

pygame.display.set_caption('飞机大战') # 设置标题

clock = pygame.time.Clock() # 创建时钟对象



class Player(pygame.sprite.Sprite): # 创建玩家类

def __init__(self): # 初始化函数

pygame.sprite.Sprite.__init__(self)

self.image = pygame.Surface((50, 40)) # 将角色设置成一个长方形

self.image.fill(GREEN) # 填充颜色


self.rect = self.image.get_rect() # 获得轮廓

self.rect.centerx = WIDTH / 2 # 设置x中心

self.rect.bottom = HEIGHT - 20 # 底部坐标


self.speedx = 8 # 设置速度


def update(self):

key_pressed = pygame.key.get_pressed()

if key_pressed[pygame.K_RIGHT]: # 按下右方向键向右移动

self.rect.x += self.speedx


if key_pressed[pygame.K_LEFT]: # 按下左方向键向左移动

self.rect.x -= self.speedx


if self.rect.right > WIDTH: # 检测是否超过右边缘

self.rect.right = WIDTH # 条件达成则回到右边缘


if self.rect.left < 0: # 检测是否超过左边缘

self.rect.left = 0 # 条件达成则回到左边缘



all_sprites = pygame.sprite.Group() # 创建角色表

player = Player() # 创建玩家类对象

all_sprites.add(player) # 将创建的玩家类对象放入角色表


running = True # 定义工具变量用于控制循环

while running:


clock.tick(60) # 设置帧数


for event in pygame.event.get(): # 获取事件

if event.type == pygame.QUIT: # 判断是否为事件

running = False # 如果是,则将变量设为False,停止循环


all_sprites.update() # 更新游戏


screen.fill(WHITE) # 设置界面颜色,显示画面


all_sprites.draw(screen) # 绘制角色


pygame.display.update() # 更新状态


pygame.quit() # 退出


搞定键盘控制,从零开始用Python制作飞机大战【教程第3集】的评论 (共 条)

分享到微博请遵守国家法律