上一篇 豆子学习了基本的Turtle的使用,比如移动,定位,色彩等等。这次来看看他对事件的处理功能。
首先来看看个小游戏,通过几个按键的事件,实现 w(前进),s ( 后退),a (左转),d (右转),z ( 清屏)的画图效果。注意自定义的函数不可以带有参数!
效果图
代码如下
from turtle import Screen, Turtle import random tim = Turtle() #往前 def move_forward(): tim.forward(10) #往后 def move_backward(): tim.backward(10) #右转 def move_clockwise(): tim.setheading(tim.heading() + 10) #左转 def move_counterclockwise(): tim.setheading(tim.heading() - 10) #清屏 def clear_screen(): tim.clear() tim.penup() tim.home() tim.pendown() screen = Screen() screen.listen() #输入按键,触发对应的函数 screen.onkey(key='w', fun=move_forward) screen.onkey(key='s', fun=move_backward) screen.onkey(key='d', fun=move_clockwise) screen.onkey(key='a', fun=move_counterclockwise) screen.onkey(key='z', fun=clear_screen) #点击屏幕退出 screen.exitonclick()
接下来,我们再来看一个比较有趣的小游戏,我们可以生成7个颜色的海龟进行跑步比赛,竞猜哪个颜色的海龟会赢,看看谁会得第一。
效果图如下
from turtle import Screen, Turtle import random #初始化一下我们的画布,默认的尺寸太大了,这里修改一下初始尺寸 screen = Screen() screen.setup(width=500, height=400) # screen 提供的text输入界面 userbet = screen.textinput(title="Make your bet", prompt="Which turtle will ? Enter a color:") print(userbet) #自定义7个彩虹的颜色 colors=["red","orange","yellow","green","blue","Indigo","Violet"] #定义一个列表,保存我们的海龟实例 all_turtles=[] #对每一个颜色,我们都生成一个海龟的实例,放入列表 for color in colors: #我们可以用他默认集成的海龟图案,也可以自定义背景图和其他的图 t=Turtle(shape='turtle') #我们只需要看海龟跑,但是不需要看他跑的痕迹 t.penup() #颜色 t.color(color) #我们需要从屏幕的左边开始跑,所以一开始要把每只海龟放在最左边,X坐标大概-230,Y坐标从下-90往上30个坐标放一个 t.goto(-230,colors.index(color)*30-90) all_turtles.append(t) is_race_on=False if userbet: is_race_on=True #循环跑,每只海龟每次随机跑0-10的距离,直到一只海龟跑到边界 while is_race_on: for turtle in all_turtles: #海龟本身的宽度是40,所以到达边界的时候是 250-40/2=230 #到达边界之后就清屏,弹出一个川皇的庆祝图 if turtle.xcor() > 230: is_race_on = False screen.clear() screen.bgpic("tenor.gif") winner_color=turtle.pencolor() if winner_color == userbet: print(f"You've win! The {winner_color} turtle is the winner") else: print(f"You've lost! The {winner_color} turtle is the winner") rand_distance = random.randint(0,10) turtle.forward(rand_distance) screen.exitonclick()
查看更多关于用 Python Turtle 模块做小游戏 (2) - 画笔和乌龟赛跑的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did166126