2016-06-07 2 views
0

카드/타일 메모리 연결 게임을 만들고 있습니다. 그것은 100x100 픽셀 이미지의 4x4 격자이므로 총 16 개의 이미지가 표시됩니다 (8 쌍).파이 게임 클래스를 사용하여 이미지 배치를 임의로 지정

현재로서는 게임이 시작될 때마다 이미지가 임의의 순서로 표에 표시되기를 원합니다. 클래스의 목록에서 해당 이미지를 순서대로 섞어서 사용하고있는 것처럼 느낍니다. while 루프의 main 함수에서 해당 클래스를 찾습니다.

여기 내 코드입니다 :

# 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() 

컴파일하지 않는 것, 그리고 그 이유를 모르겠습니다. 셸에서 구문 오류가 발생합니다.

답변

0

우선, memorygame 클래스의 imagelist에서 첫 줄 끝에 쉼표를 잊어 버렸습니다. 변경하면

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

첫 번째 구문 오류를 해결해야합니다.

둘째, 메인 루프에 class memorygame(object) 줄을 사용하여 달성하려는 내용이 확실하지 않습니다. while 루프 외부에서 클래스의 인스턴스를 만들고 while 루프 내부에서 이미지를 blit하는 함수를 호출하려고합니다.

이미지 변수는 명시 적으로 전역 변수로 만들거나 memorygame의 __init__ 메소드로 전달하지 않는 한, 로컬 변수이므로 memorygame 클래스는이를 볼 수 없습니다.

게다가, 당신이 imagelist를 뒤섞고있는 방식은 옳지 않습니다. 임의로 가져 와서 random.shuffle (imagelist)을 대신 호출해야합니다.