独学プログラマー10章読んでみた:ハングマン
こんにちは〜〜!
この章は今までの知識を一つに
まとめる目的でハングマンという
文字列を使った古くからある
ゲームを作ろうという章でした。
ハングマンってなに?って思ったのですが
ある文字列( 例えば"beer"など )を正解とし
それを当てるゲームです。
間違える度にある絵がどんどん出来ていって
吊るされた人の絵が完成してしまうと
負けです。。こわ笑。。
コードはすでに書かれていてそのコードの
説明が丁寧にしてくれていました。
はじめのコード
はじめのコードです。
hungmanという関数内で行なっていること
- wrong( 間違えた回数 )に0を代入
- stagesにリストで吊るされている人の絵を代入
- rlettersに正解文字列をリストとして代入
- boardに正解文字列の長さだけ"_"を代入
- winにFalseを代入
- ”Welcome to hangman !!”と出力
このstagesの絵が全部出てきたら負けです。
ゲーム中のコード
これはゲーム中に行うこと書いたコードで
絵の行数( len(stages) )-1より間違えた回数( wrong )が
少ない間while文で中の処理を回しています。
#( 1 )
まず見やすいように改行し、"guess a word :"で
ゲームしている人に文字を入力してもらいます。
#( 2 )
if文でその文字がrlettersの中にある時にindexメソッドで
その初めに出てくる場所をcindに代入し
boardには正解の文字をその場所に表示するため
入力文字をboardの正しい場所に代入します。
( "_ _ _ _" , "b _ _ _" , "_ e e _" etc...)
そして同じ文字が2回以上ある文字列を正解に
している時のためにその文字を"$"に変えます。
( indexメソッドは" 初めに "出てくる場所を教えてくれる )
else文でその文字がrlettersの中にない場合
wrongを+1します。
#( 3 )
broardを出力し、stagesを0からwrong+1まで
改行しながら出力します。
#( 4 )
broardの中に"_"が無くなったら"You Win !!"と
出力し正解の文字列を出力しwinをTrueにし
breakでwhile文を抜けます。
最後のコード
while文を抜けた時に、winがTrue出なければ
(Falseのままだったら)、stagesを全て出力し
"You Lose !!"と出力します。
終わり
コードを見てなるほどなるほど〜と書いてたら
できるけど、何もなしで作ってと言われたら
多分まだ書けないだろうなぁと思いました。
まだまだ道のりは長そうです。
コードブルーを今日見てきて
頑張ってる人ってかっこいいなぁと
思ったので私も頑張ってかっこいい感じに
なりたいなぁ。。
こうやって自分で流れをまとめて書くことで
ブログ書くの時間かかるけど
自分の理解にも繋がるはず。。
次からは第2部です。。