好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

用 Python Turtle 模块做小游戏 (2) - 画笔和乌龟赛跑

上一篇 豆子学习了基本的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) - 画笔和乌龟赛跑的详细内容...

  阅读:62次