新西兰天维网社区

 找回密码
登录  注册
搜索
热搜: 移民 留学
查看: 645|回复: 0
打印 上一主题 下一主题

[其他] 儿童启蒙游戏编程教程PyGame - 第4课:让笑脸动起来 [复制链接]

Rank: 10Rank: 10Rank: 10

升级  50.13%

UID
231216
热情
2517
人气
2881
主题
24
帖子
72
精华
0
积分
2752
阅读权限
30
注册时间
2010-5-25
跳转到指定楼层
楼主
发表于 2023-9-15 22:16:20 |只看该作者 |倒序浏览 微信分享
-------------------------------------   转贴自: http://kidscando.co.nz --------------------------------------

上一节课,我们每次改动位置,再次运行的时候都会看到笑脸出现在新的位置,但有没有办法让笑脸能自动改变位置并显示呢,就像动画一样,没有任何的停顿,连续动起来呢?答案是有的。

这节课我们就让它动起来,我们也会学到一个新的东西,叫变量和变量赋值。

left=0


def runIt(screen, smile):     
    global left      
    left=left+1        
    screen.blit(smile, (left,50))   

用以上新的代码替换 gameController.py 并运行,你能看到笑脸图片从左到右一路移动直到消失在右面的边框。网页效果点击查看

以上代码中 left 就是变量,变量的意思就是它是一直在变的,不是一个常量(常量是恒定不变的量), 为什么需要变量呢,因为图片的位置每次都在改变,新的位置会被重新放到 left 中 ( left = left +1 )。

在使用变量时,我们首先要初始化变量,left = 0 ,这就是基本的变量赋值: 变量名 = 值


把left 变量放在 def runIt的外面,这样 left 就相当于一个全局变量,所有的子程序(如, runIt), 都可以使用它的值,只要在子程序中声明这个变量来自于全局变量,声明方式就是 global 全局变量名, 然后在子程序中就可以读取这个全局变量或对这个全局变量重新赋值。

有了初始值,并声明了它来自于全局变量,我们就继续使用变量赋值 left = left +1,这个的意思就是每次把当前的left的变量值+1后再赋值给left变量。

  • left = 0 时, left=left+1,最后left=1
  • left = 1 时, left=left+1, 最后left=2

这样的话,每次运行 runIt(PyGame会定期运行runIt),程序就会使left变量增加1,left是笑脸距离画板左边框的偏移,所以最后的效果随着left值不断增大,笑脸也不断地往右移动。

相对于全局变量,如果把 left = 0 放在 runIt里面,那么 left 就变成了局部变量,只能在 runIt 里面使用,其它子程序不能访问它。
小心,不要把 left=0 放在 runIt 里面,如果你把 left = 0 放在 runIt 里面,那么每次运行 runIt 它都会把 left 重新初始化为 0。
这样 left = left + 1 就失去了效果,每次 left 都是 1.




使用道具 举报

您需要登录后才可以回帖 登录 | 注册

手机版| 联系论坛客服| 广告服务| 招贤纳士| 新西兰天维网

GMT+13, 2024-11-26 16:32 , Processed in 0.013440 second(s), 13 queries .

Powered by Discuz! X2 Licensed

Copyright 2001- Sky Media Limited, All Rights Reserved.

回顶部