Pygame小游戏练习一

@Python编程从入门到实践 Python项目练习

一、安装Python包Pygame

通过pip安装包工具安装

python3 -m pip --version #查看是否安装pip

确定安装pip后,直接安装Pygame

pip3 install pygame

macos 10.14 mojave用户由于系统与pygame包的兼容问题,后面import该包后会有使用上的问题,降级mac系统可以解决但是比较麻烦。建议直接下载Pycharm IDE,搭配Anaconda配置虚拟环境,亦可解决。

二、创建Pygame窗口

建立alien_invasion.py,用于初始游戏窗口,开始主循环。

# alien_invasion.py
import sys
import pygame

from pygame.sprite import Group
from settings import Settings
from ship import Ship
from passenger import Passenger
from game_stats import GameStats
import game_functions as gf


def run_game():
    # 初始化pygame、设置和屏幕对象
    pygame.init()
    ai_settings = Settings()
    screen = pygame.display.set_mode((ai_settings.screen_width,
                                      ai_settings.screen_height))
    pygame.display.set_caption("Alien Invasion")

    # 创建一艘飞船
    ship = Ship(ai_settings, screen)

    # 创建一个用于存储子弹的编组
    bullet_group = Group()

    # 创建一个乘客群
    passenger_group = Group()
    gf.create_fleet(ai_settings, screen, ship, passenger_group)

    # 创建一个用于存储游戏统计信息的实例
    stats = GameStats(ai_settings)

    # 开始游戏主循环
    while True:

        # 监视键盘和鼠标事件
        gf.check_events(ai_settings, screen, ship, bullet_group)
        if stats.game_active:
            ship.update()
            gf.update_bullet_group(ai_settings, screen, ship, passenger_group, bullet_group)
            gf.update_passenger_group(ai_settings, stats, screen, ship, passenger_group, bullet_group)

        # 每次循环重绘窗口并更新屏幕
        gf.update_screen(ai_settings, screen, ship, passenger_group, bullet_group)


run_game()

三、创建setting类

建立settings.py,用于将所有设置存储在同一地方,这样,我们可以通过传递一个设置对象完成众多的设置。

# settings.py
class Settings(object):
    """设置所有设置的类"""
    def __init__(self):
        """初始化游戏的设置"""
        # 屏幕设置
        self.screen_width = 600
        self.screen_height = 400
        self.bg_color = (255, 255, 255)

        # 飞船设置
        self.ship_speed_factor = 1.5
        self.ship_limit = 3

        # 子弹设置
        self.bullet_speed_factor = 3
        self.bullet_width = 3
        self.bullet_height = 15
        self.bullet_color = 60, 60, 60
        self.bullet_group_allowed = 3

        # 乘客设置
        self.passenger_speed_factor = 1
        self.fleet_drop_speed = 7
        # fleet_direction为1表示向右移动,为-1表示向左移动
        self.fleet_direction = 1
posted @ 2019-08-15 17:33  gg12138  阅读(382)  评论(0编辑  收藏  举报