2014-10-08 98 views
0

我正在製作一個創造一個世界的遊戲,並且擁有移動它的實體。在我實施運動之前,我想知道如何以不同的方式更新屏幕,而不是一次又一次地重新打印世界。另外,我不想在創建這個遊戲時使用像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) 
+0

考慮的東西,如打印更換display_world的定義(「|」。加入(世界)) – 2014-10-08 02:25:41

+0

display_world可以被定義爲n個在xrange(10)中:print(「|」.join(world [n * 10:(n + 1)* 10])) – 2014-10-08 02:38:11

回答

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) 
+0

謝謝!這將有很大的幫助!我需要下載curses還是隻需要將它導入python? – c2000e 2014-10-08 20:35:23

+0

它應該只是導入,它是基本安裝的一部分。 – 2014-10-08 20:49:10

+0

好的。非常感謝你的幫助! – c2000e 2014-10-08 20:58:44