質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Pygame

Pygameは、ビデオゲームの製作用に設計されたクロスプラットフォームのPythonモジュールセットです。Pythonでコンピューターグラフィックスと音声を扱うためのライブラリが含まれています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2671閲覧

pyzrunの組み込みオブジェクトや組み込みクラスについてのエラー

nite

総合スコア1

Pygame

Pygameは、ビデオゲームの製作用に設計されたクロスプラットフォームのPythonモジュールセットです。Pythonでコンピューターグラフィックスと音声を扱うためのライブラリが含まれています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1グッド

0クリップ

投稿2021/06/23 16:26

編集2021/06/23 16:50

前提・実現したいこと

プログラミング初心者です
pygame zeroを利用して簡単なゲームを作りたいと思っています。

pygame zeroがインストールでき、早速簡単なコードを書こうと思っていたのですが、下記のような警告メッセージが出ました。実行自体は問題なくできているのですが、できれば消したいと思っています。

発生している問題・エラーメッセージ

"Actor" is not defined "screen" is not defined

該当のソースコード

Python

1import pgzrun 2 3WIDTH = 200 4HEIGHT = 200 5card = Actor('card', center=(100,100)) 6 7def draw(): 8 screen.clear() 9 card.draw() 10 11def update(): 12 card.x += 1 13 14pgzrun.go()

試したこと

特になし
動くことには動いているので、何をすればいいのか分からないです。 

補足情報(FW/ツールのバージョンなど)

環境
macOS Big Sur ver11.4
python 3.9.0でVScodeを使用しています。pygame zeroのバージョンは1.2.1です。

teamikl👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

"Actor", "screen" は、pgzrun の組み込みクラス・オブジェクトで、
エディタの静的コードチェックが警告を出してるのだと思います。

組み込みのクラス・関数については、pgzero.builtins から import する事ができます。

from pgzero.builtins import Actor


screen は特殊なケースで、
pgzrun.go() 実行後に生成される為、事前に import する事はできません。

場所は、pgzero.screen 内のグローバル変数 screen として定義されてますが、
ファイルの先頭を実行してる時点では import しても None になります。

回避策としては、組み込み変数の警告をオフにする方法
特定の変数のみ警告を除外するように設定できます。

pgzero flake8 and other linters complain about custom pgzero built-ins #61

コメントにpyflakes での設定例が載ってます。

  • 具体的な方法、VScode での設定方法は別途調べて下さい。
  • ソースコードの静的検査は複数あるので、ツール毎に設定方法は異なります。

以下の名前を警告を出さないように設定します。
Actor,Rect,ZRect,animate,clock,exit,images,keyboard,keymods,keys,mouse,music,screen,sounds,storage,tone

デメリットとしては、多分(未検証です)、
これらのオブジェクトではメソッドの補完等のサポートが効かなくなります。
(組込オブジェクトは、実行時に追加される為、実行前のソース解析では把握できない)

明示的に import する方法が推奨ですが、screen の扱いのみが課題。
上記リンク 開発サイトで報告されてますが、現時点では Open なので未解決の問題です。

投稿2021/06/23 21:30

teamikl

総合スコア8760

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nite

2021/06/24 10:03

回答ありがとうございます。 Actorクラスに関しては教えていただいたコードを入力することで解消できました。 screenは少し特殊なんですね、とても勉強になりました。 とりあえず現時点では必要になったクラスなどをbulidinからimportして作業を進めていきたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問