2011-11-21 82 views
3

你好,我是一般的Python和圖形編程新手。目前我正忙於創建網格作爲練習,並且我在獲取pygame將對象放在曲面窗口上方時遇到了問題。pygame圖形網格

下面是我的意見代碼。我認爲這個問題可能與blit函數有關,但我不確定。任何幫助,將不勝感激。另外,Python shell不會突出顯示任何異常或錯誤,但程序不會運行。

import sys, random, pygame 
from pygame.locals import * 


def main(): 
    #settings 
    boardDims = (20,20) #number of cells on board 

    #pygame settings 
    cellDims = (20,20) #number of pixels on cells 
    framerate = 50 
    colours = {0:(0,0,0), 1:(255,255,255)}   

    #pygame 
    pygame.init() 
     #sets x and y pixels for the window 
    dims = (boardDims[0] * cellDims[0], 
      boardDims[1] * cellDims[1]) 
    #sets window, background, and framrate 
    screen = pygame.display.set_mode(dims) 
    background = screen.convert() 
    clock = pygame.time.Clock()   

    #create new board 
    board = {} 
     #iterates over x and y axis of the window 
    for x in range(boardDims[0]): 
     for y in range(boardDims[1]): 
      board[(x,y)] = 0 #sets whole board to value 0 
    board[(1,1)] = 1 #sets one square at co-ordinates x=1,y=1 to cell 
        # value 1 
    return board 


    running = 1 
    while running: 
     # 1 PYGAME 
     #get input 
     for event in pygame.event.get(): 
      if event.type == QUIT or \ 
       (event.type == KEYDOWN and event.key == K_ESCAPE): 
        running = 0 
        return 
     #link pygames clock to set framerate 
     clock.tick(framerate) 


     for cell in board: 
      #adds cells dimensions and co-ordinates to object rectangle 
      rectangle = (cell[0]*cellDims[0], cell[1]* cellDims[1], 
          cellDims[0], cellDims[1]) 
      #pygame draws the rectabgle on the background using the relevant 
      #colour and dimensions and co-ordinates outlined in 'rectangle' 
      square = pygame.draw.rect(background, colours[board[cell]], 
             rectangle) 
     #blits and displays object on the background 
     background.blit(square) 
     screen.blit(background, (0,0)) 
     pygame.display.flip() 


if __name__ == "__main__": 
    main() 

回答

1

在任何blitting完成之前,「return board」語句正在退出程序。另外,你可以直接在屏幕上顯示變量,例如:你不需要背景變量。