@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. selenium安装与更新

    1.通过pip show selenium 查看是否已经安装过selenium,如果已经安装selenium会显示安装的selenium的版本信息. 如果在使用pip 查看命令报Unknown or ...

  2. QtCreator集成的MSVC套件有问题

    MSVC编译出来的内部签名算法的程序,相同的代码,验签结果和MINGW编译出来的不一样.MINGW编译出来的结果是正确的 怀疑是因为QtCreator集成的msvc有问题,可能是编码问题,可能是其他问 ...

  3. Cesium中级教程6 - 3D Models 三维模型

    3D Models 三维模型 本教程将教您如何通过Primitive API转换.加载和使用Cesium中的三维模型.如果你是Cesium的新用户,可能需要阅读三维模型部分的(空间数据可视化教程)[h ...

  4. html文字两行后,就用省略号代替剩下的

    html文字两行后,就用省略号代替剩下的 一.总结 一句话总结: 实现原理很简单,将box的高度设置为行高的两倍,超出之后隐藏,这样就只有两行了,然后再用after属性绝对定位在第二行后面加几个点 . ...

  5. Csdn账号如何注销?

    Csdn账号如何注销?   请在ios端app设置内注销 ios端注销在设置页面的底部左下角,andriod在2019.07月底更新,即可支持   文章来源:刘俊涛的博客 欢迎关注,有问题一起学习欢迎 ...

  6. Highcharts 使用总结

    一.Highcharts  series属性 1.下面是一个基本曲线图的例子: <html> <head> <meta charset="UTF-8" ...

  7. Androidstudio 编译慢 这样的体验肯定很多人都有!!!

    本人也是经历过的   在老板站在你身后  说看下你做的东西怎么样啦   然后你开始编译你刚写代码     然后过了老长一段时间    你默默的拿起水来喝   缓解尴尬   boss一直站在后面   忍 ...

  8. SD卡状态监听(无序广播)

    import android.content.BroadcastReceiver; import android.content.Context; import android.content.Int ...

  9. Linux与linux之间传递文件、

    1.从linux本机文件上传到另一台linux格式:scp 要传的文件 root@目标ip:路径scp –r 要传的目录 root@目标ip:路径 例子: scp  /root/1.txt   roo ...

  10. rrt tree

    package com.bim.rrt_20190529; import static java.lang.Math.pow;import static java.lang.Math.sqrt; im ...