programing sisters 姉

プログラミングを学習するブログです

独学プログラマー10章読んでみた:ハングマン

 

こんにちは〜〜!

この章は今までの知識を一つに

まとめる目的でハングマンという

文字列を使った古くからある

ゲームを作ろうという章でした。

 

ハングマンってなに?って思ったのですが

ある文字列( 例えば"beer"など )を正解とし

それを当てるゲームです。

間違える度にある絵がどんどん出来ていって

吊るされた人の絵が完成してしまうと

負けです。。こわ笑。。

 

コードはすでに書かれていてそのコードの

説明が丁寧にしてくれていました。

 

 

はじめのコード

 

f:id:yoshinon444:20180910162854p:plain

 

はじめのコードです。

hungmanという関数内で行なっていること

  • wrong( 間違えた回数 )に0を代入
  • stagesにリストで吊るされている人の絵を代入
  • rlettersに正解文字列をリストとして代入
  • boardに正解文字列の長さだけ"_"を代入
  • winにFalseを代入
  • ”Welcome to hangman !!”と出力

このstagesの絵が全部出てきたら負けです。

 

 

ゲーム中のコード

 

f:id:yoshinon444:20180913161421p:plain

 

これはゲーム中に行うこと書いたコードで

絵の行数( 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文を抜けます。

 

 

最後のコード 

 

f:id:yoshinon444:20180913161447p:plain

 

while文を抜けた時に、winがTrue出なければ

(Falseのままだったら)、stagesを全て出力し

"You Lose !!"と出力します。

 

 

 終わり

 

コードを見てなるほどなるほど〜と書いてたら

できるけど、何もなしで作ってと言われたら

多分まだ書けないだろうなぁと思いました。

まだまだ道のりは長そうです。

 

 コードブルーを今日見てきて

頑張ってる人ってかっこいいなぁと

思ったので私も頑張ってかっこいい感じに

なりたいなぁ。。

 

こうやって自分で流れをまとめて書くことで

ブログ書くの時間かかるけど

自分の理解にも繋がるはず。。

 

次からは第2部です。。