0

コード:

import pygame, sys

x = 640
y = 480
screen = pygame.display.set_mode([x,y], pygame.RESIZABLE | pygame.OPENGL)

while True:
    x, y = pygame.Surface.get_size()
    for event in pygame.event.get():
        if event.type == pygame.QUIT or event.type == pygame.K_ESCAPE:
            pygame.quit()
            sys.exit()

エラー

Traceback (most recent call last):
  File "C:/Users/Mendel/My programs/game Project/test.py", line 8, in <module>
    x, y = pygame.Surface.get_size()
TypeError: descriptor 'get_size' of 'pygame.Surface' object needs an argument

ドキュメントを調べると、エラーはないはずだと書かれています

4

3 に答える 3

2

screen代わりにオブジェクトを使用する必要があります:

x, y = screen.get_size()

ドキュメントによると、それは Surface オブジェクトを返します

pygame.display.set_mode()
Initialize a window or screen for display
set_mode(resolution=(0,0), flags=0, depth=0) -> Surface
于 2013-04-19T18:47:51.053 に答える
1

クラスで通常のインスタンス メソッドを呼び出すことはできません。そのクラスのインスタンスで呼び出す必要があります。

では、クラスのインスタンスを取得するにはどうすればよいでしょうか。一般的には、 のようなことを行ってインスタンスを作成するかmy_instance = MyClass(my_params)、それを実行するヘルパー関数を呼び出します。

…に関連する詳細については、チュートリアルを完了pygameする必要があります。pygameサーフェスは、画面またはウィンドウのメインの「描画キャンバス」から読み込んだ画像まで、何でもかまいません。ここで使用しようとしているサーフェスが明確でないため、取得方法を説明できません。

A Newbie Guide to pygameから始めて、公式のチュートリアルに進むこともできます。


* これは正確ではありません。インスタンスの代わりにクラスのメソッドを呼び出すことができますが、最初の ( ) パラメータとしてインスタンスを明示的に渡す必要がありselfこれを行うことはほとんどありません。いずれにしても、「引数が必要です」というやや誤解を招くエラー メッセージが表示されるのはそのためです。

于 2013-04-19T18:55:35.960 に答える
-1

構文が間違っています。変数ではなく、Surface で get_size を呼び出しています。コードは次のようになります。

variable = pygame.Surface(variable.get_size())

したがって、これを画面変数で呼び出します。これをフォーマットする方法は、変数が pygame 変数であり、Surface ではない場合 (スクリーン変数と同様) でした。変数に応じてコードのフォーマットが少し異なる方法を確認するには、 pygame の例を参照してください。

于 2013-04-19T18:53:52.780 に答える