#!/usr/bin/php
<?php
/**
* 石头剪刀布游戏(单机版)
*
* @author
genghonghao@gmail.com
*
* @date 2008/06/26
*
* @version v,1.0(beta)
*
*/
set_time_limit(0);
$input = array(
'STONE' => 's',
'SHEARS' => 'j',
'CLOTH' => 'b'
);
define('INTEGRAL', 'INTEGRA_LOG');
define('SUCCESS_MARK', 5);
define('FAILURE_MARK', -5);
define('TIE_MARK', 0);
fwrite(STDOUT,"\n出招的规则是: s代表石头 j代表剪刀 b代表布\n退出请输入 : quit\n积分的规则是: 胜利+5分 失败-5分 平局不加分也不减分\n");
while (true) {
fwrite(STDOUT, "\n请 出 招 : ");
$inputu = trim(fgets(STDIN));
if($inputu == 'quit') {
fwrite(STDOUT, "\nBye Bye\n\n");
break;
}
$rand_key = array_rand($input, 1);
$rand_key = $input[$rand_key];
$user_out = get_out($inputu);
$syst_out = get_out($rand_key);
$diff = diff($inputu, $rand_key);
if($user_out[1] != false) {
switch($diff) {
case '>':
write_integral(SUCCESS_MARK."\n");
$mark = read_integral();
$mark_content = "本局获得积分: ". SUCCESS_MARK. "剩余积分: {$mark}\n";
fwrite(STDOUT, "\n您在这次战斗中取得了胜利!\n你的出招:\"{$user_out[0]}\"\n系统出招:\"{$syst_out[0]}\" {$mark_content}");
break;
case '<':
write_integral(FAILURE_MARK."\n");
$mark = read_integral();
$mark_content = "本局获得积分: ". FAILURE_MARK. "剩余积分: {$mark}\n";
fwrite(STDOUT, "\n您在这次战斗中被系统战败!\n你的出招:\"{$user_out[0]}\"\n系统出招:\"{$syst_out[0]}\" {$mark_content}");
break;
case '=':
write_integral(TIE_MARK."\n");
$mark = read_integral();
$mark_content = "本局获得积分: ". TIE_MARK. "剩余积分: {$mark}\n";
fwrite(STDOUT, "\n您和系统选择的都是\"{$user_out[0]}\",这次战斗是个平局! {$mark_content}");
break;
default:
echo $user_out[0]."\n";
break;
}
} else{
fwrite(STDOUT, $user_out[0]."\n");
}
}
function write_integral($content) {
$handle = @fopen(INTEGRAL, 'a');
@fwrite($handle, $content);
@fclose($handle);
}
function read_integral() {
$file = @file(INTEGRAL);
$count = 0;
foreach($file as $k => $v) {
$count += !empty($v) ? (int)(str_replace('\n', '', $v)) : 0;
}
return $count;
}
function get_out($str) {
$val = array();
switch($str) {
case 's':
$val[] = '石头';
$val[] = true;
break;
case 'j':
$val[] = '剪刀';
$val[] = true;
break;
case 'b':
$val[] = '布';
$val[] = true;
break;
default:
$val[] = "\n您的出招不正确!\n";
$val[] = false;
}
return $val;
}
function diff($str1, $str2) {
switch($str1) {
case 's':
switch($str2) {
case 's':
$val = '=';
break;
case 'j':
$val = '>';
break;
case 'b':
$val = '<';
break;
default :
$val = '#';
break;
}
break;
case 'j':
switch($str2) {
case 's':
$val = '<';
break;
case 'j':
$val = '=';
break;
case 'b':
$val = '>';
break;
default :
$val = '#';
break;
}
break;
case 'b':
switch($str2) {
case 's':
$val = '>';
break;
case 'j':
$val = '<';
break;
case 'b':
$val = '=';
break;
default :
$val = '#';
break;
}
break;
default:
$val = '#';
break;
}
return $val;
}