2016-11-25 80 views
0

爲什麼有幾個矩陣出現而不僅僅是一個?而且,即使增加1,1,1,1,我也不能放大。tkinter遊戲中的矩陣問題

我的代碼:

import os 
import time 
import random 

from Tkinter import * 
import os 

def leftKey(event): 
     e_b(-1) 

def rightKey(event): 
     e_b(1) 

def escKey(event): 
     root.quit() 

def refresh(): 
     time.sleep(0.03) 
     clear = lambda: os.system('clear') 
     for i in range(0,len(m)): 
       for j in range(0,len(m)): 
         if m[i][j] == 1: 
           print '#', 
         elif m[i][j] == 2: 
           print '=', 
         elif m[i][j] == 3: 
           print '*', 
         else: 
           print ' ', 
       print '' 

     root.after(30, refresh) 

def e_b(x): 
     for i in range(0,len(b)): 
       f = b[i][0] 
       c = b[i][1] 
       m[f][c] = 0 

     if x == -1: 
       if b[0][1] > 0: 
         for i in range(0,len(b)): 
           b[i][1] += x 
     elif x == 1: 
       if b[len(b)-1][1] < len(m)-1: 
         for i in range(0,len(b)): 
           b[i][1] += x 

     for i in range(0,len(b)): 
       f = b[i][0] 
       c = b[i][1] 
       m[f][c] = 2 


m = [ [1,1,1,1,1,1,1,1,1,1], 
     [0,1,1,1,1,1,1,1,0], 
     [0,0,0,0,0,0,0,0,], 
     [0,0,0,0,0,0,0,0], 
     [0,0,0,0,0,0,0,0], 
     [0,0,0,0,0,0,0,0]] 

b = [[len(m)-1,0],[len(m)-1,1],[len(m)-1,2]] 
e_b(0) 

root = Tk() 
frame = Frame(root, width=100, height=100) 
root.bind('<Left>', leftKey) 
root.bind('<Right>', rightKey) 
root.bind('<Escape>', escKey) 
frame.pack() 

root.after(30, refresh) 
#root.after(30, mov_ball) 
root.mainloop() 

enter image description here

我希望它看起來這樣或更大

enter image description here

我工作的轉移球。

+0

我認爲''在範圍(0,len(m))'中的'refresh()'應該是'範圍內的j(0,len(m [i]))''。在'e_b(x)'中,如果在'elif x == 1'之後的b [len(b)-1] [1] acw1668

回答

0

矩陣大小爲10x6,但你打印6x6

在Python,你不必使用range(len()),如果你不改變矩陣的值。

for row in m: 
    for val in row: 
     if val == 1: 
      print '#', 
     elif val == 2: 
      print '=', 
     elif val == 3: 
      print '*', 
     else: 
      print ' ', 
    print # you don't need empty string 

如果您需要更多elif那麼它更容易使用列表(或字典)

blocks = [" ", "#", "=", "*"] 
blocks_length = len(blocks) 

for row in m: 
    for val in row: 
     if val < blocks_length: 
      print blocks[val], 
     else: 
      print '?', 
    print 

,或者如果你確定你不使用VAL較大或equl然後blocks_length

blocks = [" ", "#", "=", "*"] 
blocks_length = len(blocks) 

for row in m: 
    for val in row: 
     print blocks[val], 
    print 

但問題是爲什麼要使用0,1矩陣如果我們可以使用" ""#"

m = [ 
    ["#", "#", "#", "#", "#", "#", "#", "#", "#", "#"], 
    [" ", "#", "#", "#", "#", "#", "#", "#", " ", " "], 
    [" ", " ", " ", " ", " ", " ", " ", " ", " ", " "], 
    [" ", " ", " ", " ", " ", " ", " ", " ", " ", " "], 
    [" ", " ", " ", " ", " ", " ", " ", " ", " ", " "], 
    [" ", " ", " ", " ", " ", " ", " ", " ", " ", " "] 
] 

BTW:

創建功能clear

clear = lambda:os.system('clear') 

,但你不執行它

clear() 

所以也沒有清晰的屏幕