我尝试为我的学生在 Jupyter 中编写类似迷你游戏的东西,让他们像在 Swift 游乐场中一样学习人物在应用不同命令时的行为方式。 我写了以下内容:
from ipywidgets import Image
from ipycanvas import *
import time
char = Image.from_file("Bilder/charRight.png")
bg = Image.from_file("Bilder/map.png")
xchar=150
ychar=170
tilesize = 48
canvas = Canvas(height=800, width=800)
canvas.draw_image(bg,0,0 )
canvas.draw_image(char, xchar, ychar)
def step():
time.sleep(3)
global xchar
global ychar
global char
canvas.draw_image(bg,0,0 )
xchar = xchar+tilesize
canvas.draw_image(char, xchar, ychar)
step()
print("yay")
step()
print("yay")
canvas
但我不明白,为什么它不单独显示每个步骤,而是全部显示在最后? 如果你想推荐其他模块,我想使用的环境只能与用 python 编写的模块一起使用。否则我会尝试 pygame。
我尝试在几个点上添加画布,认为这会强制它绘制,但没有这样做。
我会尽快更新。它还不能工作,但在完整的 Python 内核中,它不会等到结束才显示任何内容。 (来自“启动活页夹”徽章的会话此处。)我认为部分问题是您没有正确使用 Jupyter 的
display()
或 ipywidgets 进行正确处理:
from ipywidgets import Image
from ipycanvas import *
import time
char = Image.from_file("single_document_mode_in_JupyterLab.png")
bg = Image.from_file("ClassicNb_interface.png")
xchar=150
ychar=170
tilesize = 48
canvas = Canvas(height=800, width=800)
canvas.draw_image(bg,0,0 )
canvas.draw_image(char, xchar, ychar)
def step():
time.sleep(3)
global xchar
global ychar
global char
canvas.draw_image(bg,0,0 )
xchar = xchar+tilesize
canvas.draw_image(char, xchar, ychar)
display(canvas)
step()
print("yay")
step()
print("yay")
如果您希望文本位于画布附近的任何位置,那么您实际上并不需要
print()
。但我不确定你为什么使用print()
。我想只是为了显示变化?