清除 python 中基于文本的 rpg 的屏幕



我正在尝试用python制作一个基于文本的RPG游戏。我刚刚开始,这是我的代码到目前为止的样子:

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函数,但我无法弄清楚为什么这不起作用。感谢您的任何帮助

所以根据你之前的评论,你想在Python解释器中清除屏幕。没有"命令"可以像这样清除屏幕。但是您可以使用循环打印一些新行,直到屏幕再次空白。

def clear(lines):
for l in range(lines):
print()
while True:
game.draw_map()
clear(35)
time.sleep(0.05)

您可能需要增加或减少清除的行数。我希望这对你有用。PS:我会使用普通的控制台。

https://en.wikipedia.org/wiki/Interpreter_(计算(#Efficiency:

效率: 解释器的主要缺点是解释程序的运行速度通常比编译程序慢。速度的差异可能很小,也可能很大;通常是一个数量级,有时甚至更多。在解释器下运行程序通常比运行编译后的代码花费更长的时间,但解释它所需的时间可能少于编译和运行它所需的总时间。这在原型设计和测试代码时尤其重要,因为编辑-解释-调试周期通常比编辑-编译-运行-调试周期短得多。

如果您的问题是清除控制台窗口,您可以使用

import os
os.system('cls')

代替

sp.call("cls", shell = True)

(假设您正在处理窗口(

为清楚起见,编辑:

这是更改后的新循环:

while True:
game.draw_map()
os.system('cls')

最新更新