不惑にしてまだ何者でもない者のブログ

Arduino関連、Raspberry Pi関連、プログラミング学習

『きれいなPythonプログラミング』を読書中:7章まで読了

2023-05-31 00:05:46 | Python
いま、『きれいなPythonプログラミング』という本を読書中。
 
これまでに7章まで読んだ。
ここまでの印象は実際に手を動かしてプログラムを書くというよりは、
用語の定義や決まり事に関する解説が多く、読み物という印象。
7章は特にそうかも。

Pythonは使いやすいから一番好きな言語なので、
少し頑張ってちゃんと全部読んでいこう。

Ubuntu 20.04でanaconda自体のアップデートができなかったときの対処法メモ

2020-12-18 23:01:09 | Python
Ubuntu 20.04にanacondaをインストールして、
base環境でanaconda-navigatorを呼び出して使っているのであるが、
base環境のパッケージが全然アップデートができないので、
とりあえずcondaをアップデートとしたところ、
それもできなかったので、対処法をメモ。

最終的に、以下のコマンドで解決。
conda update -n base conda -c anaconda

よく見かけるのは、
conda update -n base conda
だが、これではだめだった。

次に書いてあるのは、
conda update -n base conda -c defaults
だが、こちらもだめ。

参考:
Condaアップデートできない問題解消方法:
"conda update -n base conda" is not updating conda:


「ゲームを作りながら楽しく学べるPythonプログラミング」をやってみた(その4:saturn_voyager)

2020-08-17 21:45:35 | Python
田中 賢一郎氏著「ゲームを作りながら楽しく学べるPythonプログラミング」
を写経して作成したゲームのつづき(その4)である。

※プログラム(スクリプト)は著書に示されたURLからダウンロード可

 
このsaturn_voyagerというゲームは、疑似3Dとなっており、
迫りくる隕石群を避けるというものになっている。
(saturnということなので、土星の輪っかに迷い込んだという設定か?)



隕石を避けるだけ(ビームとかは出ない)の単調な内容で、
ゲームとしては正直、あまり面白くはない。

隕石との当たり判定も分かりづらく、
当たりに行こうとして当たらず、
気を抜くと当たってしまっているという感じである。



ただ、プログラムとして、100行程度でこのようなゲームが作れるというのが、
また、興味深い。

ちなみに、ダウンロードしたプログラムには、使われていないmp3やpngファイルが含まれていているのだが、
実際どのように使おうとしていたのか、気になるところだが。

発展としては、これらをプログラムに組み込むといったところか?

「ゲームを作りながら楽しく学べるPythonプログラミング」をやってみた(その3:mine_sweeper)

2020-08-13 22:45:04 | Python
田中 賢一郎氏著「ゲームを作りながら楽しく学べるPythonプログラミング」
を写経して作成したゲームのつづきである。

※プログラム(スクリプト)は著書に示されたURLからダウンロード可

 
マインスイーパーって意外にハマって、何時間もやってしまうゲームであるが、
これがPythonで作れるってのは驚きである。

100行を超えるなかなかの大作ではあったが、
本にあるとおりにコードを打ち込んでいけば問題なく作れた。

ただ、私の場合は、Kindleで表示させているのだが、
どうやらKindleだと掲載されているソースコードのインデントがずれてしまうらしく、
インデントが意味を持つPythonの場合に、なかなかこれが厄介であった。

起動すると次のような画面が表示される。


このマス目のどれかを適当に選んで、左クリックすると、
爆弾(mine)がなければ、マス(タイルというらしい)がどんどん空いていくことになるのは、通常のマインスイーパーと同様である。

しかし、このマインスイーパは、かなり親切設計になっていて、
周囲に埋まっている爆弾を数を表す数字を適当に左クリックしていけば、
爆弾のないマスが勝手に開いていってしまう!!

どんなに爆弾の数を増やしても、最初で爆弾を引かない限り、
簡単にクリアできてしまうのだ。


これじゃあちょっと、ゲームとしてはどうかと思うが、
やはりPythonでマインスイーパーを比較的簡単に作れてしまうということに、
改めて感動を覚える。
(あまり理屈までは理解できていないが・・・)

Ubuntuにデフォルトで入っているGNOMEマインスイーパーであれば、
爆弾が埋まっているだろうと推測される箇所に旗を立てていれば、
その周辺の数字をクリックすることで明らかに爆弾がないところは、
勝手に開くようにはなっている。


ただ、その推測が間違っていると、クリックした瞬間に爆弾が炸裂する場合があるので、

Pythonで作ったマインスイーパーも旗のギミックを実装するというのが、
発展として想定されるだろう。
私は無理だが・・・

「ゲームを作りながら楽しく学べるPythonプログラミング」をやってみた(その2:Cave)

2020-08-07 21:31:54 | Python
田中 賢一郎氏著「ゲームを作りながら楽しく学べるPythonプログラミング」
を写経して作成したゲームのつづきである。

ちなみに、プログラム(スクリプト)は写経しなくても、
著書に示されたURLからダウンロードすることができるので、
すぐに実行することも可能である。

 
Pythonのプログラミング環境が整い、
ようやくゲームが作れると思ったら、
意外に基礎編が6章からなり、Pythonの基礎がみっちり叩き込まれることになる。
Pythonに関しては、ちょいちょい使ってはいたが、
よく知らなかったことについても書かれており、結構勉強になった。

そして、ようやく最初のゲームCaveという横スクロールゲームを写経して実行してみた。

真ん中のスペースシャトルをスペースキーで操作するゲームだ。
スペースキーを押しっぱなしにすると、上方向に加速度がかかり、
スペースキーを離すと、下方向に加速度がかかるようになっている。
上や下の緑の部分(これがCaveつまり洞窟の壁)にぶつかるとゲームオーバーで、
スペースキーを押す長さで壁に当たらないように調整する。
ぶつからずに長く進むほど、右上のScoreも増えていく。


このCaveは、実行と同時にゲームが始まるので、
最初からスペースキーを押しておかないと、
すぐに下に落ちてゲームオーバーとなってしまう。
そして、ゲームオーバーになったらWindowを閉じて、
再度Pythonスクリプトを実行しないといけない。

とはいえ、Pythonでこのようなゲームが作れるのがわかったので、
なかなか楽しいものである。

今後のアレンジとしては、リスタート機能を付けてみるなどすれば、
より勉強になるだろう。