2016-06-07 7 views
0

Ich erstelle ein Karten-/Kachelspeicher-Assoziationsspiel. Es ist ein 4x4 Raster von 100x100 Pixelbildern, also insgesamt 16 Bilder (8 Paare).Pygame Verwenden der Klasse zum Randomisieren von Bildplatzierungen

Für jetzt alles was ich will ist, dass die Bilder in einem Raster in zufälliger Reihenfolge jedes Mal angezeigt werden, wenn das Spiel gestartet wird, was ich fühle ich bin nahe dran zu tun, indem Sie sie in einer Liste in einer Klasse mischen und dann aufrufen Diese Klasse von der Hauptfunktion in der While-Schleife.

Hier ist mein Code:

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

Es scheint nicht zu kompilieren, und ich bin nicht sicher, warum. Ich bekomme einen Syntaxfehler in der Shell.

Antwort

0

Als erstes haben Sie ein Komma am Ende der ersten Zeile in der Bildliste in Ihrer MemoryGame-Klasse vergessen. Das Ändern zu

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

sollte den ersten Syntaxfehler beheben.

Zweitens bin ich mir nicht sicher, was Sie versuchen, mit der Linie class memorygame(object) in Ihrer Hauptschleife zu erreichen. Wahrscheinlich möchten Sie eine Instanz der Klasse außerhalb der while-Schleife erstellen und eine Funktion aufrufen, die die Bilder innerhalb der while-Schleife blendet.

Die Bildvariablen sind übrigens lokal, die MemoryGame-Klasse wird sie nicht sehen, es sei denn, Sie machen sie explizit zu globalen Variablen oder übergeben sie an die Methode __init__ von memorygame.

Außerdem ist die Art, wie Sie die Bildliste mischen, nicht ganz richtig. Sie sollten zufällig importieren und dann random.shuffle (Bildliste) aufrufen.

Verwandte Themen