見出し画像

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 #カードゲーム # コマンドレット #プログラミング学習 #プログラミング初心者


この記事が気に入ったらサポートをしてみませんか?