【学习笔记】《Python从入门到实践》游戏-Alien Invasion
主模块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的更多相关文章
- python学习笔记 ——python写的猜数字游戏 002
from sys import exit import random def Arrfor(str): #CONTST = CONTST + 1 artificial = input("请输 ...
- Python 从入门到实践 试一试 参考代码
这两天学习Python 看了python从入门到实践的书籍,里面有课后题“试一试” 然后就跟着写了,代码在以下地址,如果需要自取 https://files.cnblogs.com/files/fud ...
- Python数据分析入门与实践 ✌✌
Python数据分析入门与实践 (一个人学习或许会很枯燥,但是寻找更多志同道合的朋友一起,学习将会变得更加有意义✌✌) 这是一个数据驱动的时代,想要从事机器学习.人工智能.数据挖掘等前沿技术,都离不开 ...
- tensorflow学习笔记二:入门基础 好教程 可用
http://www.cnblogs.com/denny402/p/5852083.html tensorflow学习笔记二:入门基础 TensorFlow用张量这种数据结构来表示所有的数据.用一 ...
- Python数据分析入门与实践
Python数据分析入门与实践 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题,大家看的时候可以关 ...
- Hadoop学习笔记(1) ——菜鸟入门
Hadoop学习笔记(1) ——菜鸟入门 Hadoop是什么?先问一下百度吧: [百度百科]一个分布式系统基础架构,由Apache基金会所开发.用户可以在不了解分布式底层细节的情况下,开发分布式程序. ...
- iOS学习笔记-地图MapKit入门
代码地址如下:http://www.demodashi.com/demo/11682.html 这篇文章还是翻译自raywenderlich,用Objective-C改写了代码.没有逐字翻译,如有错漏 ...
- JavaScript:学习笔记(5)——箭头函数=>以及实践
JavaScript:学习笔记(5)——箭头函数=>以及实践 ES6标准新增了一种新的函数:Arrow Function(箭头函数).本文参考的链接如下: MDN箭头函数:https://dev ...
- 《深度学习框架PyTorch:入门与实践》的Loss函数构建代码运行问题
在学习陈云的教程<深度学习框架PyTorch:入门与实践>的损失函数构建时代码如下: 可我运行如下代码: output = net(input) target = Variable(t.a ...
- MongoDB学习笔记:Python 操作MongoDB
MongoDB学习笔记:Python 操作MongoDB Pymongo 安装 安装pymongopip install pymongoPyMongo是驱动程序,使python程序能够使用Mong ...
随机推荐
- linux下怎样批量更改文件后缀名
今天又有同学问linux下怎样批量更改文件后缀名,这个问题被别人问到三次了,所以这里给出几个解决方法 一.rename解决 1. Ubuntu系统下 rename 's//.c//.h/' ./* ...
- Windows系统配置.bat启动spring boot项目jar
背景:项目用spring boot构建,maven管理,本地测试好之后打成jar包,在dos窗口可以通过:java -jar demo.jar来启动demo项目,一旦关闭该dos窗口demo项目也被停 ...
- Ubuntu下安装antlr-4.7.1
简介:antlr工具将语法文件转换成可以识别该语法文件所描述的语言的程序. 例如:给定一个识别json的语法,antlr工具将会根据该语法生成一个程序,该程序可以通过antlr运行库来识别输入的jso ...
- git rebase 的使用
rebase 在 Git 中整合来自不同分支的修改主要有两种方法:merge 以及 rebase. 在本节中我们将学习什么是“rebase”,怎样使用“rebase”,并将展示该操作的惊艳之处,以及指 ...
- Redis介绍和安装
一. Redis的介绍 Redis 是一个Key-Value存储的系统:它支持存储的value类型有string(字符串),list(列表),set(集合),zset(有序集合):为了保证效率:数据都 ...
- zeppelin 一直报这个警告 也是醉了
用./zeppelin-daemon.sh start 启动zeppelin 一直报这个警告.. WARN [2017-03-23 19:11:34,461] ({qtp483422889-45} N ...
- HashTab---Windows资源管理器的文件属性窗口中添加了一个叫做”文件校验”的标签
HashTab 是一个优秀的 Windows 外壳扩展程序,它在 Windows 资源管理器的文件属性窗口中添加了一个叫做”文件校验”的标签.该标签可以帮助你方便地计算文件的 MD5.SHA1 与 C ...
- Go语言基础之数据类型
Go语言基础之数据类型 Go语言中有丰富的数据类型,除了基本的整型.浮点型.布尔型.字符串外,还有数组.切片.结构体.函数.map.通道(channel)等.Go 语言的基本类型和其他语言大同小异. ...
- K XOR Clique
BaoBao has a sequence a1,a2,...,an. He would like to find a subset S of {1,2,...,n} such that ∀i ...
- Nestjs 身份验证
文档 yarn add @nestjs/passport passport passport-http-bearer @nestjs/jwt passport-jwt auth.service.ts ...