2017-06-21 2 views
0

私はpygameでスプライトを作成する簡単な方法に取り組んでいます(それは私のためだけです)。私がテストしていた場合、これは、私の一般的なファイル厥Python&Pygame - 私は移動できる(WASD)ウィンドウとプレーヤーを作ろうとしていますが、黒いウィンドウしか作れません。

import pygame 
from pygame.locals import * 
import MySprites 
import SpecialFunctions 

Sprites = [] 

NewScreen = SpecialFunctions.Level('NewProject', '2D-AboveView', (960, 540), Sprites) 

Sprites = [] 

imgDolu = [pygame.image.load('HeroSprites/HeroSpriteSheet2 [www.imagesplitter.net]-1-8.png'), pygame.image.load('HeroSprites/HeroSpriteSheet2 [www.imagesplitter.net]-1-9.png'), pygame.image.load('HeroSprites/HeroSpriteSheet2 [www.imagesplitter.net]-1-10.png'), pygame.image.load('HeroSprites/HeroSpriteSheet2 [www.imagesplitter.net]-1-11.png'), pygame.image.load('HeroSprites/HeroSpriteSheet2 [www.imagesplitter.net]-1-12.png'), pygame.image.load('HeroSprites/HeroSpriteSheet2 [www.imagesplitter.net]-1-13.png'), pygame.image.load('HeroSprites/HeroSpriteSheet2 [www.imagesplitter.net]-1-14.png'), pygame.image.load('HeroSprites/HeroSpriteSheet2 [www.imagesplitter.net]-1-15.png')] 
imgNahoru = [pygame.image.load('HeroSprites/HeroSpriteSheet2 [www.imagesplitter.net]-1-0.png'), pygame.image.load('HeroSprites/HeroSpriteSheet2 [www.imagesplitter.net]-1-1.png'), pygame.image.load('HeroSprites/HeroSpriteSheet2 [www.imagesplitter.net]-1-2.png'), pygame.image.load('HeroSprites/HeroSpriteSheet2 [www.imagesplitter.net]-1-3.png'), pygame.image.load('HeroSprites/HeroSpriteSheet2 [www.imagesplitter.net]-1-4.png'), pygame.image.load('HeroSprites/HeroSpriteSheet2 [www.imagesplitter.net]-1-5.png'), pygame.image.load('HeroSprites/HeroSpriteSheet2 [www.imagesplitter.net]-1-6.png'), pygame.image.load('HeroSprites/HeroSpriteSheet2 [www.imagesplitter.net]-1-7.png')] 
imgDoleva = [pygame.image.load('HeroSprites/HeroSpriteSheet2 [www.imagesplitter.net]-0-0.png'), pygame.image.load('HeroSprites/HeroSpriteSheet2 [www.imagesplitter.net]-0-1.png'), pygame.image.load('HeroSprites/HeroSpriteSheet2 [www.imagesplitter.net]-0-2.png'), pygame.image.load('HeroSprites/HeroSpriteSheet2 [www.imagesplitter.net]-0-3.png'), pygame.image.load('HeroSprites/HeroSpriteSheet2 [www.imagesplitter.net]-0-4.png'), pygame.image.load('HeroSprites/HeroSpriteSheet2 [www.imagesplitter.net]-0-5.png'), pygame.image.load('HeroSprites/HeroSpriteSheet2 [www.imagesplitter.net]-0-6.png'), pygame.image.load('HeroSprites/HeroSpriteSheet2 [www.imagesplitter.net]-0-7.png')] 
imgDoprava = [pygame.image.load('HeroSprites/HeroSpriteSheet2 [www.imagesplitter.net]-0-8.png'), pygame.image.load('HeroSprites/HeroSpriteSheet2 [www.imagesplitter.net]-0-9.png'), pygame.image.load('HeroSprites/HeroSpriteSheet2 [www.imagesplitter.net]-0-10.png'), pygame.image.load('HeroSprites/HeroSpriteSheet2 [www.imagesplitter.net]-0-11.png'), pygame.image.load('HeroSprites/HeroSpriteSheet2 [www.imagesplitter.net]-0-12.png'), pygame.image.load('HeroSprites/HeroSpriteSheet2 [www.imagesplitter.net]-0-13.png'), pygame.image.load('HeroSprites/HeroSpriteSheet2 [www.imagesplitter.net]-0-14.png'), pygame.image.load('HeroSprites/HeroSpriteSheet2 [www.imagesplitter.net]-0-15.png')] 
imgUtociNahoru = []; imgUtociDolu = []; imgUtociDoleva = []; imgUtociDoprava = [] 
Player1 = MySprites.Player_Type_AboveView(movingUp=imgNahoru, movingDown=imgDolu, movingLeft=imgDoleva, movingRight=imgDoprava, swingingUp=imgUtociNahoru, swingingDown=imgUtociDolu, swingingLeft=imgUtociDoleva, swingingRight=imgUtociDoprava, controlUp=pygame.K_w, controlDown=pygame.K_s, controlLeft=pygame.K_a, controlRight=pygame.K_d, controlSwing=pygame.K_k, speed=5, x=960/2, y=540/2) 
Sprites.append(Player1) 

NewScreen.mainloop() 

:Tests.py:私はこの3つのファイル

ファイル1を持っています。

ファイル2:SpecialFunctions.py:

