Python Turtle窗口只会弹出一秒钟
我正在用python制作我的前几个游戏,我选择了Snake和Egg Catcher作为我的项目。我的问题是,当我执行代码时,图形窗口只会弹出一秒钟。我假设,当我的代码到达末尾时,它会自动关闭窗口,但我希望这个窗口在我的游戏中保持不变 我可以添加什么来确保我的图形窗口保持不变,以便我可以玩游戏 非常感谢Python Turtle窗口只会弹出一秒钟,python,turtle-graphics,Python,Turtle Graphics,我正在用python制作我的前几个游戏,我选择了Snake和Egg Catcher作为我的项目。我的问题是,当我执行代码时,图形窗口只会弹出一秒钟。我假设,当我的代码到达末尾时,它会自动关闭窗口,但我希望这个窗口在我的游戏中保持不变 我可以添加什么来确保我的图形窗口保持不变,以便我可以玩游戏 非常感谢 import random import turtle as t #Creating the snake caterpillar = t.Turtle() caterpillar.s
import random
import turtle as t
#Creating the snake
caterpillar = t.Turtle()
caterpillar.shape('square')
caterpillar.color('red')
caterpillar.speed(0)
caterpillar.penup()
caterpillar.hideturtle()
# Creating the powerup
leaf = t.Turtle()
leaf_shape = ((0,0), (14,2), (18,6), (20,20), (6,18), (2,14))
t.register_shape('leaf', leaf_shape)
leaf.shape('leaf')
leaf.color('green')
leaf.penup()
leaf.hideturtle()
leaf.speed(0)
# Settling our score
game_started = False
text_turtle = t.Turtle()
text_turtle.write('Press SPACE to start', align = 'center', font ('Arial',16,'bold'))
text_turtle.hideturtle()
score_turtle - t.Turtle()
score_turtle.hideturtle()
score_turtle.speed(0)
# Game functions
def outside_window():
pass
def game_over():
pass
def display_score(current_score):
pass
def place_leaf():
pass
def start_game():
global game_started
if game_started:
return
game_started = true
score = 0
text_turtle.clear()
caterpillar_speed = 2
caterpillar_length = 3
caterpillar.shapesize(1, caterpillar_length, 1)
caterpillar.showturtle()
display_score(score)
place_leaf()
# Game Drivers
while True:
caterpillar.forward(caterpillar_speed)
if caterpillar.distance(leaf) < 20:
place_leaf()
caterpillar_length = caterpillar_length + 1
caterpillar_speed = caterpillar_speed + 1
score = score + 10
display_score(score)
if outside_window():
game_over()
break
t.onkey(start_game, 'space')
t.listen()
t.mainloop()
随机导入
进口甲鱼
#创造蛇
毛虫=t.海龟()
caterpillar.shape('square')
毛虫。颜色(“红色”)
履带速度(0)
卡特彼勒
毛毛虫
#创建通电
叶=t.海龟()
叶形=((0,0)、(14,2)、(18,6)、(20,20)、(6,18)、(2,14))
t、 注册形状(“叶子”,叶子形状)
leaf.shape('leaf')
叶子颜色('绿色')
leaf.penup()
叶
叶速度(0)
#算账
游戏开始=错误
text_turtle=t.turtle()
text_.write('Press SPACE to start',align='center',font('Arial',16,'bold'))
text_tutle.hideturtle()
得分_海龟-t.海龟()
记分卡
得分。速度(0)
#游戏功能
def外部_窗口():
通过
def game_over():
通过
def显示_分数(当前_分数):
通过
def place_leaf():
通过
def start_game():
全球游戏开始了
如果游戏开始:
返回
游戏开始=真
分数=0
text_.clear()
履带速度=2
履带长度=3
caterpillar.shapesize(1,caterpillar_长度,1)
毛虫
显示分数(分数)
放在叶子上()
#游戏驱动程序
尽管如此:
caterpillar前进档(caterpillar\U速度)
如果履带距离(叶片)<20:
放在叶子上()
履带长度=履带长度+1
履带速度=履带速度+1
分数=分数+10
显示分数(分数)
如果在窗口()之外:
游戏结束
打破
t、 onkey(开始游戏“空间”)
t、 听
t、 mainloop()
由于语法错误,您发布的代码甚至无法打开图形窗口:
score_turtle - t.Turtle()
text_turtle.write('Press SPACE to start', align = 'center', font ('Arial',16,'bold'))
应该是:
score_turtle = t.Turtle()
text_turtle.write('Press SPACE to start', align='center', font=('Arial',16,'bold'))
此外:
- 关于全局变量,你有很多错误 建议您(重新)阅读Python如何处理全局变量
- 您的
循环会阻止您的游戏正确启动和恢复 在事件驱动程序中没有任何位置while True:
- 你的毛毛虫开始在你的叶子上,所以你的游戏结束了 场景立即触发
from turtle import Turtle, Screen
# Game functions
def outside_window():
return False # implement this for real
def game_over():
pass # implement this for real
def display_score(current_score):
pass # implement this for real
def place_leaf():
leaf.hideturtle()
leaf.goto(100, 100) # implement this for real
leaf.showturtle()
def start_game():
global score
global caterpillar_speed
global caterpillar_length
screen.onkey(None, 'space')
score = 0
text_turtle.clear()
caterpillar_speed = 2
caterpillar_length = 3
caterpillar.shapesize(1, caterpillar_length, 1)
caterpillar.showturtle()
display_score(score)
place_leaf()
crawl()
# Game Drivers
def crawl():
global score
global caterpillar_speed
global caterpillar_length
caterpillar.forward(caterpillar_speed)
if caterpillar.distance(leaf) < 20:
place_leaf()
caterpillar_speed = caterpillar_speed + 1
caterpillar_length = caterpillar_length + 1
caterpillar.shapesize(1, caterpillar_length, 1)
score = score + 10
display_score(score)
if outside_window():
game_over()
else:
screen.ontimer(crawl, 100)
screen = Screen()
# Creating the powerup
leaf_shape = ((0, 0), (14, 2), (18, 6), (20, 20), (6, 18), (2, 14))
screen.register_shape('leaf', leaf_shape)
leaf = Turtle('leaf', visible=False)
leaf.color('green')
leaf.speed('fastest')
leaf.penup()
# Creating the caterpillar
caterpillar = Turtle('square', visible=False)
caterpillar.color('red')
caterpillar.speed('fastest')
caterpillar.penup()
# Settling our score
text_turtle = Turtle(visible=False)
text_turtle.write('Press SPACE to start', align='center', font=('Arial', 16, 'bold'))
score_turtle = Turtle(visible=False)
screen.onkey(start_game, 'space')
screen.listen()
screen.mainloop()
从海龟导入海龟,屏幕
#游戏功能
def外部_窗口():
return False#真正实现这个
def game_over():
通过#真正实现这一点
def显示_分数(当前_分数):
通过#真正实现这一点
def place_leaf():
叶
leaf.goto(100100)#真正实现这一点
叶
def start_game():
全球得分
全球履带速度
全局毛毛虫长度
screen.onkey(无,'space')
分数=0
text_.clear()
履带速度=2
履带长度=3
caterpillar.shapesize(1,caterpillar_长度,1)
毛虫
显示分数(分数)
放在叶子上()
爬行
#游戏驱动程序
def crawl():
全球得分
全球履带速度
全局毛毛虫长度
caterpillar前进档(caterpillar\U速度)
如果履带距离(叶片)<20:
放在叶子上()
履带速度=履带速度+1
履带长度=履带长度+1
caterpillar.shapesize(1,caterpillar_长度,1)
分数=分数+10
显示分数(分数)
如果在窗口()之外:
游戏结束
其他:
屏幕时间(爬网,100)
screen=screen()
#创建通电
叶形=((0,0)、(14,2)、(18,6)、(20,20)、(6,18)、(2,14))
屏幕。注册形状(“叶子”,叶子形状)
叶子=乌龟(“叶子”,可见=假)
叶子颜色('绿色')
叶速度(“最快”)
leaf.penup()
#创建caterpillar
卡特彼勒=乌龟('square',可见=假)
毛虫。颜色(“红色”)
履带速度(“最快”)
卡特彼勒
#算账
text_海龟=海龟(可见=假)
text_.write('Press SPACE to start',align='center',font=('Arial',16',bold'))
分数=海龟(可见=假)
screen.onkey(开始游戏,'space')
screen.listen()
screen.mainloop()
这是乌龟还是pygame?这是乌龟-如果这是错误的标记,请道歉!