需要帮助更新屏幕

时间:2014-10-08 02:23:17

标签: python windows python-3.x

我正致力于创造一个创造一个世界的游戏,并拥有可以在其中移动的实体。在我实施运动之前,我想知道如何以不同的方式更新屏幕,而不是一遍又一遍地重印世界。此外,在创建此游戏时,我不想使用像pygame这样的模块。代码如下:

import time

#Global Constants
spino = "X"
player = "O"
empty = " "
world_size = 102

def new_world():
    world = []
    for square in range(world_size):
        world.append(empty)
    return world

def spawn_spinos(world):
    world[0] = spino
    world[20] = spino
    world[40] = spino
    world[60] = spino
    world[80] = spino
    return world

def spawn_player(world):
    world[44] = player
    return world

def display_world(world):
   print (world[0], "|", world[1], "|", world[2], "|", world[3], "|", world[4], "|", world[5], "|", world[6], "|", world[7], "|", world[8], "|", world[9])
   print (world[10], "|", world[11], "|", world[12], "|", world[13], "|", world[14], "|", world[15], "|", world[16], "|", world[17], "|", world[18], "|", world[19])
   print (world[20], "|", world[21], "|", world[22], "|", world[23], "|", world[24], "|", world[25], "|", world[26], "|", world[27], "|", world[28], "|", world[29])
   print (world[30], "|", world[31], "|", world[32], "|", world[33], "|", world[34], "|", world[35], "|", world[36], "|", world[37], "|", world[38], "|", world[39])
   print (world[40], "|", world[41], "|", world[42], "|", world[43], "|", world[44], "|", world[45], "|", world[46], "|", world[47], "|", world[48], "|", world[49])
   print (world[50], "|", world[51], "|", world[52], "|", world[53], "|", world[54], "|", world[55], "|", world[56], "|", world[57], "|", world[58], "|", world[59])
   print (world[60], "|", world[61], "|", world[62], "|", world[63], "|", world[64], "|", world[65], "|", world[66], "|", world[67], "|", world[68], "|", world[69])
   print (world[70], "|", world[71], "|", world[72], "|", world[73], "|", world[74], "|", world[75], "|", world[76], "|", world[77], "|", world[78], "|", world[79])
   print (world[80], "|", world[81], "|", world[82], "|", world[83], "|", world[84], "|", world[85], "|", world[86], "|", world[87], "|", world[88], "|", world[89])
   print (world[90], "|", world[91], "|", world[92], "|", world[93], "|", world[94], "|", world[95], "|", world[96], "|", world[97], "|", world[98], "|", world[99])

def update_world(world):
    while True:
        display_world(world)
        time.sleep(1)


world = new_world()
world = spawn_spinos(world)
world = spawn_player(world)
update_world(world)

1 个答案:

答案 0 :(得分:0)

要处理屏幕绘制,请尝试curses。它已经存在了很长时间,可能是大多数全屏终端程序使用的屏幕处理库。

以下是基于您的程序的工作代码的一些片段:

from curses import wrapper

def display_world(world, stdscr):
    for y in range(0, 10):
        for x in range(0, 10):
            stdscr.addch(y+1, 2*x, world[y*10+x])
            stdscr.addch(y+1, 2*x+1, "|")
    stdscr.refresh()
    key = stdscr.getkey()
    stdscr.addnstr(0, 3, key, 10)
    stdscr.refresh()
    if key is "q":
        exit(0)

def update_world(world, stdscr):
    while True:
        display_world(world, stdscr)
        sleep(0.1)

def main(stdscr):
    stdscr.clear()
    world = new_world()
    world = spawn_spinos(world)
    world = spawn_player(world)
    update_world(world, stdscr)

wrapper(main)