当前位置: 首页 > news >正文

【Python】趣味游戏编程练习记录


最近在阅读童晶写的《Python游戏趣味编程》,边学边记录吧,蛮有意思。

一、学习要点

1.安装游戏开发库pgzero

pip install pgzero  

 2.导入游戏开发库及基础绘图操作

import pgzrun #导入游戏开发库
def draw(): #定义绘图函数screen.fill('white')#屏幕填充白色背景screen.draw.filled_circle((300,250),50,'black')#屏幕绘制圆心坐标为(300,250),半径为50的圆,填充黑色screen.draw.circle((340, 250), 90, 'black')#屏幕绘制圆心坐标为(340,250),半径为90的圆,线条颜色为黑色
pgzrun.go()#运行程序

 默认屏幕横坐标为0~800,纵坐标为0~600,左上角坐标为(0,0)。

颜色填充同样可以用三原色,即(r,g,b),如:

screen.fill((0,0,0))#黑色背景

3.在函数内修改函数全局变量时,需用global声明。

a=2
b=1def new():global a,b#声明修改的是全局变量a和ba = 3b = 7

4.range()是范围的意思,它其中可以有1~3个参数。

for i in range(10):#从0到9遍历print(i,end=' ')
print()
for j in range(5,10):#从5到9遍历print(j,end=' ')
print()
for k in range(0,10,2):#从0到9,步长为2进行遍历print(k,end=' ')
print()
for l in range(10,-7,-3):#从9到-6,步长为-3进行遍历print(l,end=' ')

运行效果如下: 

0 1 2 3 4 5 6 7 8 9
5 6 7 8 9
0 2 4 6 8
10 7 4 1 -2 -5

二、练习展示

1. 练习2-3

利用绘制空心圆、填充圆的函数以及坐标的定义,尝试编写代码,绘制出简易人脸效果。

import pgzrun
def draw():screen.fill('white')#白色背景screen.draw.filled_circle((300,250),50,'black')#左眼珠screen.draw.filled_circle((500, 250), 50, 'black')#右眼珠screen.draw.circle((340, 250), 90, 'black')#左眼眶screen.draw.circle((540, 250), 90, 'black')#右眼眶screen.draw.circle((440, 350), 20, 'black')#小鼻子screen.draw.circle((440, 470), 70, 'black')#嘴巴screen.draw.circle((440, 350), 240, 'black')#脸
pgzrun.go()

 

2. 练习3-8

尝试利用for语句,画出一圈黑、一圈白,共10个圆圈的效果。

import pgzrun
color = 0 
def draw():global colorscreen.fill('white')for i in range(101,1,-10): #绘图重叠的部分,新图会覆盖旧图,所以越画越小才有环的效果if color==0: #color为0填充黑色圆screen.draw.filled_circle((400, 300), i, 'black')color = 1else: #color不为0填充白色圆screen.draw.filled_circle((400, 300), i, 'white')color = 0pgzrun.go()

3. 练习3-11

import pgzrun # 导入游戏库
import random # 导入随机库
WIDTH = 1200 # 设置窗口的宽度
HEIGHT = 800 # 设置窗口的高度
R = 100        # 大圆圈的半径def draw():    # 绘制模块,每帧重复执行screen.fill('white') # 白色背景for x in range(0, WIDTH+2*R, 2*R): # x坐标平铺遍历for y in range(0, HEIGHT+2*R, 2*R): # y坐标平铺遍历for r in range(1, R, 10): # 同心圆半径从小到大遍历# 绘制一个填充圆,坐标为(x,y),半径为R-r,颜色随机screen.draw.filled_circle((x, y), R-r, \(random.randint(0, 255), random.randint(0, 255),\random.randint(0, 255)))def on_mouse_down(): # 当按下鼠标键时draw() # 调用绘制函数pgzrun.go() # 开始执行游戏

 4. 练习3-12

import pgzrun # 导入游戏库
import random # 导入随机库
WIDTH = 1200 # 设置窗口的宽度
HEIGHT = 800 # 设置窗口的高度
R = 50        # 大圆圈的半径def draw():    # 绘制模块,每帧重复执行screen.fill('white') # 白色背景for x in range(0, WIDTH+2*R, R): # x坐标平铺遍历for y in range(0, HEIGHT+2*R, R): # y坐标平铺遍历# 绘制一个圆,坐标为(x,y),半径为R,颜色随机screen.draw.circle((x, y), R, \(random.randint(0, 255), random.randint(0, 255), \random.randint(0, 255)))def on_mouse_down(): # 当按下鼠标键时draw() # 调用绘制函数pgzrun.go() # 开始执行游戏

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 7.31日学习打卡---Spring Cloud Alibaba(一)
  • 明明谷歌账号输入正确,登录的时候谷歌却提示:找不到您的Google账号?原因和建议
  • Java--异常
  • 视频剪辑的重磅AI神器:FunClip
  • C语言:扫雷游戏实现
  • 探索Django
  • C语言中数组的各种排序
  • 数据结构与算法 - 链表
  • 项目实战_表白墙(简易版)
  • mysql忘记root密码 解决办法
  • 如何通过前端表格控件实现自动化报表?
  • 教育教学质量评测系统开发之软件技术分析
  • ConversationChain记忆功能案例演示
  • win10桌面任务栏美化(不用软件)(任务栏应用居中,透明任务栏)
  • 科普文:分布式数据一致性协议Paxos
  • JavaScript-如何实现克隆(clone)函数
  • ECS应用管理最佳实践
  • Java 23种设计模式 之单例模式 7种实现方式
  • Java基本数据类型之Number
  • Joomla 2.x, 3.x useful code cheatsheet
  • mysql常用命令汇总
  • Python利用正则抓取网页内容保存到本地
  • supervisor 永不挂掉的进程 安装以及使用
  • swift基础之_对象 实例方法 对象方法。
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • windows下使用nginx调试简介
  • 码农张的Bug人生 - 初来乍到
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 使用docker-compose进行多节点部署
  • 回归生活:清理微信公众号
  • 扩展资源服务器解决oauth2 性能瓶颈
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​十个常见的 Python 脚本 (详细介绍 + 代码举例)
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #13 yum、编译安装与sed命令的使用
  • #Linux(帮助手册)
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (7)摄像机和云台
  • (WSI分类)WSI分类文献小综述 2024
  • (安卓)跳转应用市场APP详情页的方式
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (四) 虚拟摄像头vivi体验
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (转) ns2/nam与nam实现相关的文件
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • (自用)gtest单元测试
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • 、写入Shellcode到注册表上线
  • .dwp和.webpart的区别
  • .NET : 在VS2008中计算代码度量值
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福