Python来写一个童话故事
主题:冒险,
风格:惊险,
人物:男孩,
地点:海底。
循环遍历鱼列表中的每一条鱼
for fish in fishes:
# 获取男孩和鱼的坐标和距离
boy_x, boy_y = boy.position()
fish_x, fish_y = fish.position()
distance = ((boy_x - fish_x) ** 2 + (boy_y - fish_y) ** 2) ** 0.5
# 如果距离小于男孩和鱼的大小之和,则表示碰撞发生了
if distance < (BOY_SIZE + FISH_SIZE) / 2:
# 播放一段音效,表示吃到了鱼
winsound.PlaySound("eat.wav", winsound.SND_ASYNC)
# 增加分数,并更新计分板上的分数显示
score += SCORE_PER_FISH
update_score()
# 让鱼重新出现在随机位置上
fish.goto(random.randint(-SCREEN_WIDTH / 2 + FISH_SIZE / 2, SCREEN_WIDTH / 2 - FISH_SIZE / 2), random.randint(-SCREEN_HEIGHT / 2 + FISH_SIZE / 2, SCREEN_HEIGHT / 2 - FISH_SIZE / 2))
定义一个函数,用来让男孩向左移动
def move_left():
# 获取男孩当前的x坐标,并减去男孩的速度,得到新的x坐标
x = boy.xcor() - BOY_SPEED
# 如果新的x坐标小于屏幕左边界加上男孩的大小的一半,则将新的x坐标设置为屏幕左边界加上男孩的大小的一半,防止男孩移出屏幕
if x < -SCREEN_WIDTH / 2 + BOY_SIZE / 2:
x = -SCREEN_WIDTH / 2 + BOY_SIZE / 2
# 让男孩移动到新的x坐标和原来的y坐标上
boy.goto(x, boy.ycor())
定义一个函数,用来让男孩向右移动
def move_right():
# 获取男孩当前的x坐标,并加上男孩的速度,得到新的x坐标
x = boy.xcor() + BOY_SPEED
# 如果新的x坐标大于屏幕右边界减去男孩的大小的一半,则将新的x坐标设置为屏幕右边界减去男孩的大小的一半,防止男孩移出屏幕
if x > SCREEN_WIDTH / 2 - BOY_SIZE / 2:
x = SCREEN_WIDTH / 2 - BOY_SIZE / 2
# 让男孩移动到新的x坐标和原来的y坐标上
boy.goto(x, boy.ycor())
定义一个函数,用来让男孩向上移动
def move_up():
# 获取男孩当前的y坐标,并加上男孩的速度,得到新的y坐标
y = boy.ycor() + BOY_SPEED
# 如果新的y坐标大于屏幕上边界减去男孩的大小的一半,则将新的y坐标设置为屏幕上边界减去男孩的大小的一半,防止男孩移出屏幕
if y > SCREEN_HEIGHT / 2 - BOY_SIZE / 2:
y = SCREEN_HEIGHT / 2 - BOY_SIZE / 2
# 让男孩移动到原来的x坐标和新的y坐标上
boy.goto(boy.xcor(), y)
定义一个函数,用来让男孩向下移动
def move_down():
# 获取男孩当前的y坐标,并减去男孩的速度,得到新的y坐标
y = boy.ycor() - BOY_SPEED
# 如果新的y坐标小于屏幕下边界加上男孩的大小的一半,则将新的y坐标设置为屏幕下边界加上男孩的大小的一半,防止男孩移出屏幕
if y < -SCREEN_HEIGHT / 2 + BOY_SIZE / 2:
y = -SCREEN_HEIGHT / 2 + BOY_SIZE / 2
# 让男孩移动到原来的x坐标和新的y坐标上
boy.goto(boy.xcor(), y)
定义一个函数,用来让鲨鱼自动追逐男孩,并改变方向和速度
def move_shark():
global SHARK_SPEED # 声明SHARK_SPEED是全局变量,可以在函数内部修改它的值
# 获取鲨鱼和男孩当前的角度和距离(使用数学公式)
shark_angle = shark.towards(boy.position())
shark_distance = shark.distance(boy.position())
# 计算鲨鱼需要转动多少度才能朝向男孩(使用数学公式)
angle_diff = (shark_angle - shark.heading()) % 360 - 180
# 如果角度差大于10度,则让鲨鱼转动10度,否则让鲨鱼转动角度差(使用if-else语句)
if abs(angle_diff) > 10:
shark.left(10 * angle_diff / abs(angle_diff))
else:
shark.left(angle_diff)