にゃんおぺ育児

日々成長していく子供たちとの今を忘れたくないからはじめたブログ。

【Udacity Week 7 Progress】Python で Rock, Paper, Scissors ゲームを作った

今日は7時に起きました。。おい。

Sleep Cycle で快適に目を開けることはできましたが、
そのあと自分に勝てるかどうかが勝負ですね。

昨晩は Python の課題作りにはまって一人ポチポチしていたら0時をまわってました。
という言い訳を自分にしつつ。。

Udacity の Intro to Programming、いよいよ Python の授業は終了です。
これまで習ったことの集大成としてじゃんけんゲームを作っています!

 starter_code.py としてゲームの大枠はすでに用意されており、そこに少しずつプロジェクトの仕様を加えていきます。

・コンピュータープレーヤーの戦術
タイプミス時の動作
・ゲーム終了の条件
・ゲームのスコア発表 ...など

課題の仕様にのっとっていれば各自好きにアレンジすることができます。
私はゲームのはじめにプレイモードの選択をしたかったので自分なりに function を追加しました。

f:id:nyagemitsu:20181227152521p:plain

Rock, Paper, Scissors!

一応想定通りに動くようになったものの、メンターにアドバイスをもらっている段階です。ドキドキ

◆一番難しかったこと

1. ユーザーのタイプミスがあったら再入力させる while ループの作成
2. ユーザーが "quit" と入力したらゲームを強制する方法作成

1. ユーザーのタイプミスがあったら再入力させるループの作成
始めは、ユーザーのインプットが特定の文字列でない場合はプロンプトを繰り返し表示する条件を下記のようにしていました。(move にインプットを入れる)
while (move != 'rock') or (move != "paper") or (move != "scissors") 
が、これでは一向にループから抜け出せず。。。
or を使用した場合、ユーザーの正しいインプット(例. rock)で一つの条件が FALSE となるけれども、その他の条件は TRUEであるため、 結果 while True となるので抜け出せなかったと理解しました。

なので、
while (move != 'rock') and (move != "paper") and (move != "scissors") 
に変更してループから抜け出すことができました。 

2. ユーザーが "quit" と入力したらゲームを強制する方法の作成
これは、オプショナルの課題でしたがやってみたかったので挑戦しました。
1の条件に break を入れてみることにしました。
if 'quit' in move:
   break
これで while ループからは抜け出せます。
ただし、呼び出し元のコードは実行され続けるので強制終了できない状態になりました。
全体終了なるものはないんでしょうか。。メンターに聞いてみよ。
とりあえず、ここでは返り値が None の場合にはゲームを終了するように呼び出し元を変更しました。

動画、クイズ、演習で小さなステップアップしてきましたが、
やはり動くものを一から作るのは難しいです。
まだまだ身についてはいないし、荒削りではありますが、着実に一歩前進しているといえます。

プログラミング初めてよかったな。

ちびたんとおまめにゲーム作ってあげたい。