Post:2005年06月15日
競技かるた(PHP風)
なんとなく、競技かるたの流れをPHP言語で書いてみた。合っているかは分からないけど、多分こんな感じかな……
<?php
$myfuda = 25;
$tekifuda = 25;
$karafuda = 50;
$defuda = 50;
while($myfuda && $tekifuda){
srand((double)microtime() * 1000000);
$temp_num = rand(1, $karafuda + $defuda);
//デバッグ開始
print '$myfuda = '.$myfuda."<br>";
print '$tekifuda = '.$tekifuda."<br>";
print '$karafuda = '.$karafuda."<br>";
print '$defuda = '.$defuda."<br>";
print "--------------------------<br>";
//デバッグ終了
//空札だったとき
if($temp_num < = $karafuda){
$karafuda--;
}
//出札だったとき
else{
$defuda--;
srand((double)microtime() * 1000000);
$temp_num = rand(1, $myfuda + $tekifuda);
//自陣が出たとき
if($temp_num <= $myfuda){
$myfuda--;
if(!funcGetFuda()){
$myfuda++;
$tekifuda--;
}
}
//相手陣が出たとき
else{
$tekifuda--;
if(funcGetFuda()){
$myfuda--;
$tekifuda++;
}
}
}
switch(funcOtetsuki()){
case 1:
if($tekifuda){
$tekifuda--;
$myfuda++;
}
case 2:
if($tekifuda){
$tekifuda--;
$myfuda++;
}
break;
case 3:
if($myfuda){
$myfuda--;
$tekifuda++;
}
case 4:
if($myfuda){
$myfuda--;
$tekifuda++;
}
break;
}
}
if(!$myfuda) print $tekifuda."枚差の勝利です!";
else print $myfuda."枚差負けです……";
function funcGetFuda(){
//自分が取った場合はtrueを返す関数
//以下仮設定
srand((double)microtime() * 1000000);
return rand(0,1) ? true : false;
}
function funcOtetsuki(){
//お手つきなし……0、共お手……0
//自分が空ダブ……1、自分がお手つき……2、
//相手が空ダブ……3、相手がお手つき……4、を返す関数
//以下仮設定
srand((double)microtime() * 1000000);
$temp_num = rand(1,100);
if($temp_num == 1) return 1;
elseif($temp_num == 2) return 3;
elseif($temp_num <= 6) return 2;
elseif($temp_num <= 10) return 4;
else return 0;
}
?>
そのうち、JavaScriptやFlashなんかで競技かるたのゲームなんか作ってみたいなー。まぁ、読みソフトが完成したらの話だけど……