2016-06-23 4 views
1
import pygame 
import time 
import random #Loads pygame and clock and random function 

pygame.init() #Intiates pygame 

display_width = 1440 
display_height = 900 

gameDisplay = pygame.display.set_mode((display_width,display_height)) 
clock = pygame.time.Clock() #Starts auto clock updater 
AstImg = pygame.image.load('Images\Ast.gif') #Asteroid image 

def asteroid(x,y): #Function for asteroid display 
    gameDisplay.blit(AstImg,(x,y)) 

def game(): 
    background_image = pygame.image.load("Images/Space.jpg").convert() 
    e = 1 
    x = 2500 
    y = 2500 
    ax = 2500 
    ay = 2500 
    bx = 2500 
    by = 2500 
    cx = 2500 
    cy = 2500 
    dx = 2500 
    dy = 2500 

    while e == 1: 
     gameDisplay.blit(background_image, [0, 0]) 

     asteroid(x,y) 
     asteroid(ax,ay) 
     asteroid(bx,by) 
     asteroid(cx,cy) 
     asteroid(dx,dy) 
     if x == 2500: 
      x = display_width 
      y = random.randrange(60,display_height - 60) 
     x += -2.5 
     if ax == 2500: 
      ax = display_width 
      ay = random.randrange(60,display_height - 60) 
     ax += -2.5 
     if bx == 2500: 
      bx = display_width 
      by = random.randrange(60,display_height - 60) 
     bx += -2.5 
     if cx == 2500: 
      cx = display_width 
      cy = random.randrange(60,display_height - 60) 
     cx += -2.5 
     if dx == 2500: 
      dx = display_width 
      dy = random.randrange(60,display_height - 60) 
     dx += -2.5 

     pygame.display.update() 
     clock.tick(120) #FPS 
game() 

のクローンを作るためにスプライトとクラスを使用すると、誰かがこれを行う方法を私を見ることができますので、私はより多くの小惑星を起動することができ、私は最終的に必要になります一度にたくさんの小惑星がありますが、これはうまくいくでしょう。のPython(pygameのは)私はスプライトを使用してこのpygameのコードをより効率的にしようとしていた画像

答えて

0

コードをもっとコンパクトにするために、クラスを使いたいと思うようです。基本的に、クラスは、小惑星のようなオブジェクトを定義するために使用できる変数と関数の集合です。ここでは、非常に単純な小惑星クラスの例を示します。

class Asteroid(pygame.sprite.Sprite): 

    def __init__(self,x,y,image): 
     pygame.sprite.Sprite.__init__(self) 
     self.image = image 
     self.rect.x = x 
     self.rect.y = y 

    def update(self): 
     # insert movement code here 

ここで、小惑星クラスの複数のインスタンスが作成されることがあります。これには、同じように行われます:

ast1 = Asteroid(given_x,given_y,AstImg) 
ast2 = Asteroid(given_x,given_y,AstImg) 
ast3 = Asteroid(given_x,given_y,AstImg) 
ast4 = Asteroid(given_x,given_y,AstImg) 
ast5 = Asteroid(given_x,given_y,AstImg) 

さらに良いことは、あなたが好きしかし、多くの小惑星を作成しても、xとyの値を開始するランダムしまうforループを作るために次のようになります。

spriteList = pygame.sprite.Group() 
for i in range(12): 
    ast = Asteroid(random.randrange(1,1440),random.randrange(1,900),AstImg) 
    ast.add(spriteList) # then in your while loop write spriteList.draw(gameDisplay) 
         # and spriteList.update() 

I Pygameスプライトのクラスとその仕組みについてさらに詳しく知ることをお勧めします。 Hereは、役に立つかもしれないリンクです。

関連する問題