产生几个随机数字,随机提问,总共10轮Zr4HTML5中文学习网 - HTML5先行者学习网
windows命令行效果图Zr4HTML5中文学习网 - HTML5先行者学习网
Zr4HTML5中文学习网 - HTML5先行者学习网
Zr4HTML5中文学习网 - HTML5先行者学习网
<?phpZr4HTML5中文学习网 - HTML5先行者学习网
substr(php_sapi_name(), 0, 3) !== 'cli' AND die("Please run in cli mode");Zr4HTML5中文学习网 - HTML5先行者学习网
new Php_Cli_Game;Zr4HTML5中文学习网 - HTML5先行者学习网
class Php_Cli_Game{Zr4HTML5中文学习网 - HTML5先行者学习网
private $_digitals = array();Zr4HTML5中文学习网 - HTML5先行者学习网
private $_answer = '';Zr4HTML5中文学习网 - HTML5先行者学习网
private $_level = 0;Zr4HTML5中文学习网 - HTML5先行者学习网
private $_accuracy = 0;Zr4HTML5中文学习网 - HTML5先行者学习网
const _SIZE = 30;Zr4HTML5中文学习网 - HTML5先行者学习网
public function __construct(){Zr4HTML5中文学习网 - HTML5先行者学习网
$this->_level = 1;Zr4HTML5中文学习网 - HTML5先行者学习网
$this->_accuracy = 0;Zr4HTML5中文学习网 - HTML5先行者学习网
do{Zr4HTML5中文学习网 - HTML5先行者学习网
$this->_init();Zr4HTML5中文学习网 - HTML5先行者学习网
$str = trim(fgets(STDIN));Zr4HTML5中文学习网 - HTML5先行者学习网
if(in_array($str, array("q", "e")) $this->_check_answer($str)){Zr4HTML5中文学习网 - HTML5先行者学习网
break;Zr4HTML5中文学习网 - HTML5先行者学习网
}Zr4HTML5中文学习网 - HTML5先行者学习网
}while(true);Zr4HTML5中文学习网 - HTML5先行者学习网
}Zr4HTML5中文学习网 - HTML5先行者学习网
private function _init(){Zr4HTML5中文学习网 - HTML5先行者学习网
$this->_digitals = array_fill(0, self::_SIZE, " ");Zr4HTML5中文学习网 - HTML5先行者学习网
$range = array_rand(range(0, ++$this->_level * 5), $this->_level);Zr4HTML5中文学习网 - HTML5先行者学习网
$tmp=array();Zr4HTML5中文学习网 - HTML5先行者学习网
foreach($range AS $k => $v){Zr4HTML5中文学习网 - HTML5先行者学习网
do{Zr4HTML5中文学习网 - HTML5先行者学习网
$rnd = rand(0, self::_SIZE-1);Zr4HTML5中文学习网 - HTML5先行者学习网
}while($this->_digitals[$rnd] !== " ");Zr4HTML5中文学习网 - HTML5先行者学习网
$tmp[] = $this->_digitals[$rnd] = $v;Zr4HTML5中文学习网 - HTML5先行者学习网
}Zr4HTML5中文学习网 - HTML5先行者学习网
$this->_mk_question($tmp);Zr4HTML5中文学习网 - HTML5先行者学习网
}Zr4HTML5中文学习网 - HTML5先行者学习网
private function _check_answer($answer){Zr4HTML5中文学习网 - HTML5先行者学习网
if($answer === trim($this->_answer)){Zr4HTML5中文学习网 - HTML5先行者学习网
$this->_display("√ Good job!/n");Zr4HTML5中文学习网 - HTML5先行者学习网
$this->_accuracy++;Zr4HTML5中文学习网 - HTML5先行者学习网
}else{Zr4HTML5中文学习网 - HTML5先行者学习网
$this->_display(join(" ", $this->_digitals) . "/n答案是:{$this->_answer}/n/n");Zr4HTML5中文学习网 - HTML5先行者学习网
}Zr4HTML5中文学习网 - HTML5先行者学习网
if($this->_level > 10){Zr4HTML5中文学习网 - HTML5先行者学习网
$grades = array(Zr4HTML5中文学习网 - HTML5先行者学习网
0 => 'Stupid',Zr4HTML5中文学习网 - HTML5先行者学习网
1 => 'Stupid',Zr4HTML5中文学习网 - HTML5先行者学习网
2 => 'Stupid',Zr4HTML5中文学习网 - HTML5先行者学习网
3 => 'Disappointing',Zr4HTML5中文学习网 - HTML5先行者学习网
4 => 'Not so bad',Zr4HTML5中文学习网 - HTML5先行者学习网
5 => 'Not so bad',Zr4HTML5中文学习网 - HTML5先行者学习网
6 => 'Not bad',Zr4HTML5中文学习网 - HTML5先行者学习网
7 => 'Impossible',Zr4HTML5中文学习网 - HTML5先行者学习网
8 => 'Impossible',Zr4HTML5中文学习网 - HTML5先行者学习网
9 => 'Unbelievable',Zr4HTML5中文学习网 - HTML5先行者学习网
10 => 'Unbelievable',Zr4HTML5中文学习网 - HTML5先行者学习网
);Zr4HTML5中文学习网 - HTML5先行者学习网
$score = $this->_accuracy*10 . "%/t/t{$grades[$this->_accuracy]}!/n";Zr4HTML5中文学习网 - HTML5先行者学习网
$this->_display("/n/n答题正确率:" . $score);Zr4HTML5中文学习网 - HTML5先行者学习网
return true;Zr4HTML5中文学习网 - HTML5先行者学习网
}Zr4HTML5中文学习网 - HTML5先行者学习网
return false;Zr4HTML5中文学习网 - HTML5先行者学习网
}Zr4HTML5中文学习网 - HTML5先行者学习网
private function _mk_question($arr){Zr4HTML5中文学习网 - HTML5先行者学习网
sort($arr);Zr4HTML5中文学习网 - HTML5先行者学习网
$len = sizeof($arr);Zr4HTML5中文学习网 - HTML5先行者学习网
$questions = array();Zr4HTML5中文学习网 - HTML5先行者学习网
$questions['max'] = array($arr[$len-1], '最大数字');Zr4HTML5中文学习网 - HTML5先行者学习网
$questions['min'] = array($arr[0], '最小数字');Zr4HTML5中文学习网 - HTML5先行者学习网
if($len % 2){Zr4HTML5中文学习网 - HTML5先行者学习网
$questions['mid'] = array($arr[intval($len/2)], '中间数字');Zr4HTML5中文学习网 - HTML5先行者学习网
}Zr4HTML5中文学习网 - HTML5先行者学习网
if($len>3){Zr4HTML5中文学习网 - HTML5先行者学习网
$questions['second'] = array($arr[$len-2], '第二大数字');Zr4HTML5中文学习网 - HTML5先行者学习网
$questions['finally_second'] = array($arr[1], '第二小数字');Zr4HTML5中文学习网 - HTML5先行者学习网
}Zr4HTML5中文学习网 - HTML5先行者学习网
shuffle($questions);Zr4HTML5中文学习网 - HTML5先行者学习网
$tmp = array_shift($questions);Zr4HTML5中文学习网 - HTML5先行者学习网
$this->_answer = $tmp[0];Zr4HTML5中文学习网 - HTML5先行者学习网
$this->_display(join(" ", $this->_digitals), range(5, 1));Zr4HTML5中文学习网 - HTML5先行者学习网
$this->_display("输入刚才出现过的{$tmp[1]}:");Zr4HTML5中文学习网 - HTML5先行者学习网
}Zr4HTML5中文学习网 - HTML5先行者学习网
private function _display($str = '', $steps = ''){Zr4HTML5中文学习网 - HTML5先行者学习网
$len = strlen($str);Zr4HTML5中文学习网 - HTML5先行者学习网
if(is_array($steps)){Zr4HTML5中文学习网 - HTML5先行者学习网
foreach($steps AS $k => $v){Zr4HTML5中文学习网 - HTML5先行者学习网
fwrite(STDOUT, $str . "/r");Zr4HTML5中文学习网 - HTML5先行者学习网
usleep(ceil(1000000/($k+1)));Zr4HTML5中文学习网 - HTML5先行者学习网
fwrite(STDOUT, str_repeat(" ", $len) . "/r");Zr4HTML5中文学习网 - HTML5先行者学习网
usleep(ceil(1000000/$this->_level));Zr4HTML5中文学习网 - HTML5先行者学习网
if($k==$this->_level-1){Zr4HTML5中文学习网 - HTML5先行者学习网
break;Zr4HTML5中文学习网 - HTML5先行者学习网
}Zr4HTML5中文学习网 - HTML5先行者学习网
}Zr4HTML5中文学习网 - HTML5先行者学习网
fwrite(STDOUT, "/n");Zr4HTML5中文学习网 - HTML5先行者学习网
}Zr4HTML5中文学习网 - HTML5先行者学习网
else{Zr4HTML5中文学习网 - HTML5先行者学习网
fwrite(STDOUT, $str);Zr4HTML5中文学习网 - HTML5先行者学习网
}Zr4HTML5中文学习网 - HTML5先行者学习网
}Zr4HTML5中文学习网 - HTML5先行者学习网
}Zr4HTML5中文学习网 - HTML5先行者学习网
?>Zr4HTML5中文学习网 - HTML5先行者学习网
Zr4HTML5中文学习网 - HTML5先行者学习网Zr4HTML5中文学习网 - HTML5先行者学习网