首页 > 解决方案 > 当我启动一个蛇程序时我的屏幕冻结

问题描述

^ 我刚开始使用 python 并尝试将蛇编码为游戏我从现在开始就有这个代码

import turtle
import os

wn = turtle.Screen()
wn.bgcolor("black")
wn.title("Space Invaders")

border_pen = turtle.Turtle()
border_pen.speed(0)
border_pen.color("white")
border_pen.penup()
border_pen.setposition(-300,-300)
border_pen.pendown()
border_pen.pensize(3)
for side in range(4):
    border_pen.fd(600)
    border_pen.lt(90)
border_pen.hideturtle()

player = turtle.Turtle()
player.color("blue")
player.shape("triangle")
player.penup()
player.speed(0)
player.setposition(0, -250)
player.setheading(90)

playerspeed = 15

def move_left():
    x = player.xcor()
    x -= playerspeed
    if x < -280:
        x = - 280
    player.setx(x)

def move_right():
    x = player.xcor()
    x += playerspeed
    if x > 280:
        x = 280

    player.setx(x)

turtle.listen()
turtle.onkey(move_left(), "Left")
turtle.onkey(move_right, "Right")


delay = input("Press enter to finish.")

一切都在代码上工作,但问题是我看不到游戏,因为它一直在说“无响应”时崩溃,然后我需要关闭它你能帮我
吗?我有一台 64 位笔记本电脑,但我需要使用 32 位打开它以及为什么我尝试安装 32 位但仍然无法工作请帮助我

标签: python-3.x

解决方案


你真的把我带到了这里。我找不到一个错误,但它冻结了,但并不适合所有人。好的,我确实发现了一个错误:

改为第一turtle.onkey(move_left(), "Left")turtle.onkey(move_left, "Left")

我发现问题是你的最后一行:

delay = input("Press enter to finish.")

我不太确定,但我怀疑 input() 语句正在等待输入,导致程序的其余部分冻结,直到按下 Enter。但这也会关闭程序。显然不是让窗口保持活力的正确选择。将此行替换为:

wn.mainloop()

现在您的程序不应再冻结,但让我们移动蓝色三角形。


推荐阅读