1.在定义getbase()时,要取一个4位的随机数,并且数字不能重复出现。
function getbase(){
for($i=0;$i<5;$i++){
while(in_array(${"num".$i},$numarray)){
${"num".$i}=getrand();
}
$numarray[]=${"num".$i};
$basenum.=${"num".$i};
}
return $basenum;
}
现在我要将条件写成$i<5才能取到4个随机数,有点想不通;而且现在取不到“0”。
2.需要一个js,用来限定输入的范围,只能是数字,而且数字不能重复出现。即:允许输入3456,不允许3455。大家看看应该怎么做。
function getbase(){
for($i=0;$i<5;$i++){
while(in_array(${"num".$i},$numarray)){
${"num".$i}=getrand();
}
$numarray[]=${"num".$i};
$basenum.=${"num".$i};
}
return $basenum;
}
现在我要将条件写成$i<5才能取到4个随机数,有点想不通;而且现在取不到“0”。
2.需要一个js,用来限定输入的范围,只能是数字,而且数字不能重复出现。即:允许输入3456,不允许3455。大家看看应该怎么做。
<script language=javascript>
function checkNumber(num){
var re=/^(\d)(\d)(\d)(\d)$/;
var ra=re.exec(num);
if(ra==null)return false;
for(i=1;i<=3;i++)
for(j=i+1;j<=4;j++)
if(ra[i]==ra[j])
{result=false;return result;}
return true;
}
alert(checkNumber("1235"));
</script>
<script language=javascript>
function checkNumber(num){
var re=/^(\d)(\d)(\d)(\d)$/;
var ra=re.exec(num);
if(ra==null)return false;
for(i=1;i<=3;i++)
for(j=i+1;j<=4;j++)
if(ra[i]==ra[j])return false;
return true;
}
alert(checkNumber("1235"));
</script>
srand((double)microtime()*100000);
$randval = rand(1000,9999);
$tmp1=$randval;
$tmp=$randval;
echo $randval."<br>";
$flg=0;
for($i=0;$i<4;$i++)
{
if($flg==1)
break;
for($j=0;$j<4;$j++)
{
if($i==$j)
break;
if(substr($tmp,$j,1)==substr($tmp1,$i,1))
{
$flg=1;
break;
}
}
}
echo $flg."<br>";
while($flg==1)
{
$randval = rand(1000,9999);
$tmp=$randval;
$tmp1=$randval;
echo $randval."<br>";
$flg=0;
for($i=0;$i<4;$i++)
{
if($flg==1)
break;
for($j=0;$j<4;$j++)
{
if($i==$j)
break;
if(substr($tmp,$j,1)==substr($tmp1,$i,1))
{
$flg=1;
break;
}
}
}
}
echo $randval;
?>
最后得到的
$randval就是一个没有重复数字的四位数
下面是完整的代码:<title>猜数字</title>
<style type="text/css">
.font { font-family: "system"; font-size: 14pt; color: #3333FF; text-decoration: none}
.font a{ font-family: "system"; font-size: 14pt; color: #3333FF; text-decoration: none}
.text {background-color: #ffffff; border-bottom: #000000 1px solid; border-left: #ffffff 0px solid; border-right: #ffffff 0px solid; border-top: #ffffff 0px solid; color: #000000; font-size: 9pt }
.submit {background-color: #ffcf0f; border-bottom: #ffcf0f 1px solid; border-left: #ffcf0f 1px solid; border-right: #ffcf0f 1px solid; border-top: #ffcf0f 1px solid; color: #000000; font-size: 9pt }
</style>
<script language=javascript>
function checkNumber(num){
var re=/^(\d)(\d)(\d)(\d)$/;
var ra=re.exec(num);
if(ra==null)return false;
for(i=1;i<=3;i++)
for(j=i+1;j<=4;j++)
if(ra[i]==ra[j])
return false;
return true;
}
function check(){
if(checkNumber(document.main.guessnum.value) == false) {
alert("输入有误");
document.main.guessnum.value="";
}
return true;
}
</script>
<center><h1><B>猜数字</B></h1><p></center>
<?
function getrand(){
srand((double)microtime()*100000000);
$num=rand(0,9);
return $num;
}
function getbase(){
$num=getrand();
$numarray[]=$num;
$basenum.=$num;
for($i=0;$i<3;$i++){
${"num".$i}=getrand();
while(in_array(${"num".$i},$numarray)){
${"num".$i}=getrand();
}
$numarray[]=${"num".$i};
$basenum.=${"num".$i};
}
return $basenum;
}
function judgenum($guessnum,$basenum){
$a=0;
$b=0;
for($i=0;$i<4;$i++){
if(substr($guessnum,$i,1)==substr($basenum,$i,1))
$a++;
for($j=0;$j<4;$j++){
if(substr($guessnum,$i,1)==substr($basenum,$j,1) && substr($guessnum,$i,1)<>substr($basenum,$i,1))
$b++;
}
}
return $a."A".$b."B";
}
if($submit){
if(!isset($basenum))
$basenum=getbase();
if($guessnum<>$basenum){
echo '<center><form method=post action='.$PHP_SELF.' name=main>';
echo '<table border=1 bordercolordark=blue bordercolorlight=white cellpadding=6 cellspacing=0 class=font>';
echo '<tr><td colspan=2 align=center>您要猜的数字在这里:XXXX</td></tr>';
echo '<tr><td colspan=2 align=center>'.$username.':请写下你想的数字吧!<input type=text name="guessnum" size=8 maxlength=4 class=text></td></tr>';
echo '<tr><td align=center><input type=submit name=submit value="决定了" class=submit onclick=javascript:check()></td><td align=center><input type=submit name=reset value="重新来过" class=submit onclick=javascript:window.load('.$PHP_SELF.')></td></tr>';
$guessarray=explode("/",$guessline);
foreach($guessarray as $guessednum){
if($guessednum<>"")
echo '<tr><td>'.$guessednum.'</td><td>'.judgenum($guessednum,$basenum).'</td></tr>';
}
if($guessnum)
echo '<tr><td>'.$guessnum.'</td><td>'.judgenum($guessnum,$basenum).'</td></tr>';
$guessline.=$guessnum."/";
echo '<input type=hidden name=basenum value='.$basenum.'>';
echo '<input type=hidden name=guessline value='.$guessline.'>';
echo '<input type=hidden name=username value='.$username.'>';
echo '</table></form>';
}
else{
echo '<center><table border=1 bordercolordark=blue bordercolorlight=white cellpadding=6 cellspacing=0 class=font>';
echo '<tr><td colspan=2 align=center>您要猜的数字在这里:'.$basenum.'</td></tr>';
echo '<tr><td align=center>Cool!!!!</td><td align=center><a href='.$PHP_SELF.'>重来</a></td></tr>';
$guessarray=explode("/",$guessline);
foreach($guessarray as $guessednum){
if($guessednum<>"")
echo '<tr><td>'.$guessednum.'</td><td>'.judgenum($guessednum,$basenum).'</td></tr>';
}
if($guessnum)
echo '<tr><td>'.$guessnum.'</td><td>'.judgenum($guessnum,$basenum).'</td></tr>';
echo '</table>';
}
}
else
{
echo '<center><form method=post name=getuser action='.$PHP_SELF.' class=font>';
echo '输入大名:<input type=input name=username size=16 class=text value='.$username.'>';
echo '<br><p>';
echo '<input type=submit name="submit" value="开始" class=submit>';
echo '</form></center>';
}
?>