記事にアフィリエイト広告を含みます

PowerShellを使ってみませんか?(その2)- 単純なゲームを動かす(読者投稿:近郊ラピッドさん)

PowerShellで単純なゲームを動かす
近郊ラピッドです。閲覧してくださりありがとうございます。前回の記事ではPowerShellを電卓やサイコロにしました。今回はPowerShellでごく単純な数あてゲームのスクリプト(機械語への変換処理が不要で、すぐに実行できるプログラムのコード)を動かしてみようと思います。

0.はじめに

WindowsにはPowerShellの他にも昔から「コマンドプロンプト」というソフトウェアが付属しています。

PowerShellで単純なゲームを動かす

クリックで拡大します

上の画像を見ると分かる通り、この2つは見た目では大した違いはありません。しかしPowerShellは他の近代的なプログラミング言語に似た文法でスクリプトを書くことができます。この点がコマンドプロンプトとの大きな違いの一つです。

今回の記事ではプログラミングの基礎やスクリプトの文法についての詳しい説明はしませんが、Windows標準の環境でもこんなことができるという点が伝われば良いな、と思います。

1.動かすゲームの概要

今回動かすゲームは、PCがランダムに設定した数が何かを当てるというものです。数の範囲は1から255で、当てる数は整数です。以下にゲームの流れを示します。

今回動かすゲームの流れ
1: まず回答者が当てずっぽうに答えを入力して回答する。
2: もし当たればそこで終了し、外れたら答えた数字よりも正解の数字が大きいか小さいかを表示する。
3: 回答者はその情報を元にまた回答し、2に戻る。

上記の動作をするように、PowerShellのスクリプトを作りました。

2.スクリプトの紹介

今回動作させるスクリプトを紹介します。

cls #画面消去
$input_answer=0 #入力を受け取る変数
$answer=0 #回答を入れる変数
$correct_answer=Get-Random -Minimum 1 -Maximum 256 #正解をランダムに選ぶ
$trycount=1 #何回入力したかを数える変数
Write-Host “1から255までの整数の中からランダムに数を決めました。`r`n当ててみてください。” #メッセージを表示する
while ($true){
#正解になるまで無限ループ
$input_answer=Read-Host “回答を入力してください” #回答を入力させて代入する
if ([int]::TryParse($input_answer,[ref]$answer) -eq $false){
#入力を一旦数値に変換する。もし失敗すれば数値以外が入力されていると分かる。その場合はもう一度入力させる
continue #whileの行まで戻る
}
if ($correct_answer -eq $answer){
#正解が入力と等しい場合 -eqは「等しい」
Write-Host “正解です!答えは${correct_answer}でした。`r`n” #${変数名}で変数の内容を埋め込める。「`r`n」で改行できる
break #無限ループから脱出する
}
elseif ($correct_answer -lt $answer){
#正解が入力より小さい場合 -ltは「小さい」
Write-Host “違います。正解はあなたの回答よりも小さい数字です。`r`n”
$trycount++ #入力回数を1つ増やす
}
elseif ($correct_answer -gt $answer){
#正解が入力より大きい場合 -gtは「大きい」
Write-Host “違います。正解はあなたの回答よりも大きい数字です。`r`n”
$trycount++
}
#ここまでが無限ループの中身
}
Write-Host “あなたは${trycount}回目の回答で正解しました。”

このスクリプトでは回答を入力させて正解と比較し、合っていたら何回回答したかを表示して終了し、間違っていたら正解が回答より大きいか小さいかを教えて回答数を1つ増やし、また回答の入力に戻るという処理を行っています。

他の有名なプログラミング言語の文法に比較的近いため、他の言語に触れたことのある方なら理解しやすいと思います。whileなどの他でもよく見る制御構文もあります。(ただ比較が独特で、UnixやLinuxのtestコマンドに似ています。この辺りはUnixやLinuxのシェルスクリプトを意識している感じがします)

3.スクリプトを動かす方法

「2.スクリプトの紹介」に書いてあるスクリプトですが、コピーしてPowerShellに貼り付けるには長いスクリプトです。

そこで今回は「Windows PowerShell ISE」というPowerShellのスクリプトを作って実行できるソフトウェアを使って実行します。少し回りくどいですが、Windowsでは初期状態ではスクリプトをファイルから実行できないのでこうしています(「Set-ExecutionPolicy RemoteSigned」をPowerShellで実行して変更する方法もありますが、セキュリティなどの問題もありますので、ちょっと試すだけならISEを使う方が良いと思います)。

PowerShell ISEの起動方法を2通り紹介します。

PowerShellで単純なゲームを動かす
・その1: スタートメニューからWindows PowerShell ISEを選ぶ(画像はWindows10のものです)

PowerShellで単純なゲームを動かす
・その2: 「Windowsキー+Rキー」で「ファイル名を指定して実行」のウィンドウを出し、powershell_iseと入力する

上記の操作により、PowerShell ISEが開きます。PowerShell ISEを開いたら、下記の画像のような「スクリプト」横の下矢印をクリックします。

PowerShellで単純なゲームを動かす
するとスクリプトを編集するエディターが開きます。

PowerShellで単純なゲームを動かす

クリックで拡大します

ここに先ほどのコードを貼り付けて、緑の実行ボタンをクリックします。

PowerShellで単純なゲームを動かす

クリックで拡大します

スクリプトが動きました。

4.スクリプトを編集する

PowerShell ISEを使うと、編集したスクリプトの動作をすぐに確認できます。

PowerShellで単純なゲームを動かす

クリックで拡大します

上記の画像では数字の範囲を1から1023に変更して実行しています。実行結果から編集の結果が反映されているのが分かります。このように、PowerShell ISEを使うとスクリプトの動作を確認しながら編集することができるので便利です。

PowerShellで単純なゲームを動かす
また途中まで入力すると候補を表示するという機能も付いています。コマンドや変数名を補完することもでき、編集するのに大変便利です。

5.終わりに

今回はPowerShell ISEでスクリプトを動かして単純なゲームをしてみました。とても参考になるサイトのリンクを載せますので、PowerShellのスクリプトを書いてみたいという方はご覧ください。

特に、他のスクリプト言語に触れたことのある方ならすぐに基本的な文法を習得できると思います。

「Windows PowerShell 入門」連載一覧:CodeZine

PowerShellの登場によってWindowsのコマンド操作の環境は大きく変わりました。汎用性の高く、分かりやすいスクリプトを書くことができるという点が大きな魅力です。コマンドプロンプトを今まで使っていた方は、PowerShellの使用も検討してみてください。

6.関連リンク

PowerShellを使ってみませんか? 記事一覧

ウインタブでは読者投稿を募集中です。テーマはご自由にお決めいただいて結構です。例えば「古いノートPCを改造してみた」「5年間使って、今でも手放せないマウス」「旅行中でも快適にPCを使う方法」などなど、ご自身のこだわりや、便利な小ワザをご投稿ください。掲載する場合、少額ですが謝礼も用意しております。事前にウインタブの連絡用メールアドレス「win-tab[at]outlook.com([at]を@に変えてください)」までお問い合わせください。
スポンサーリンク

この記事はコメントを受け付けておりません