多媒体程序开发
朋友们大家好,相信大部分人都喜欢玩游戏,无论是在工作间隙还是下班回家的路上,可能都会拿起手机玩游戏打发时间,亦或是在游戏中寻找乐趣,放松自己。上一系列的推文已经结束,主要是跟大家分享了些Python的基础知识,大家可以在公众号主界面查看。从今天起,让我们开启进阶模式,一起来学习用Python制作简单的小游戏。
我跟大家分享的内容主要是用Python的Pygame Zero模块来制作小游戏,同时推荐编程环境:Thonny(开源跨平台)。Thonny是一个跨平台的开源开发环境,自带Python解释器,体积小巧、功能齐备。扫描如下二维码,会有老师手把手教你如何安装Thonny和运用Thonny。
Thonny安装好后,进行Pygame Zero模块的安装。首先打开Thonny,点击菜单“工具”->“管理模块”,输入“pgzero” 点击搜索,最后点击“install” ,安装成功!
我们制作一个小精灵,要求点击小精灵后,会发出声音并且精灵会摔倒。第一步创建游戏角色:
• 在源代码文件目录下新建两个目录:一个是images(名字可自定义),用来存放图片文件;另一个是sounds,用来存放声音文件。
• 用Actor类创建一个精灵对象:指定图片、位置
• 在draw中画出精灵:精灵图片将出现在指定的位置alien.pos
第二步更新update:改变精灵的位置,每秒会改变60次!
import pgzrun
import time
#创建一个精灵
alien = Actor('alien')
alien.pos = 100,56
#绘制窗口大小
WIDTH = 500
HEIGHT = alien.height + 100
#每次需要刷新窗口的时候,会自动调用draw函数
def draw():
screen.clear()
screen.fill((128, 0, 0))
alien.draw()
每一帧都会调用update函数
def update():
alien.left += 2
if alien.left > WIDTH:
alien.left = 0
第三步与精灵的交互:pos是鼠标的位置,当点击到精灵,精灵就会摔倒,并发出“呃”的声音,1s后恢复初始状态;如果没有点击到精灵,就会打印出“快闪”二字;如果无点击行为,精灵就将一直循环移动。
def on_mouse_down(pos):
if alien.collidepoint(pos):
set_alien_hurt()
else:
print("快闪")
def set_alien_hurt():
sounds.eep.play()
alien.image = 'alien_hurt'
print("呃")
clock.schedule_unique(set_alien_normal, 1.0)
def set_alien_normal():
alien.image = 'alien'
pgzrun.go()
到这里就大功告成了!以上是一个小例子,让大家初识Python的Pygame Zero模块,大家在空余时间可以用Python来做做小游戏,一方面可以巩固相关知识,另一方面可以开拓视野释放压力。
上期参考答案
程序:
from turtle import *
from random import *
from math import *
def tree(n, l):
pd()
pencolor('brown')
pensize(n / 3)
forward(l)
if n > 0:
b = random() * 15 + 10
c = random() * 15 + 10
d = l * (random() * 0.25 + 0.7)
right(b)
tree(n - 1, d)
left(b + c)
tree(n - 1, d)
right(c)
else:
right(90)
pencolor('green')
circle(3)
left(90)
pu()
backward(l)
ht()
speed(0)
tracer(0)
pu()
backward(100)
left(90)
pu()
backward(300)
tree(12, 100)
done()
结果:
- ASP.NET AJAX(7)_Microsoft AJAX Library扩展客户端组件继承时需要注意的问题扩展类型如何修改已有类型
- ASP.NET AJAX(6)__Microsoft AJAX Library中的面向对象类型系统命名空间类类——构造函数类——定义方法类——定义属性类——注册类类——抽象类类——继承类——调用父类方
- 设计模式专题(四)——代理模式
- Array数组函数(一)
- ASP.NET AJAX(5)__JavaScript原生类型以及Microsoft AJAX Library什么是Microsoft AJAX LibraryObject原生类型Object.pro
- 使用 Octave 来学习 Machine Learning(一)
- ASP.NET AJAX(4)__客户端访问WebService服务器端释放WebService方法客户端访问WebService客户端访问PageMethod错误处理复杂数据类型使用基础客户端代理的
- 讲真,你该做备份的有效性校验了
- memcache安装方法
- 设计模式专题(五)——工厂方法模式
- ASP.NET AJAX(11)__ScriptManagerUpdatePanel的支持成员功能控制成员脚本控件支持成员ScriptMode和ScriptPathLoadScriptsBeforeU
- SQL Server 2016新特性:动态数据屏蔽(DDM)
- ASP.NET AJAX(12)__浏览器兼容功能判断浏览器的类型和版本Sys.Browser针对DOM元素的兼容操作针对DOM事件的兼容操作
- 设计模式专题(六)——原型模式
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Hibernate第二天:Hibernate的一级缓存、其他的API
- pytest 测试框架学习(12):pytest.deprecated_call
- Pinstaller(Python打包为exe文件
- pytest 测试框架学习(14):pytest.warns
- ImportError: /lib64/libm.so.6: version `CXXAB_1.3.8.' not found (required by /usr/local/python37/lib
- pytest 测试框架学习(15):pytest.freeze_includes
- Linux: scp文件,目录上传下载标准版
- Hibernate第三天:Hibernate的一对多配置、Hibernate的多对多的配置
- Git: 掉坑记 -- git reset 杀手
- ModuleNotFoundError: No module named 'phkit.pinyin'
- Hibernate第四天:Hibernate的查询方式、抓取策略
- 爬虫抓取博客园前10页标题带有Python关键字(不区分大小写)的文章
- Python爬虫抓取唐诗宋词
- ImportError: /lib64/libm.so.6: version `GLIBC_2.23' not found (required by /usr/local/python37/lib/p
- 数据分析与数据挖掘 - 02基础操练