2017-12-19 26 views
-1
import pygame 
import sys 
from pygame.locals import * 


DISPLAY_SURF = pygame.display.set_mode((640,480)) 
#Sets the resolution to 640 pixels by 720 pixels 

class Game: 
    def __init__(self): 
     pygame.init() 
     self.FPS = 60 
     self.fps_clock = pygame.time.Clock() 
     self.surface = pygame.display.set_mode((640, 480)) 
     pygame.display.set_caption("The Hunt") 
     img = pygame.image.load("Graphics/background.png") 
     self.surface.blit(img) 
     #This class sets the basic attributes for the window. 
     #The clock is set to 60 and the name of the window 
     #is set to The Hunt which is a working title for my project 


    def run(self): 
     while True: 
      pygame.display.update() 
      self.fps_clock.tick(self.FPS) 
      self.process_game() 

      #This updates the window display to refresh every clock tick 


    def process_game(self): 
     for event in pygame.event.get(): 
      if event.type == QUIT: 
       pygame.quit() 
       sys.exit() 


game = Game() 
#This creates an instance of the class Game which gives all the attributes 
# and behaviours to this instance 
game.run() 
#Calling this function generates a window with the attributes defined. 

私はいくつかの助けが必要です。私はすでにそれが同じフォルダにあるかどうかをチェックしています。そのファイルは間違いなくpngであり、すべてのフォルダ名と送り先が正しく綴られています。私はどんな提案にも開放しています。私は何が間違っているのか分かりません。パイゲームウィンドウを開くコード

+2

ようこそスタックオーバーフロー!デバッグの助けを求める質問(「なぜこのコードは動作しませんか?」)には、目的の動作、特定の問題またはエラー、および質問自体の中でそれを再現するのに必要な最短コードが含まれていなければなりません。明確な問題文がない質問は、他の読者にとって有用ではありません。参照:[mcve]を作成する方法。あなたの*質問*を改善するために[編集]リンクを使用してください - コメントでより多くの情報を追加しないでください。ありがとう! – GhostCat

+0

あなたはいくつかのコードと質問のタイトルを載せます。あなたは、あなたのコードが何をしているべきか、あなたが実際にそれを観察していることを私たちに語っていません。 – GhostCat

答えて

0

私はこの質問に答えるつもりですが、実際にはスタックオーバーフローのためには良いことではありません。このサイトでは、誰もあなたのために大量のコードを読み込もうとしないので、より具体的で詳細にする必要があります。手始めに

:私はそれがとにかくです...ここにピックアップ私は(これらのいくつかは、ベース意見、ご質問は持って答えてはいけません、何かしている)が、固定することができると思ういくつかのことをただしましたクラスを構築するときに、クラス名の後ろに括弧を使用します。たとえそれが別のクラスを何かを継承しないとしてもかまいません。ですから、これまでゲームのクラスを構築する行を変更:このコードについて

class Game(): 

2つ目はなぜあなたは、ゲーム()クラス内でpygameの窓の表面を作成するつもりならば、私は理解していないということですあなたのコードの始めに別のウィンドウを作成しています。理由がある場合は、コード内のコメントで説明してください。

最後のことは、より意見に基づいています。私はこのようなPygame GUIアプリケーションを何人作成するのか分かりませんが、コードをよく理解できるようにクラスを使用しないほうが簡単です。 PygameのGUIを作成するときには、ウィンドウを定義してからスプライトを定義してから、メインループをWhileループで実行します。ここで私は通常、あなたのプログラムを構築する方法を次のとおりです。

#import pygame 
import pygame, sys 
from pygame.locals import * 

#Initialize pygame and define colours 
pygame.init() 
white = 255,255,255 

#Sets the resolution to 640 pixels by 720 pixels and caption for pygame window 
DISPLAY_SURF = pygame.display.set_mode((640,480)) 
pygame.display.set_caption("The Hunt!") 

#Create a clock object 
clock = pygame.time.Clock() 
FPS = 60 

#Define a variable to refer to image 
image = pygame.image.load("download.jpg") 

#Start main loop 
while True: 
    for event in pygame.event.get(): 
     if event.type == QUIT: 
      pygame.quit() 
      sys.exit() 

    DISPLAY_SURF.fill(white) 
    DISPLAY_SURF.blit(image,(0,0)) 
    pygame.display.update() 

スプライトを作成するときに、私が使用するクラスを行いますので、私はそれの複数のインスタンスを作成するだけでなく、私は1つのすべてのスプライトに実行したい機能を維持することができます場所。これをWHOLEプログラムで行うのはうまくいきますが、Pythonはオブジェクト指向であるため、もっと「pythonic」だと思いますが、このようなものではまだ不要です。ここに私が個人的に優れたチュートリアルであることを見つけるteaches pygame in a similar way to how I code itという参照があります。

多くの人が、このコードをmain()関数に入れて実行しています。これは広く使われていて、受け入れられています。

関連する問題