Очистка экрана для текстовой RPG в python - PullRequest
0 голосов
/ 13 февраля 2020

Я пытаюсь сделать текстовую ролевую игру в 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()

Я пытался найти способ каким-то образом реализовать игру l oop. Чтобы сделать это, я подумал о том, чтобы запустить draw_map() и сразу очистить экран и снова напечатать карту, что-то вроде реальных игровых циклов. Однако у меня проблемы с этим. Основываясь на других ответах на другие подобные вопросы, мне удалось создать следующий код (он просто показывает основной l oop и подпроцесс импортируется как sp).

while True:
    game.draw_map()
    sp.call("cls", shell = True)

Однако это не работает для меня , Это просто не делать ничего. Я также попытался использовать функцию clear из модуля clear_screen` аналогичным образом, и я не могу понять, почему это не сработает. Спасибо за любую помощь

Ответы [ 2 ]

2 голосов
/ 14 февраля 2020

поэтому, основываясь на ваших предыдущих комментариях, вы хотите очистить экран в Python интерпретаторе. Нет такой «команды» для очистки экрана, как это. Но вы можете использовать al oop для печати некоторых новых строк, пока ваш экран снова не станет пустым.

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_ (вычисления) # Эффективность :

Эффективность : главный недостаток Интерпретаторы в том, что интерпретируемая программа обычно работает медленнее, чем если бы она была скомпилирована. Разница в скорости может быть крошечной или большой; часто на порядок, а иногда и больше. Обычно для запуска программы под интерпретатором требуется больше времени, чем для запуска скомпилированного кода, но для его интерпретации может потребоваться меньше времени, чем для компиляции и запуска. Это особенно важно при создании прототипа и тестировании кода, когда цикл редактирования-интерпретации-отладки часто может быть намного короче цикла редактирования-компиляции-запуска-отладки.

1 голос
/ 13 февраля 2020

Если вашей проблемой является очистка окна консоли, вы можете просто использовать

import os

os.system('cls')

вместо

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

(при условии, что вы работаете с windows)

РЕДАКТИРОВАТЬ для ясности:

Это новый l oop после изменения:

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