@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

Pygame小游戏练习一的更多相关文章

  1. pygame小游戏之坦克大战

    以前在学校的时候无聊的学了会pygame.看了大概一周的教学视频,做出来个坦克大战的小游戏 Python3.5  pycharm import pygame,sys,time from random ...

  2. Pygame小游戏练习二

    @Python编程从入门到实践 Python项目练习 四.创建Ship类 建立ship.py,创建Ship类,管理飞船行为. # ship.py import pygame class Ship(): ...

  3. Pygame小游戏练习五

    @Python编程从入门到实践 Python项目练习 十一.显示游戏得分及最高分 创建新类Scoreboard,用以显示得分和最高分. # scoreboard.py import pygame.fo ...

  4. Pygame小游戏练习四

    @Python编程从入门到实践 Python项目练习 九.添加Play按钮 一.创建Button类 先让游戏一开始为非活动状态 # game_stats.py # --snip-- self.game ...

  5. Pygame小游戏练习三

    @Python编程从入门到实践 Python项目练习 七.创建Passenger类 创建passenger.py文件,创建Passenger类,控制乘客属性和行为 # passenger.py imp ...

  6. Pygame:编写一个小游戏 标签: pythonpygame游戏 2017-06-20 15:06 103人阅读 评论(0)

    大学最后的考试终于结束了,迎来了暑假和大四的漫长的"自由"假期.当然要自己好好"玩玩"了. 我最近在学习Python,本意是在机器学习深度学习上使用Python ...

  7. 用python+pygame写贪吃蛇小游戏

    因为python语法简单好上手,前两天在想能不能用python写个小游戏出来,就上网搜了一下发现了pygame这个写2D游戏的库.了解了两天再参考了一些资料就开始写贪吃蛇这个小游戏. 毕竟最开始的练手 ...

  8. <pygame> 打飞机(小游戏)

    0.游戏的基本实现 ''' 游戏的基本实现 游戏的初始化:设置游戏窗口,绘制图像的初始位置,设定游戏时钟 游戏循环:设置刷新频率,检测用户交互,更新所有图像位置,更新屏幕显示 ''' 1.安装pyga ...

  9. python小游戏-pygame模块

    一.tkinter模块的GUI 基本上使用tkinter来开发GUI应用需要以下5个步骤: 导入tkinter模块中我们需要的东西. 创建一个顶层窗口对象并用它来承载整个GUI应用. 在顶层窗口对象上 ...

随机推荐

  1. win10 下载安装tasm

    下载tasm http://www.technorange.com/wp-content/uploads/Tasm%201.4%20Windows%207-Windows%208%2064%20bit ...

  2. jmeter如何使用正则表达式,如何提取token等想要的数据

    使用正则表达式,提取你想要的任何数据, 例如要提取响应结果里的token字段及sex字段(响应内容为: "token":"83EEAA887F1D2F1AA1CDA9E1 ...

  3. XXE外部实体注入漏洞——PHP

    前言 XXE Injection即XML External Entity Injection,也就是XML外部实体注入攻击.漏洞是在对非安全的外部实体数据进行处理时引发的安全问题. 在XML1.0标准 ...

  4. [BJOI2019]奥术神杖——AC自动机+DP+分数规划+二分答案

    题目链接: [BJOI2019]奥术神杖 答案是$ans=\sqrt[c]{\prod_{i=1}^{c}v_{i}}=(\prod_{i=1}^{c}v_{i})^{\frac{1}{c}}$. 这 ...

  5. 重读APUE(12)-SIGCHLD与僵尸进程

    SIGCHLD信号是当子进程终止时向父进程发送的信号:它的语义如下: 如果进程明确的将该信号设置为SIG_IGN,则调用进程不会产生僵尸进程:这种情况下,wait是等不到给子进程收尸的,所以wait阻 ...

  6. Swift 基本语法

    如果创建的是 OS X playground 需要引入 Cocoa : import Cocoa /* 我的第一个 Swift 程序 */ var myString = "Hello, Wo ...

  7. JMX简介及was上的使用

    参考文章:https://www.ibm.com/developerworks/cn/websphere/library/techarticles/0908_sunyan_jmxdeploy/inde ...

  8. .IllegalArgumentException: Mapped Statements collection does not contain 异常一例【我】

    更新代码后发现几乎所有的sql查询都报错,类似下面: java.lang.RuntimeException: org.mybatis.spring.MyBatisSystemException: ne ...

  9. React开发环境配置

    本文以上一篇文章继续配置:npm安装及环境配置<https://www.cnblogs.com/hzb462606/p/11565275.html> 使用 create-react-app ...

  10. c++ new bad_alloc

    try { for (int i = 0; i<1000; i++) { test1 = new Test(); cout << i << " new dog ...