主模块alien_invasion.py

 #导入两个库
2 from settings import Settings
from ship import Ship import game_function as gf
import pygame def run_game():   #初始化游戏并创建一个屏幕对象   pygame.init()#没搞清楚初始化有什么用?
  ai_settings = Settings()#通过ai_settings引用Settings类
  screen = pygame.display.set_mode(
                      (ai_settings.screen_width,ai_settings.screen_height))#创建一个的窗口,大小由Settings类                                                     里的screen_width和screen_height决定
  
  pygame.display.set_caption("Alien Invasion")#给窗口标题命名——Alien Invasion   #为何创建窗口需要保存在变量里,而给窗口命名只需要一个方法?   #创建一艘飞船
  ship = Ship()#创建Ship类的实例ship   #开始游戏的主循环   while True:          #监视键盘和鼠标事件     gf.check_events()
      #更新屏幕
    gf.update_screen(ai_settings,screen,ship)#gf.update_screen函数有3个参数,分别是ai_settings(Settings类的实例),screen                              (屏幕对象)和ship(Ship类的实例)
37         
run_game()

模块一 游戏设置settings.py

 class Settings():

 """存储《外星人入侵》的所有设置的类"""

 def __init__(self):

   """初始化游戏的设置"""

   #屏幕设置

   self.screen_width = 1200

   self.screen_height = 800

   self.bg_color = (230,230,230)

模块二 添加飞船图像ship.py

 import pygame

 class Ship():

     def __init__(self,screen):
"""初始化飞船并设置其初始设置"""
self.screen = screen #加载飞船图像并获取其外接矩形
self.image = pygame.image.load('images/ship.bmp')
self.rect = self.image.get_rect()
self.screen_rect = screen.get_rect() #将每艘新飞船放在屏幕底部中央
self.rect.centerx = self.screen_rect.centerx
self.rect.bottom = self.screen_rect.bottom def blitme(self):
"""在指定位置绘制飞船"""
self.screen.blit(self.image,self.rect)

模块三 游戏运行模块game_function.py

 import sys

 import pygame

 def check_events():
"""响应按键和鼠标事件"""
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit() def update_screen(ai_settings,screen,ship):
"""更新屏幕上的图像,并切换到新屏幕"""
#让每次循环时都重绘屏幕
screen.fill(ai_settings.bgcolor)#给窗口添加背景色(参数为背景色),screen.fill = pygame.display.set_mode().fill,
                      ai_settings.bgcolor等于Settings类下的bgcolor对象值
   ship.blitme()#在指定位置绘制飞船(等价于Ship类下的blitme函数,实质是ship.pygame.display.set_mode().blitme)
 
#让最近绘制的屏幕可见
pygame.display.flip()

