2016-11-09 12 views
0

私はまだPythonとプログラミング一般にかなり新しいです。私はシンプルなゲームを作るために私が使っている本と一緒にフォローしようとしています。私は私が言うことができる限り逐語的にプログラムをタイプしましたが、何らかの理由で私の船のイメージが表示されない限り、すべてがうまくいくように見えます。誰が問題が何であるかを見ていますか?私は対応するpygameバージョンでPython 3.4.3を使用しています。pygameを使って画面に画像を描画しようとしていますが、画面に何も表示されませんか?

#Creating a pygame window and responding to user input 

import sys 

import pygame 

def bg_draw(): 
    pygame.init() 
    screen = pygame.display.set_mode((1200, 800)) 
    pygame.display.set_caption("Alien Invasion") 

    while True: 
     for event in pygame.event.get(): 
      if event.type == pygame.QUIT: 
       sys.exit() 

       pygame.display.flip() 

bg_draw() 

#Setting the bg color 

def bg_color(): 
    pygame.display.set_caption('Alien Invasion') 

    bg_color = (230, 230, 230) 

    while True: 
     screen.fill(bg_color) 

     pygame.display.flip() 

bg_color() 


from settings import Settings 

def run_settings(): 
    #initializes pygame, settings, and screen object 
    pygame.init() 
    ai_settings = settings() 
    screen = pygame.display.set_mode((ai_settings.screen_width, ai_settings.screen_height)) 
    pygame.display.set_caption("Alien Invasion") 

    #start main loop for game 

    while True: 
     #redraws screen during each pass through the loop 
     screen.fill(ai_settings.bg_color) 
     pygame.display.flip() 

run_settings() 



#Creating the ship class 


class ship(): 
    def __init__(self, screen): 
     self.screen = screen 
     #load ship image and get it's rect 
     self.image = pygame.image.load('ship.bmp') 
     self.rect = self.image.get_rect() 
     self.screen_rect = screen.get_rect() 

     #start a new ship at bottom of screen 
     self.rect.centerx = self.screen_rect.centerx 
     self.rect.bottom = self.screen_rect.bottom 

    def blitme(self): 
     self.screen.blit(self.image, self.rect) 


#drawing the ship on the screen 


def run_game(): 
    pygame.display.set_caption("Alien Invasion") 

    #makes a ship 
    ship = Ship(screen) 

    #start games main loop 
    while True: 
     screen.fill(ai_settings.bg_color) 
     ship.blitme() 
     pygame.display.flip() 

run_game() 
+0

ようになり、同じクラス、settings()と同じとSettings()ではありません()'クラスと 'blitme()'方法 ? BTW 'ship()'と 'Ship()'は同じクラスではありません - あなたはエラーメッセージを受け取るべきです。エラーメッセージを表示するにはconsole/termina/cmd.exe/powershellで実行しましたか? – furas

+0

あなたは 'while while'ループが多すぎます。あなたは 'bg_draw()'で最初のループを実行し、決してそのままにしておきます。 – furas

答えて

0

while Trueループが多すぎます。 bg_draw()を実行して、最初にwhile Trueを実行し、決して離れることはありません。 ship()Ship()のほか

はあなたのコードは `船であるこの

# --- all import at the beginning --- 
import sys 
import pygame 
#from settings import Settings 

# --- constants --- (UPPER_CASE names) 

#WIDTH = 1200 
#HEIGHT = 800 
#GREY = (230, 230, 230) 

FPS = 30 

# --- classes --- (CamelCase names) 

class Settings(): 

    def __init__(self): 
     self.screen_width = 1200 
     self.screen_height = 800 
     self.bg_color = (230, 230, 230) 

class Ship(): 

    def __init__(self, screen): 
     self.screen = screen 
     #load ship image and get it's rect 
     self.image = pygame.image.load('ship.bmp') 
     self.rect = self.image.get_rect() 

     self.screen_rect = screen.get_rect() 
     #start a new ship at bottom of screen 
     self.rect.centerx = self.screen_rect.centerx 
     self.rect.bottom = self.screen_rect.bottom 

    def draw(self): 
     self.screen.blit(self.image, self.rect) 

# --- functions --- (lower_case names) 

def run_game(screen, ai_settings): 

    #makes a ship 
    ship = Ship(screen) 

    clock = pygame.time.Clock() 

    #start games main loop 
    while True: 
     # --- events --- 
     for event in pygame.event.get(): 
      # exit on close window 
      if event.type == pygame.QUIT: 
       return 

      # exit on press button ESC 
      elif event.type == pygame.KEYDOWN: 
       if event.key == pygame.K_ESCAPE: 
        return 

     # --- updates --- 

     #empty 

     # --- draws --- 

     screen.fill(ai_settings.bg_color) 
     ship.draw() 
     pygame.display.flip() 

     # --- FPS --- 

     #control game speed 
     clock.tick(FPS) 

# --- main --- (lower_case names) 

ai_settings = Settings() 

pygame.init() 

screen = pygame.display.set_mode((ai_settings.screen_width, ai_settings.screen_height)) 
pygame.display.set_caption("Alien Invasion") 

run_game(screen, ai_settings) 

pygame.quit() 
関連する問題