bounddot2 動画 と、苦労した点

先日bounddotの実行動画の最終形をアップロードしました。
今回は、bounddot2と称して止まっている円が3つのバージョンの動画をアップします。

ここから下は備忘録となります。

昼頃いったん完成しましたが、
映像キャプチャー用に調整していたら、
バグが出てしまい、
なかなかとれない状況になりました。

これも昔の投稿となりますが、
VS Code を使うと書きました。
しかし敷居が高いためうまくゆかず。
参考図書の電子書籍も内容が分からないのです。

ですので、昔ながらのPython 3のprint関数で出力し、バグをとりました。
もう慣れっこです。

問題点はこの1行です。
× for i in range(self.maxi,0,-1):
〇 for i in range(self.maxi-1,-1,-1):

正解の方で、
2か所変更していますが、
self.maxi-1
の方はエラーが出たので、すぐにバグはとれました

しかし、その次の0を-1にするのに
かなり時間がかかってしまったのです。

for文を完全に理解していなかったのが原因です。
コマンドプロンプトにエラーが出ないので、キャプチャー用に付け足した部分
つまり、違う部分が悪いと思い込んでいました。
実際の処理は、
if not (True in self.disp_questionmark):
としていて、
この行自体は間違っていませんでした。
(その証拠に、ひとつ前のバージョンでは動作しています。)

問題点は、
self.disp_questionmark[0]
がTrueのまま、無限ループしていたところでした。(多分)

ですので、上に書いた、
-1を下限にすることで、
i が、0の時も処理するようにできます。
この手のエラーは昔も出ていたと思いますがよく覚えていません。

とにかく、0まで添え字を演算したいときは、
-(0+1)
で、イコール -1となります。
詳しくは、Python 3の書籍の
for文の項目
などを見てください。

少し手を加えようと思ったのですが、
結構な時間かかってしまいました。

それでは、やっと動画をアップします。

bounddot2_No3.py


追記

今日も修正しました。
内部的にはかなり変更しましたが、
見た目があまり変わっていないので動画のアップロードはしません。

主な変更点

今までは
if 円1衝突判定
if 円2衝突判定
if 円3衝突判定
としていました。
これを、
if 円1衝突判定
elif 円2衝突判定
elif 円3衝突判定
に変更しました。
理由は、
今回のデモンストレーションでは
円に、「一度に重複して衝突する」シチュエーションがないからです。

参考文献

円の衝突判定部分ですが、
自力ではここまで、
できません。
参考図書を書いておきます。
理系の高校生以上が対象かもしれません。
よく調べてから買ってください。
自分は電子書籍のバージョンを持っています。
Python ゲームプログラミング
知っておきたい数学と物理の基本
田中賢一郎 著
インプレスR&D [ NextPublishing ]

END

コメント

このブログの人気の投稿

黒に原色は映える?!

Microsoft数独はアンインストール、FreeCellを230円/月支払ってプレイしています

③色付け(光源追加)