2016-06-07 141 views
0

我正在創建卡/平鋪內存關聯遊戲。它是一個100x100像素圖像的4x4網格,因此共顯示16個圖像(8對)。Pygame使用類來隨機化圖像展示位置

現在我想要的是每次遊戲開始時圖像都會以隨機順序顯示在網格中,我覺得我已經接近使用在課程表中將其拖動到列表中,然後調用while循環中主函數的類。

這裏是我的代碼:

# Memory Tiles Game 
# A Memory Game which users can flip tiles in and remember their placement to match 
# all of the tiles 

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

# User-defined classes 
class memorygame(object): 
    def __init__(self): 
     imagelist = [image1,image2,image3,image4,image5,image6,image7 
        image8,image9] 
     shuffle.imagelist 
     screen.blit(imagelist[0],(0,0)) 
     screen.blit(imagelist[1],(104,0)) 
     screen.blit(imagelist[2],(208,0)) 
     screen.blit(imagelist[3],(312,0)) 
     screen.blit(imagelist[4],(0,104)) 
     screen.blit(imagelist[5],(104,104)) 
     screen.blit(imagelist[6],(208,104)) 
     screen.blit(imagelist[7],(312,104)) 
     shuffle.imagelist 
     screen.blit(imagelist[0],(0,208)) 
     screen.blit(imagelist[1],(104,208)) 
     screen.blit(imagelist[2],(208,208)) 
     screen.blit(imagelist[3],(312,208)) 
     screen.blit(imagelist[4],(0,312)) 
     screen.blit(imagelist[5],(104,312)) 
     screen.blit(imagelist[6],(208,312)) 
     screen.blit(imagelist[7],(312,312)) 






# User-defined functions 

def main(): 

    black = ( 0, 0, 0) 
    white = (255,255,255) 
    red = (100, 0, 0) 
    green = ( 0,153, 0) 
    blue = ( 0, 0,255) 
    image1 = pygame.image.load('image0.bmp') 
    image2 = pygame.image.load('image1.bmp') 
    image3 = pygame.image.load('image2.bmp') 
    image4 = pygame.image.load('image3.bmp') 
    image5 = pygame.image.load('image4.bmp') 
    image6 = pygame.image.load('image5.bmp') 
    image7 = pygame.image.load('image6.bmp') 
    image8 = pygame.image.load('image7.bmp') 
    image9 = pygame.image.load('image8.bmp') 
    w = 500 
    h = 400 
    screen = pygame.display.set_mode((w, h)) 
    screen.fill((white)) 
    running = 1 

    # Initialize pygame 
    pygame.init() 

    # Set window size and title, and frame delay 
    surfaceSize = (500, 400) # example window size 
    windowTitle = 'Memory Game' # example title 
    frameDelay = 0.02 # smaller is faster game 

    # Create the window 
    surface = pygame.display.set_mode(surfaceSize, 0, 0) 
    pygame.display.set_caption(windowTitle) 

    # create and initialize objects 
    gameOver = False 
    #center = [200, 200] # example - replace 

    # Draw objects 
    # The next line is an example - replace it 
    #pygame.draw.circle(surface, pygame.Color('green'), center, 50, 0) 

    # Refresh the display 
    pygame.display.update() 

    # Loop forever 
    while True: 
     # Check event 
     event = pygame.event.poll() 
     if event.type == QUIT: 
     pygame.quit() 
     sys.exit() 
     screen.fill((black)) 
     class memorygame(object) 

     # Handle additional events 

     # Update and draw objects for the next frame 
     gameOver = update(center, surface) 

     # Refresh the display 
     pygame.display.update() 

     # Set the frame speed by pausing between frames 
     time.sleep(frameDelay) 

main() 

它似乎沒有編制,我不知道爲什麼。我在shell中出現語法錯誤。

回答

0

首先,您在memorygame類的圖像列表的第一行末尾忘記了一個逗號。將其更改爲

imagelist = [image1,image2,image3,image4,image5,image6,image7, 
      image8,image9] 

應該修復第一個語法錯誤。

其次,我不確定你在主循環中用線class memorygame(object)想達到什麼目的。您可能想要在while循環外創建一個類的實例,並調用一個函數來遮蔽while循環中的圖像。

圖像變量是局部的,memorygame類不會看到它們,除非你明確地使它們成爲全局變量,或者將它們傳遞給memorygame的__init__方法。

此外,你洗牌的方式是不正確的。您應該隨機導入,然後調用random.shuffle(imagelist)。