




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第PHP實現猜數游戲本文實例為大家分享了PHP實現猜數游戲的具體代碼,供大家參考,具體內容如下
猜數游戲有兩種玩法:
第一種:兩個人玩,一方出數字,一方猜。出數字的人要想好一個指定位數的數,數字可重復,不能讓猜的人知道。
猜的人就可以開始猜。每猜一個數,出數者就要說大過或小過出的數。
第二種:兩個人玩,一方出數字,一方猜。出數字的人要先想好一個沒有重復數字的4位數,不能讓猜的人知道。猜的人就可以開始猜。每猜一個數,出數者就要根據這個數字給出幾A幾B,其中A前面的數字表示位置正確的數的個數,而B前的數字表示數字正確而位置不對的數的個數。如正確答案為5234,而猜的人猜5346,則是1A2B,其中有一個5的位置對了,記為1A,而3和4這兩個數字對了,而位置沒對,因此記為2B,合起來就是1A2B。接著猜的人再根據出題者的幾A幾B繼續猜,直到猜中為止。
下面是PHP代碼實現:
//標準輸入流和標準輸出流
$stdin=null;
$stdout=null;
*初始化IO流
functioninit(){
global$stdin;
global$stdout;
$stdin=fopen('php://stdin','r');
$stdout=fopen('php://stdout','w');
*關閉IO流
functiondestroy(){
global$stdin;
global$stdout;
if(is_resource($stdin)){
fclose($stdin);
if(is_resource($stdout)){
fclose($stdout);
*從命令行讀取一行數據
functionread(){
global$stdin;
$line=fgets($stdin);
returntrim($line,PHP_EOL);//去除換行符
*向命令行輸出一行數據
functionwrite($line){
global$stdout;
//轉換編碼
if(stripos(PHP_OS,'winnt')!==false){
$line=iconv('UTF-8','GBK',$line);
fwrite($stdout,$line.PHP_EOL);
*第一種玩法
*@param$count位數
functionguess_the_number($count=2){
//隨機生成一個$count位數
$min=pow(10,$count-1);
$max=pow(10,$count)-1;
$number=rand($min,$max);
init();
while(1){
write(sprintf('Pleaseinputyournumber(%s-bitdigit),qorquitexit:',$count));
$readStr=read();
//exitprogram
if($readStr=='q'||$readStr=='quit'){
break;
$readInt=intval($readStr);
if($readInt$number){
write('大了');
}elseif($readInt$number){
write('小了');
}else{
write('恭喜你,猜對了!');
write('Inputccontinuetoplay');
$readStr=read();
if($readStr=='c'||$readStr=='continue'){
$number=rand($min,$max);
}else{
break;
destroy();
*得到一個沒有重復數字的四位數
functiongetRandNumber(){
$num=rand(1,9);
$array=array_diff(array(0,1,2,3,4,5,6,7,8,9),[$num]);
shuffle($array);
$subarr=array_slice($array,0,3);//再取3個數字
$str=implode('',array_merge([$num],$subarr));
returnintval($str);
*第二種玩法
functionguess_the_number2(){
$number=getRandNumber();
$len=4;//四位數
init();
while(1){
write(sprintf('Pleaseinputyournumber(%s-bitdigit),qorquitexit:',$len));
$readStr=read();
//exitprogram
if($readStr=='q'||$readStr=='quit'){
break;
$readInt=intval($readStr);
if($readInt==$number){
write('恭喜你,猜對了!');
write('Inputccontinuetoplay');
$readStr=read();
if($readStr=='c'||$readStr=='continue'){
$number=getRandNumber();
}else{
break;
}else{
//判斷幾A幾B
$readInt=str_pad($readInt,$len,'0',STR_PAD_LEFT);//不足四位的補足四位
$number=strval($number);
$readArr=str_split($readInt,1);//casttoarray
$numArr=str_split($number,1);
$aval=0;//幾A
$bval=0;//幾B
for($i=0;$i$len;$i++){
if($readArr[$i]==$numArr[$i]){
$aval++;
unset($readArr[$i],$numArr[$i]);
$bval=count(array_intersect($readArr,$numArr));
write(sprintf('%sA%sB',$aval,$bval));
destroy();
if(PHP_S
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論