【学习笔记】《Python从入门到实践》游戏-Alien Invasion的更多相关文章

  1. python学习笔记 ——python写的猜数字游戏 002

    from sys import exit import random def Arrfor(str): #CONTST = CONTST + 1 artificial = input("请输 ...

  2. Python 从入门到实践 试一试 参考代码

    这两天学习Python 看了python从入门到实践的书籍,里面有课后题“试一试” 然后就跟着写了,代码在以下地址,如果需要自取 https://files.cnblogs.com/files/fud ...

  3. Python数据分析入门与实践 ✌✌

    Python数据分析入门与实践 (一个人学习或许会很枯燥,但是寻找更多志同道合的朋友一起,学习将会变得更加有意义✌✌) 这是一个数据驱动的时代,想要从事机器学习.人工智能.数据挖掘等前沿技术,都离不开 ...

  4. tensorflow学习笔记二:入门基础 好教程 可用

    http://www.cnblogs.com/denny402/p/5852083.html tensorflow学习笔记二:入门基础   TensorFlow用张量这种数据结构来表示所有的数据.用一 ...

  5. Python数据分析入门与实践

    Python数据分析入门与实践 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题,大家看的时候可以关 ...

  6. Hadoop学习笔记(1) ——菜鸟入门

    Hadoop学习笔记(1) ——菜鸟入门 Hadoop是什么?先问一下百度吧: [百度百科]一个分布式系统基础架构,由Apache基金会所开发.用户可以在不了解分布式底层细节的情况下,开发分布式程序. ...

  7. iOS学习笔记-地图MapKit入门

    代码地址如下:http://www.demodashi.com/demo/11682.html 这篇文章还是翻译自raywenderlich,用Objective-C改写了代码.没有逐字翻译,如有错漏 ...

  8. JavaScript:学习笔记(5)——箭头函数=>以及实践

    JavaScript:学习笔记(5)——箭头函数=>以及实践 ES6标准新增了一种新的函数:Arrow Function(箭头函数).本文参考的链接如下: MDN箭头函数:https://dev ...

  9. 《深度学习框架PyTorch:入门与实践》的Loss函数构建代码运行问题

    在学习陈云的教程<深度学习框架PyTorch:入门与实践>的损失函数构建时代码如下: 可我运行如下代码: output = net(input) target = Variable(t.a ...

  10. MongoDB学习笔记:Python 操作MongoDB

    MongoDB学习笔记:Python 操作MongoDB   Pymongo 安装 安装pymongopip install pymongoPyMongo是驱动程序,使python程序能够使用Mong ...

随机推荐

  1. 写在开始前---web异常处理

    分层项目中,有上层调用下层,每一层都可能出错,比如数据库连接,文件读写等异常.除了运行时程序的异常,还有业务逻辑的一些问题.发生异常需要做一定处理,既要让开发人员便于排查问题,又要让用户看到友好又便于 ...

  2. 百度Aip人脸识别之python代码

    用python来做人脸识别代码量少 思路清晰, 在使用之前我们需要在我们的配置的编译器中通过pip install baidu-aip  即可 from aip import AipFace 就可以开 ...

  3. poj 1556

    哦天哪这个萨比提又浪费了我好几个小时. 我们在check的时候只考虑严格相交就行了,想了很久才注意到这一点. 然后就建图跑最短路,over. #include <cstdio> #incl ...

  4. linux 之挂载和解压

    第3天 磁盘管理 存储设备:硬盘.U盘.移动硬盘.光盘.软盘. 攒电脑.(组装一台电脑) 无法被修改. 矿长.欧阳大神. 分区.->格式化ntfs df -h  #查看磁盘分区情况,可用的. 查 ...

  5. V8 javascript 引擎

    V8是一个由丹麦Google开发的开源java script引擎,用于Google Chrome中.[2]Lars Bak是这个项目的组长.[3]   V8在执行之前将java script编译成了机 ...

  6. sublime3 快速运行 java

    build 系统 Java.sublime-build { "cmd": ["javac $file_name && java $file_base_na ...

  7. 【谈谈IO】BIO、NIO和AIO

    BIO: BIO是阻塞IO,体现在一个线程调用IO的时候,会挂起等待,然后Thread会进入blocked状态:这样线程资源就会被闲置,造成资源浪费,通常一个系统线程数是有限的,而且,Thread进入 ...

  8. SpringBoot--web版的ocr

    这个项目主要是为了熟悉SpringBoot搭建web项目,及打war包,部署到tomcat中 先贴页面吧 页面很low 毕竟我只是菜鸟,该app程序功能已经写完了,上传图片到服务器,后台接口解析图片中 ...

  9. [dpdk][sysfs][pci] 在dpdk程序中操纵PCI设备

    〇  需求 在DPDK程序运行时,希望能够实时的操纵PCI 网卡设备的驱动绑定与解绑. 本文的目的是为了调查满足以上需求的,kernel提供的,标准的API都有几种,分别是什么.以确定实施方案. 一  ...

  10. JDBC事务(二)转账示例

    示例采用三层框架 web层: package cn.sasa.web; import java.io.IOException; import javax.servlet.ServletExceptio ...