前回、
V言語の標準入力として、入力を受け付けてプログラムにデータを渡すことが出来ました。
これで、入力と出力が出来るようになったので、ここまでのまとめとして、超簡単なゲームを作ります。
それは「じゃんけんゲーム」です。
簡単すぎますか?
もし簡単すぎたらランキング機能やコンボ機能。通信対戦などお好きなようにカスタマイズしてみてください。
フローはこんな感じにしましょう。
- 「じゃんけん...(1.ぐー,2.ちょき,3.ぱー)」と表示して
- 数字1〜3を入力してもらうことにします。
- それ以外が入力された場合、「数字の1か2か3を入力してね。」と表示して2.へ
- ランダムでNPCの手(1,2,3)を決めて
- 「あなた:(手) (手):NPC」 と表示して
- 1は2に勝ち、2は3に勝ち、3は1に勝ち、同じ数字ならあいこ
- 「あなたの勝ち」 or 「あなたの負け」 or 「あいこで...(1.ぐー,2.ちょき,3.ぱー)」と表示して
- あいこなら2.へ戻る
- 終了
さっそく組んでみましょう。
// day7.v
import os
// 1. 「じゃんけん...(1.ぐー,2.ちょき,3.ぱー)」と表示して
println("じゃんけん...(1.ぐー,2.ちょき,3.ぱー)")
// 2. 数字1〜3を入力してもらうことにします。
line := os.get_line()
ここまでは問題ないですね。
さて、入力に[1,2,3]以外が入力されたと判定するにはどうしたらいいでしょうか。
入力データの比較
a. 数値に変換して比較する。
b. 文字として比較する。
この2パターンかと思います。
aの場合、
でしょうか。数値に変換できない文字を入れた場合はどうなるのでしょう。
リファレンス を見てみましょう。え?書いてない。後日ソースを見るとして、これはいけない。とりあえず動作を見る限り、変換できないものは0になるようです。
これでは0が入力されたときの判定ができません。今回の要件で0はないので、単純にエラーとできますが、設計時に気をつける必要がありそうです。
もしくは無理やり、数値変換したものを再度文字列にして比較するみたいなことをして、一緒なら入力データ。違うならエラーという分岐が必要そうです。
どなたか解決策を知っている方いらっしゃいましたらコメントください(=人= )
bの場合、単純ですね。
そのまま入力データを比較すればいいのです。
さて、比較の方法については調べていませんでした。きっとif
とかswitch
みたいなものがあると思います。