@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. scrapy框架之Selectors选择器

    Selectors(选择器) 当您抓取网页时,您需要执行的最常见任务是从HTML源中提取数据.有几个库可以实现这一点: BeautifulSoup是Python程序员中非常流行的网络抓取库,它基于HT ...

  2. 二十七、Linux内核管理

    内核组成: uname命令 内核:uname,mkinitrd,dracut 模块: lsmod,modinfo,depmod,modprobe,insmod,rmmod /proc,sysctl,/ ...

  3. linux安装过程中遇到的一些问题总结

    后面持续更新 1.安装之后查看显示一直连不上网 vim /etc/sysconfig/network-scripts/ifcfg-eth0 然后应该就可以上网了 2.linux窗口无法适应虚拟机窗口 ...

  4. 表单事件集锦-input

    最近在写一个手机端提交表单的项目,里面用了不少input标签,因为项目不太忙,所以,想做的完美点,但是遇到了一些问题,比如:页面中的必填项如果有至少一项为空,提交按钮就是不能提交的状态,所以需要对所有 ...

  5. powderdesinger显示中英文表名

     菜单->Tool->Model Options->Name Convention->右侧display中选择显示name还是code.不支持同时显示,但可以选择显示code, ...

  6. QT 自定义消息

    #define TEST_EVENT QEvent::User + 100   class CVxActuatorMain : public QMainWindow {   protected:    ...

  7. kafka简单学习----遇到的问题

    kafka启动消费者时总是显示disconnected.这是因为 producer client采用2.10.1.0版本,而kafka集群是2.10.0.0版本,不能兼容 解决方法如下:

  8. Linux命令之iptables

    从CentOS7开始,系统自带的防火墙更改为firewalld,但同样支持iptables,不过只有iptables命令,如果想要使用iptables服务需要自行安装iptables-server. ...

  9. 使用jquery 动态创建form 并提交

    $(document).ready(function(){    $("a.delete").click(function(event){        action = this ...

  10. 1-18-1 LVM管理和ssm存储管理器使用&磁盘配额(一)

    LVM管理和ssm存储管理器使用&磁盘配额(一) LVM逻辑卷的管理 问题:对于生产环境下的服务器来说,如果存储数据的分区磁盘空间不够了怎么办? 因为如果要把一个分区的内容都拷贝到另一个分区上 ...