在 python 中清除基于文本的角色扮演游戏的屏幕
Clearing the screen for text based rpg in python
我正在尝试在 python 中制作基于文本的角色扮演游戏。我刚刚开始,到目前为止我的代码是这样的:
class Game:
def __init__(self):
self.map = [[" " for i in range(50)]for i in range(30)]
def draw_map(self):
for i in range(len(self.map)):
print(self.map[i])
def add_stuff(self, thing, x, y):
self.map[y][x] = thing
game = Game()
class Player:
def __init__(self):
self.x = 1
self.y = 1
self.player = "ME"
def draw(self):
game.add_stuff(self.player, self.x, self.y)
def move(self):
pass
player = Player()
player.draw()
game.draw_map()
我试图找到一种以某种方式实现游戏循环的方法。为此,我想到了 运行 draw_map()
并立即清除屏幕并再次打印地图,有点像真实的游戏循环。但是我在这样做时遇到了问题。基于对其他类似问题的其他答案,我设法生成了以下代码(它仅显示主循环和子进程作为 sp 导入)。
while True:
game.draw_map()
sp.call("cls", shell = True)
但是这对我不起作用。它根本不想做任何事情。我还尝试以类似的方式使用 clear_screen` 模块中的 clear
函数,但我无法弄清楚为什么这不起作用。感谢您的帮助
如果您的问题是清除控制台 window,您可以只使用
import os
os.system('cls')
代替
sp.call("cls", shell = True)
(假设您正在 windows 上工作)
为清楚起见编辑:
这是更改后的新循环:
while True:
game.draw_map()
os.system('cls')
因此,根据您之前的评论,您希望在 Python 解释器中清除屏幕。没有"command"就这么清屏。但是您可以使用循环打印一些新行,直到您的屏幕再次变成空白。
def clear(lines):
for l in range(lines):
print()
while True:
game.draw_map()
clear(35)
time.sleep(0.05)
您可能需要增加或减少清除的行数。我希望这对你有用。 P.S.: 我会使用普通的控制台。
https://en.wikipedia.org/wiki/Interpreter_(computing)#Efficiency:
Efficiency:
The main disadvantage of interpreters is that an interpreted program typically runs slower than if it had been compiled. The difference in speeds could be tiny or great; often an order of magnitude and sometimes more. It generally takes longer to run a program under an interpreter than to run the compiled code but it can take less time to interpret it than the total time required to compile and run it. This is especially important when prototyping and testing code when an edit-interpret-debug cycle can often be much shorter than an edit-compile-run-debug cycle.
我正在尝试在 python 中制作基于文本的角色扮演游戏。我刚刚开始,到目前为止我的代码是这样的:
class Game:
def __init__(self):
self.map = [[" " for i in range(50)]for i in range(30)]
def draw_map(self):
for i in range(len(self.map)):
print(self.map[i])
def add_stuff(self, thing, x, y):
self.map[y][x] = thing
game = Game()
class Player:
def __init__(self):
self.x = 1
self.y = 1
self.player = "ME"
def draw(self):
game.add_stuff(self.player, self.x, self.y)
def move(self):
pass
player = Player()
player.draw()
game.draw_map()
我试图找到一种以某种方式实现游戏循环的方法。为此,我想到了 运行 draw_map()
并立即清除屏幕并再次打印地图,有点像真实的游戏循环。但是我在这样做时遇到了问题。基于对其他类似问题的其他答案,我设法生成了以下代码(它仅显示主循环和子进程作为 sp 导入)。
while True:
game.draw_map()
sp.call("cls", shell = True)
但是这对我不起作用。它根本不想做任何事情。我还尝试以类似的方式使用 clear_screen` 模块中的 clear
函数,但我无法弄清楚为什么这不起作用。感谢您的帮助
如果您的问题是清除控制台 window,您可以只使用
import os
os.system('cls')
代替
sp.call("cls", shell = True)
(假设您正在 windows 上工作)
为清楚起见编辑:
这是更改后的新循环:
while True:
game.draw_map()
os.system('cls')
因此,根据您之前的评论,您希望在 Python 解释器中清除屏幕。没有"command"就这么清屏。但是您可以使用循环打印一些新行,直到您的屏幕再次变成空白。
def clear(lines):
for l in range(lines):
print()
while True:
game.draw_map()
clear(35)
time.sleep(0.05)
您可能需要增加或减少清除的行数。我希望这对你有用。 P.S.: 我会使用普通的控制台。
https://en.wikipedia.org/wiki/Interpreter_(computing)#Efficiency:
Efficiency: The main disadvantage of interpreters is that an interpreted program typically runs slower than if it had been compiled. The difference in speeds could be tiny or great; often an order of magnitude and sometimes more. It generally takes longer to run a program under an interpreter than to run the compiled code but it can take less time to interpret it than the total time required to compile and run it. This is especially important when prototyping and testing code when an edit-interpret-debug cycle can often be much shorter than an edit-compile-run-debug cycle.