海龟编辑器学习记录
(2020-04-29 16:30:55)分类: 研究-学习 |
https://www.aimaker.net.cn/live/l_5e9e6473dbe07_3ZarJcEp
平台选择编程猫的海龟编辑器,主要考虑它的库管理功能非常方便,直接点击按钮就能实现文件库的安装。此外他还支持在本地和云端保存文件。
python社的在线直播中,河海大学的童晶老师介绍了通过趣味游戏开发的方法来学习python编程,开发学生特别是低年级学生的计算思维能力。他的理念是在玩中学,只将必要的语法知识穿插在案例中介绍,不给儿童增加较大的负担。他编写的教材《python游戏趣味编程》预计在五月份出版。
在视频讲座中他重点介绍了两个案例,分别是“弹跳的小球”和“美丽的圆圈画”。
在弹跳的小球中,他大概分为了十个步骤,下面逐一记录一下。
1,首先是安装游戏开发库。分别是pygame和pygame zero。安装完成后,输入代码
import pgzrun
pgzrun.go()
此时会弹出一个空白的黑色的窗口(pygame zero game)
2,显示一个空心圆,
import pgzrun
def draw():
pgzrun.go()
3,设置小球颜色。如果要将小球设置有填充颜色,可以用filled_circle代替circle
import pgzrun
def draw():
pgzrun.go()
【提供一些颜色,如white,blue,yellow,red,orange,purple】
如果要更改背景的颜色,可以添加一句 screen.fill("white")
import pgzrun
def draw():
pgzrun.go()
4,显示多个小球。(需要涉及到坐标的概念,在python坐标中,(0,0)位于左上角,向右为X正值,向下为Y正值)
import pgzrun
def draw():
pgzrun.go()
学习了以上知识之后,就可以绘制一个笑脸的图标了。【小练习阶段】
import pgzrun
def draw():
pgzrun.go()
5,使用变量
(如果要调整上面小球的大小、位置等,相同的操作可能要进行3遍,有没有更加简便的方法?)变量就是一个会变化的量
如半径r,Y坐标y
import pgzrun
r=50
def draw():
pgzrun.go()
6,逐渐变大的小球 【需要用到一个新的函数,update()】
import pgzrun
r=1
def draw():
def update():
global r
r=r+1
pgzrun.go() #此命令在最后
7,小球逐渐下落【改变Y坐标】
import pgzrun
y=0
def draw():
def update():
pgzrun.go()
小球落下去就没有了,怎么样让小球落下后再回到顶端接着下落呢?【if语句】
def update():
8,if语句与比较运算符(表达式等)
x=3
y=5
if x>y:
#x是否大于y
if x==y: #x是否等于y
if x #x是否小于y
x!=y #x是否不等于y
x>=y #x是否大于或等于y
x<=y #x是否小于或等于y
练习题:
编程计算11*13*15*17,并用if语句判断结果是否大于30000
9,改变小球下落的速度 (定义变量speed_y)
#下落的小球
import pgzrun
y=0
speed_y = 3
#变量命名的规范,提高程序可读性
def draw():
def update():
pgzrun.go()
实现小球触底反弹:
import pgzrun
y=0
speed_y = 30
def draw():
def update():
pgzrun.go()
实现来回弹:
def update():
此处可以用上表达式,合并条件:
此处补充逻辑运算符的概念:
print(3>2)
print(4>5)
print(not(3>2))
print(not(4>5))
print((3>2)or(4>5))
print((3>2)and(4>5))
引入更多变量:(代码更加规范)
import pgzrun
HEIGHT=600
WIDTH=800
y=100
speed_y=3
r=30
def draw():
def update():
pgzrun.go()
10,增加x方向速度
import pgzrun #导入游戏库
HEIGHT=600
#设置窗口的高度
WIDTH=800 #设置窗口的宽度
x=WIDTH/2 #小球的x坐标,初始化在窗口中间
y=HEIGHT/2 #小球的y坐标,初始化在窗口中间
speed_x = 3 #小球x方向的速度
speed_y = 3 #小球y方向的速度
r=30 #小球的半径
def draw(): #绘制模块,每帧重复执行
def update():
#更新模块,每帧重复操作
pgzrun.go() #开始执行游戏
增加注释
增加代码可读性
练习,实现线条穿插绘制的效果??
如何实现呢,目前还没有明确的办法。
思路:滚动的球变成了线条,就是将球的半径变小,同时一直显示其移动轨迹,所以update函数不能再使用了。
要出现很过个球,是用随机数的方式?
但是用这种方式不能显示画图的过程,只是显示最终的结果。加入time.sleep(1)则执行速度很慢。
==========
有问题的代码:
import pgzrun
import time
HEIGHT = 600
WIDTH = 800
x = WIDTH/2
y = HEIGHT/2
speed_x = 3
speed_y = 3
r = 3
def draw():
#
screen.fill("white")
#
screen.draw.filled_circle((x, y), r, "red")
#def update():
# global x, y, speed_x,
speed_y
# x = x+speed_x
# y = y+speed_y
# if y >= HEIGHT-r or
y <= r:
#
speed_y = -speed_y
# if x >= WIDTH-r or x
<= r:
#
speed_x = -speed_x
pgzrun.go()
========
待续!
前一篇:“停课不停学”各地实践方式案例
后一篇:教科版教材第二章学习记录