编程娃娃Python版

编程娃娃Python版

编程娃娃Python版
"""bcwawa.py

《编程娃娃Python版》是继《编程娃娃》的姊妹篇。它不需要拖曳编程命令,采用的是直接编排图形化指令的模式,指挥一个娃娃回家。

此版本更重要的是能做为一个模块导入到Python原生环境,从而实现用真正的Python命令去指挥娃娃移动。

本版本新增命令如下:

forward:前进50像素,缩写为:fd,使用方法: fd()

backward:倒退50,缩写为:bk,back,使用方法:bk()

right:右转90,缩写:rt, 使用方法:rt()

left:左转90,缩写:lt,使用方法:lt()

jump:前进100,主要用来跳过炸弹。使用方法:jump()

bomb_ahead:检测娃娃前面是否有炸弹,返回布尔值。使用方法: bomb_ahead()

playmusic:播放音乐,不输入参数会播放小星星曲子。使用方法: playmusic()

pausemusic:暂停播放音乐。使用方法: playmusic()

stopmusic:停止播放音乐。使用方法: stopmusic()

unpausemusic:继续播放音乐。使用方法: unpausemusic()

set_level:设置当前关卡号。使用方法: set_level(3)

娃娃根据指令前进的主要原理如下:
在作品中设计了三排按钮,娃娃能访问这三排按钮。
第一排是子指令表1(相当于子程序1),以橙星开始,后面跟着9个指令按钮。
第二排也是子指令表2(相当于子程序2),以绿星开始,后面跟着9个指令按钮。
第三排代表主指令表(相当于主程序),以信封开始,后面跟着9个指令按钮.
程序启动后,娃娃对象生成,它会注册回车键绑定自己的execute方法。
当按回车键或单击信封按钮时,娃娃就像是收到了信的内容,会根据信的内容执行它的execute方法。
这个方法执行时会遍历主指令列表,从而根据主指令表中的命令让娃娃前进,转向或执行子指令表。
子程序也能调用子程序,但不能调用主程序。当子程序递归调用过多时,娃娃会自动停止移动。

让娃娃移动的三种方法:

1、按键:直接按上、下、左、右,空格键,手动操作娃娃。适合于体验按键。

2、编排图形化指令:单击信封及五角星后面的按钮,给娃娃编排指令。信封后面的9个按钮为主指令表,橙星为调用子程序1指令,绿星为调用子程序2指令。

向上箭头为前进指令(并不仅仅是向上移动,而是朝它当前的方向移动)。向右转箭头为右转指令,向左转箭头为左转指令,弯箭头为跳跃指令。

3、Python编程模式:把本程序做为模块导入,然后通过编写Python代码指挥娃娃前进。典型代码举例:

from bcwawa import *
set_level(9) # 设置当前关卡为第9关。
sleep(3)
for i in range(4): # 这个for循环的意思是重复4次“前进前进右转”
fd();fd()
rt()

配置文件名:cfg.txt
本程序的房子和炸弹这两种道具摆放方式分为过关模式与随机模式。过关模式是按内置的排列顺序每关摆放在固定的位置。
随机模式每个关卡都是随机的。
如果配置文件不存在,则默认为过关模式。
如果配置文件存在,里面的字符串为1,则也是关卡模式,其它字符则为随机摆放模式。
主要原理:在生成娃娃对象时,传递__game_mode__变量的值,让娃娃知道模式,当它碰到房子就能决定采用哪种方式重新摆放道具。

"""
__author__ = "李兴球"
__date__ = "2018/10"
__email__ = "406273900@qq.com"
__version__ = "1.0"

import sys,os,webbrowser
from turtle import *
from codewawa.gridturtle import *
from codewawa.bomb import *
from codewawa.house import *
from codewawa.wawa import *
from codewawa.command import *
from random import randint
from time import sleep

下载完整源代码与素材,包含各个子模块,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

李兴球

李兴球的博客是Python创意编程原创博客

评论已关闭。