PowerShell で遊ぶゲーム【神経衰弱】
PowerShellで神経衰弱を作ってみました。
お試し版でカードは8枚のみ
### カードゲーム
#カードをシャッフル
$card=get-random @("♦3","♥2","♣1","♠J","♥3","♣2","♠1","♦J") -count 8
#表裏フラグ
$cardflg=@(0,0,0,0 ,0,0,0,0)
#カード表示用サブ関数
function disp-card-sub($cardnumber_s,$cardnumber_e){
#表示用ラインバッファ 6列
$line=@("","","","","","")
for($i=$cardnumber_s;$i -lt $cardnumber_e;$i++){
if($cardflg[$i] -eq -1){#カードなし
$line[0]+=" "
$line[1]+=" "
$line[2]+=" "
$line[3]+=" "
$line[4]+=" "
$line[5]+=" "
continue
}
$mark="+++"
$num ="+++"
if($cardflg[$i] -eq 1) {#表
$mark=$card[$i][0]
$num =$card[$i][1]
$line[0]+=" +---+"
$line[1]+=" | |"
$line[2]+=" | $mark |"
$line[3]+=" | $num |"
$line[4]+=" | |"
$line[5]+=" +---+"
} else {
$line[0]+=" +---+"
$line[1]+=" |+++|"
$line[2]+=" |+++|"
$line[3]+=" |+++|"
$line[4]+=" |+++|"
$line[5]+=" +---+"
}
}
for($i=0;$i -lt $line.length;$i++){
write-host $line[$i]
}
}
#カード表示用関数
function disp-card(){
write-host " 1 2 3 4"
disp-card-sub 0 ($card.length/2)
write-host ""
write-host " 5 6 7 8"
disp-card-sub ($card.length/2) $card.length
}
#最初のカード表示
disp-card
#ゲームメイン処理
while($cardflg.Contains(0)){
$selectcardnum1 = read-host "何番目のカードをめくりますか?"
if($selectcardnum1 -lt 1 -or $selectcardnum1 -gt 8){
continue;
}
$selectcardnum1-=1
if($cardflg[$selectcardnum1] -eq 0) {
$cardflg[$selectcardnum1]=1
disp-card
} else { continue }
while($True) {
$selectcardnum2 = read-host "2枚目 何番目のカードをめくりますか?"
if($selectcardnum2 -lt 1 -or $selectcardnum2 -gt 8 -or $cardflg[$($selectcardnum2-1)] -ne 0){
continue;
}
$selectcardnum2-=1
if($cardflg[$selectcardnum2] -eq 0 ) {
$cardflg[$selectcardnum2]=1
disp-card
if($card[$selectcardnum1][1] -eq $card[$selectcardnum2][1]){
write-host "あたり " $card[$selectcardnum1] $card[$selectcardnum2]
$cardflg[$selectcardnum1]=-1
$cardflg[$selectcardnum2]=-1
disp-card
} else {
write-host "ハズレ " $card[$selectcardnum1] $card[$selectcardnum2]
$cardflg[$selectcardnum1]=0
$cardflg[$selectcardnum2]=0
disp-card
}
break
}
}
}
カードゲームは難しいですね。
ログで全部見えるから
ファイルサーバとかを介してボードゲームも作れそうなんですけど需要ありますかね?
#PowerShell #カードゲーム # コマンドレット #プログラミング学習 #プログラミング初心者
この記事が気に入ったらサポートをしてみませんか?