keito94 さんが書きました:>>asdさん
でも、freamxとfreamyをNoneにすると、No.22のエラーが出るとという意味で言ったのですが…。
えっ、それを直すためのヒントはすでに書き記しているのですが…
と、思ったらすでにその部分は直されていたみたいですね。
keito94さんの手元で直されていても、私はエスパーではないのでそれを透視することができません。
なのでここに明言してくれないと直されていることは分かりようがありません
それで、if判定は直ったものの今度は別のエラーが出ているのでkeito94さんはそのエラーを直したいんですよね?
であれば、考えるべきことは沖さんも提示も参考にしていただければと思いますが、
1.framex = None, framey = Noneの時にどこの処理を行っているのか
→エラーログにヒントというか答え(エラー発生場所)があります
コード:
File "C:/Users/keito940/PycharmProjects/PacMan/PacMan.py", line 49, in __init__
width = self.image.width
2.1の場所でなぜエラーとなるのか
→同じくエラーログに答えがあります
コード:
AttributeError: 'pygame.Surface' object has no attribute 'width'
英語で書かれていますが、「pygame.Surfaceオブジェクトにwitdhなんて属性はないよ」と言われています。
if判定でelse節に分岐した際はこんなエラーは出なかったのに、なぜでしょうね?
同じwidthを指定しているはずなのに…お?
-if節のwidth指定部分
コード:
self.image = image_load(filename)
# 画像を分割するかどうかをチェックする。
if (framex and framey) is None:
width = self.image.width
-else節のwidth指定部分
コード:
else:
self.imageList = split_image_load(self.image,framex,framey)
width = self.imageList[0].get_width()
並べてみるとwidthの指定部分が違っていませんか?
そもそもif節ではimage、else節ではimageList[0]を対象に処理しているので対象となるオブジェクトも別物のようですね?
この違いを基にどうすればよいのかを考え、調べ、試してみてください。
オフトピック
沖さんも記載している通り、デバッグとはエラーや期待した動作と違う動作があった場合に、
・どこがその原因になっているのか
・なぜその部分が原因になっているのか
・ではどのように直したら期待した動作になってくれるのか
・直してみて期待した動作になっているか
・可変部分がある場合、他の条件でも問題がないか
を繰り返し行うことを言います。
なので前の投稿のように「エラーになった!」の報告だけではデバッグにはならないのです。
エラーが出たら上記の「なんで?どうして?どうしたらいいのかな?」を自分なりに考えてみてください。
そのうえで直してもうまくいかない場合は上記の内容を提示した上で質問してみるとよいと思います。