import pygame 
import MySprites 
from pygame.locals import * 

class Level: 
    def __init__(self, Name, Type, screen_size, AllSprites): 

     """Inicialization of Project""" 

     black = (0, 0, 0) 
     screen_size = screen_size 
     self.screen = pygame.display.set_mode(screen_size) 
     pygame.display.set_caption(Name) 
     self.screen.fill(black) 
     pygame.display.update() 
     self.ProjectSprites = AllSprites 

     self.Running = True 

     self.type = Type 

     self.keys_pressed_list = [] 

    def screen_Update(self): 
     if self.Running: 
      self.screen.fill((0, 0, 0)) 
      for sprite in self.ProjectSprites: 
       sprite.update(sprite, self.screen) 
       sprite.draw(self.screen) 
      pygame.display.update() 

    def mainloop(self): 

     """Running program""" 

     while self.Running: 
      for event in pygame.event.get(): 
       if event.type == pygame.QUIT: 
        pygame.quit() 
        self.Running = False 
        break 
       elif event.type == pygame.KEYDOWN: 
        self.keys_pressed_list.append(event.key) 
       elif event.type == pygame.KEYUP: 
        self.keys_pressed_list.remove(event.key) 
      if self.Running: 
       self.screen_Update() 
      pygame.time.delay(100) 

これは私が私の画面に使用できるいくつかのツールを使用してファイルです。

ファイル3:MySprites.py:

import pygame 

class Player_Type_AboveView (pygame.sprite.Sprite): 
    def __init__(self, 
      movingUp, movingDown, movingLeft, movingRight, 
      swingingUp, swingingDown, swingingLeft, swingingRight, 
      controlUp, controlDown, controlLeft, controlRight, controlSwing, 
      speed, x, y): 

     pygame.sprite.Sprite.__init__(self) 

     #Player controls: 
     self.controls_Up = controlUp 
     self.controls_Down = controlDown 
     self.controls_Left = controlLeft 
     self.controls_Right = controlRight 
     self.controls_Swing = controlSwing 

     #Player textures: 
     self.imgUp = movingUp 
     self.imgDown = movingDown 
     self.imgLeft = movingLeft 
     self.imgRight = movingRight 

     self.swingingUp = swingingUp 
     self.swingingDown = swingingDown 
     self.swingingLeft = swingingLeft 
     self.swingingRight = swingingRight 

     self.phase = 0 
     self.imgGroup = self.imgDown 
     self.image = self.imgGroup[self.phase] 

     self.rect = self.image.get_rect() 
     self.rect.x = x 
     self.rect.y = y 

     self.speed = speed 
     self.Swinging = False 

    def update(self, Scene): 
     moved = False 
     x = 0 
     y = 0 

     #Player controls 
     if self.controls_Up in Scene.keys_pressed_list: 
      self.imageGroup = self.imgUp 
      y = -self.speed 
      moved = True 

     elif self.controls_Down in Scene.keys_pressed_list: 
      self.imageGroup = self.imgDown 
      y = self.speed 
      moved = True 

     elif self.controls_Left in Scene.keys_pressed_list: 
      self.imageGroup = self.imgLeft 
      x = -self.speed 
      moved = True 

     elif self.controls_Right in Scene.keys_pressed_list: 
      self.imageGroup = self.imgRight 
      x = self.speed 
      moved = True 


     elif self.controls_Swing in Scene.keys_pressed_list: 

      Swinging = { 
       self.imgDown : self.swingingDown, 
       self.imgUp: self.swingingUp, 
       self.imgLeft: self.swingingLeft, 
       self.imgRight: self.swingingRight 
      } 

      self.imageGroup = Swinging[self.imageGroup] 

      self.Swinging = True 

      moved = True 

     if moved or self.phase != 0: 
      if moved: 
       self.phase = (self.phase + 1) % 4 
      else: 
       self.phase = 0 

      self.image = self.imageGroup[self.phase] 
      self.rect.x += x 
      self.rect.y += y 
      self.Swinging = False 

これは、プレイヤーのクラスを持つファイルです - ところで。スイングはWIPです。

私は移動できる(WASD)ウィンドウとプレーヤーを作ろうとしていますが、黒いウィンドウしか作成しません。私が知る必要があるのはなぜですか?

  • 私はこの質問はあなたのプレイヤーのスプライトがに追加するリストは、あなたのLevelで使用するのと同じリストではありません

+1

@OPあなたのコードは大きすぎます。黒色のウィンドウしかない場合は、すべてを取り除き、背景色を変更して1つの画像を追加することで開始します。 –

答えて

1

愚かではないのpython 3.6

  • 希望を使用していますインスタンス。ここを見てみましょう:あなたはどこにも使用されていない別のリストにあなたのPlayer_Type_AboveViewインスタンスを追加しながら、

    ... 
    import SpecialFunctions 
    
    Sprites = [] 
    
    NewScreen = SpecialFunctions.Level('NewProject', '2D-AboveView', (960, 540), Sprites) 
    
    Sprites = [] 
    
    ... 
    

    だからNewScreenだけで、これまで、常に空である第一のリストを、表示されます。

    2行目のSprites = []行を削除してください。

    また、スプライトを管理するリストの代わりにGroupを使用することをお勧めします(ほとんどの場合)。

  • 関連する問題