網路上抓的原始碼
<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5">
<title>猜數字遊戲</title>
</head>
<script LANGUAGE="JavaScript">
var NN4=(document.layers);
var IE4=(document.all);
function showmsg(msg){
self.status=msg;
}
function chkBtnDown(e) {
var RightBtn = false;
return true;
}
function chkSel(){
event.returnValue=false;
}
if(NN4){
document.captureEvents(Event.MOUSEDOWN);
}
document.onmousedown = chkBtnDown;
//-->
</script>
<body bgcolor="#FFFFFF" text="#FFFFFF" onLoad="start=window.setTimeout('horse()',75)" link="#000000" vlink="#000000" alink="#000000">
<p align="center"><font color="#000000"><br>
<script language="JavaScript">
var ans=''
var rnds=''
var srnds=''
var addans=''
var add=''
var startminute='' //開始分
var startsecond='' //開始秒
var totaltime='' //已用秒數
var guesstimes=0 //已猜次數
var c_startminute='' //電腦分析開始分
var c_startsecond='' //電腦分析開始秒
var c_totaltime=0 //電腦猜測秒數
var c_guesstimes=0 //電腦猜測次數
var total_game=0 //總局數
var win_game=0 //贏局數
var history_number=new NewArray(20) //歷次所猜數字
var history_AB=new NewArray(20) //歷次所猜答案
var r=new NewArray(4) //所猜字之各字放於此陣列
var allarr=new NewArray(24)
var turn=1
var filter_no=210
var number1=new NewArray(filter_no)
decl()
//新建陣列函數
function NewArray(n)
{
for (var i=1; i<=n; i++)
{
this[i]=''
}
return this
}
//隨機挑選答案
function answer_ans(form)
{
var n=form.rest_ofall.value
var yy=Math.random()*n
yyy=Math.round(yy)
if (yyy == 0) {yyy=1}
c_guesstimes++
if (c_guesstimes == 1)
{form.computer_guess.value=number1[yyy]}
else
{
noneacc=0
while (1==1) {
while (number1[yyy]=='none')
{
noneacc=0
for (var none=1; none<=n ; none++)
{
if (number1[none] == 'none') {noneacc++}
}
if (noneacc == n)
{
alert('你的答案有問題喔! 想騙我, 算你失敗一次')
newgame(form)
turn=1
form.guess.focus()
break
}
var yy=Math.random()*n
yyy=Math.round(yy)
if (yyy == 0) {yyy=1}
}
// alert('next='+number1[yyy]+'---'+yyy+'---'+noneacc+'='+n)
if (noneacc == 0 && n == 0)
{
// alert('你的答案有問題喔! 想騙我, 算你失敗一次')
newgame(form)
turn=1
form.guess.focus()
break
}
if (noneacc == n) { return }
rearr=number1[yyy]
//分別取出下次答案之四個字
r[1]=rearr.substring(0,1)
r[2]=rearr.substring(1,2)
r[3]=rearr.substring(2,3)
r[4]=rearr.substring(3,4)
// alert(r[1]+r[2]+r[3]+r[4])
//求出24種組合
acc=0
for (var i=1; i<=4; i++)
{
for (var j=1; j<=4; j++)
{
if (j != i)
{
for (var k=1; k<=4; k++)
{
if ( j != k && i != k)
{
for (var l=1; l<=4; l++)
{
if (l != i && l !=j && l != k)
{
allarr[++acc]=r[i]+r[j]+r[k]+r[l]
}
}
}
}
}
}
}
//根據24種組合決定下一組答案
for (var i=1; i<=24; i++)
{
chk1=allarr[i] //分別取出 1/24 答案
tf=0
for (var j=1; j<c_guesstimes; j++) //與歷次比較
{
chk2=history_number[j]
// 比 A
result=''
for (var k=0; k<4; k++)
{
if (chk1.substring(k,k+1) == chk2.substring(k,k+1))
{result+='A'}
}
//比 B
for (var k=0; k<4; k++)
{
for (var l=0; l<4; l++)
{
if (k != l)
{
if (chk1.substring(k,k+1) == chk2.substring(l,l+1))
{result+='B'}
}
}
}
if (result == '') {result = '0'}
//如果此組與歷次答案不同則濾掉
if (result != history_AB[j]) {tf=1; number1[yyy]='none'; break}
}
//如果與歷次都一樣, 則以此為答案
if (tf == 0) {form.computer_guess.value = chk1; break}
}
if (tf==0){break}
}
}
form.computer_AB.focus()
}
//分析答案, 過濾不適合之題目
function parsing(form)
{
if (turn == 1) {form.guess.focus(); return}
if (form.computer_AB.value == '') {form.computer_AB.focus(); return}
now = new Date()
hours = now.getHours()
c_startminute=now.getMinutes()
c_startsecond=now.getSeconds()
filter_no=0
n=form.rest_ofall.value
chk0=form.computer_AB.value
chk123=chk0.toUpperCase()
for (var i=0; i<4; i++)
{
chk456=chk123.substring(i,i+1)
if (chk456=='') {break}
if (chk456 != 'A' && chk456 != 'B' && chk456 != '0')
{alert('除了 A, B, 0 之外, 不能有數字或其它符號'+chk456); form.computer_AB.focus(); return}
}
if (chk0.substring(0,1)=='0') {chk='0'}
else
{
//轉成大寫
chk1=chk0.toUpperCase()
//重新組合A
chk=''
for (var i=0; i<4; i++)
{
if (chk1.substring(i,i+1)=='A') {chk+='A'}
}
//重新組合B
for (var i=0; i<4; i++)
{
if (chk1.substring(i,i+1)=='B') {chk+='B'}
}
}
if (chk=='AAAB') {alert('太誇張了, AAAB 都出來了 !要當個誠實的學生'); form.computer_AB.focus(); return}
form.computer_AB.value=chk
history_number[c_guesstimes]=form.computer_guess.value
history_AB[c_guesstimes]=form.computer_AB.value
//過濾同數字
//先決定字數
if (chk=='AAAA')
{
alert('我贏了, 再加油')
newgame(form)
form.guess.focus()
return
}
if (chk.substring(0,1) == '0')
{history_AB[c_guesstimes]='0'; ans_len=0}
else
{
ans_len=0
for (var i=0; i<4; i++)
{
if (chk.substring(i,i+1) == '')
{
ans_len=i; break
}
}
if (i==4 && ans_len==0) {ans_len=4} //如果為四個字
}
// alert('len='+ans_len)
//開始過濾與電腦猜之答案數與 ans_len相同者
for (var i=1; i<=n; i++)
{
chk1=number1[i]
chk2=form.computer_guess.value
acc_len=0
//過濾 A,B
for (var j=0; j<4; j++)
{
for (var k=0; k<4; k++)
{
if (chk1.substring(j,j+1) == chk2.substring(k,k+1)) {acc_len++}
}
}
if (acc_len == ans_len) {number1[++filter_no]=chk1}
}
form.rest_ofall.value=filter_no
now = new Date()
hours = now.getHours()
minutes=now.getMinutes()
seconds=now.getSeconds()
if (c_startminute>minutes)
{
ttime=(60-eval(c_startminute))*60-eval(c_startsecond)+(eval(minutes))*60+eval(seconds)
}
else
{
ttime=(eval(minutes)-eval(c_startminute))*60-eval(c_startsecond)+eval(seconds)
}
tempa=c_totaltime+eval(ttime)
c_totaltime=tempa
turn=1
form.guess.focus()
}
function decl()
{
acc=0
for (var j1=0; j1<=6; j1++)
{
for (var j2=j1+1;j2<=7; j2++)
{
if (j1 != j2 )
{
for (var j3=j2+1; j3<=8; j3++)
{
if (j1 != j3 && j2 != j3)
{
for (var j4=j3+1; j4<=9; j4++)
{
if (j1 != j4 && j2 != j4 && j3 != j4)
{
acc=acc+1
number1[acc]=j1+''+j2+''+j3+''+j4
}
}
}
}
}
}
}
}
function horse()
{
now = new Date()
hours = now.getHours()
minutes=now.getMinutes()
seconds=now.getSeconds()
year=(now.getYear())-11
month=eval(now.getMonth())+1
day=now.getDate()
if (hours == 12){
chours=eval(hours)
ampm='中午'}
else if (hours >12 && hours <18){
chours=eval(hours)-12
ampm='下午'}
else if (hours >= 18 && hours<=24){
chours=eval(hours)-12
ampm='晚上'}
else if (hours<6){
chours=eval(hours)
ampm='凌晨'}
else{
chours=eval(hours)
ampm='早上'}
var time=ampm+chours+'時'+minutes+'分'+seconds+'秒 ' ;
var mdate = year+'年'+month+'月'+day+'日 ';
if (startminute != '')
{
if (startminute>minutes)
{
ttime=(60-eval(startminute))*60-eval(startsecond)+(eval(minutes))*60+eval(seconds)
}
else
{
ttime=(eval(minutes)-eval(startminute))*60-eval(startsecond)+eval(seconds)
}
tempa=eval(ttime-c_totaltime)
totaltime=tempa+''
}
else
{totaltime='0'}
var msg=mdate+time+'已經使用:'+totaltime+'秒 次數:'+guesstimes+'次 電腦使用時間:'+c_totaltime+'秒 次數'+c_guesstimes+'次 共玩了'+total_game+'局 你贏'+win_game+'局'
}
function reset0no(form)
{
alert('目前尚無登錄的功能')
}
function resetno(form)
{
ans=''
add=''
//隨機保存第一次答案之二位數
//決定保留之位數
res11=Math.random()+''
res10=res11.substring(3,4)
res1=(res10 % 4 ) +1
res2=res1
while (res2 == res1)
{
res21=Math.random()+''
res20=res21.substring(3,4)
res2=(res20 % 4 ) +1
}
old=form.guess.value
//決定保留之字元
str1=old.substring(res1-1,res1)
str2=old.substring(res2-1,res2)
// if (str2=='0')
// {
// rtemp=str2
// str2=str1
// str1=rtemp
// }
str31=old.substring(0,1)
str32=old.substring(1,2)
str33=old.substring(2,3)
str34=old.substring(3,4)
var temp0=1
for (var i=1; i<=4; i++)
{
add=Math.random()
var temp=add+''
var addans=temp.substring(2,3)
if (i==res1 || i==res2)
{
var tf=0
for (var j=1; j<=i; j++)
{
if (ans.substring(j-1,j) == addans || addans=='' || addans=='.' || addans==str1 || addans==str2 || addans==str31 || addans==str32 || addans==str33 || addans==str34)
{tf=1}
}
if (tf == 0)
{
ans=ans+addans
// if (ans.substring(0,1) == '0')
// {i=0
// ans=''
// }
}
else
{
i--
}
}
else
{
if (temp0 ==1) {ans=ans+str2; temp0++} else {ans=ans+str1}
}
}
// newgame(form)
// form.guess.focus()
}
function nolicense(form)
{
// alert('此處為您曾經作答之結果欄, 請勿填上任何資料')
form.guess.focus()
return
}
function nolicense_c(form)
{
// alert('此處為電腦之答案欄, 無法填上任何資料')
form.guess.focus()
return
}
function ansr(form)
{
if (ans=='')
{
alert('太懶了吧! 還沒猜就想看答案')
}
else
{
alert('以後要有耐心點,有志者,事竟成, 這次就算了,告訴你吧, 答案是:'+ans)
}
newgame(form)
turn=1
form.guess.focus()
}
function sep(form)
{
if (startminute == '')
{
// var checkna=form.gsname.value
// var checkps=form.gspassword.value
// if (checkna=='' || checkps=='')
// {alert('姓名及密碼都要輸入才能登錄記錄! (成績會累加進去喔)')}
now = new Date()
minutes=now.getMinutes()
seconds=now.getSeconds()
startminute=minutes
startsecond=seconds
}
if (form.guess.value == form.ans1.value || form.guess.value == '')
{form.guess.focus(); return}
var acc=''
// check words repeating
chk=form.guess.value
for (var i=0; i<4; i++)
{
scrchk=chk.substring(i,i+1)
strchk=0
for (var j=0; j<=9; j++)
{
deschk=j+''
if (deschk == scrchk)
{
strchk=1
}
}
if (strchk==0)
{
alert('請輸入數字, 謝謝')
form.guess.focus()
return
}
}
if (chk.length < 4 || chk.length > 4)
{
alert('請輸入 4 個字之答案')
form.guess.focus()
return
}
for (var i=0; i<4; i++)
{
var chk12=form.guess.value
var chk1=chk12.substring(i,i+1)
if (chk1 == ' ')
{
alert('答案不能空白')
form.guess.focus()
return
}
for (var j=i+1; j<4; j++)
{
var chk22=form.guess.value
var chk2=chk22.substring(j,j+1)
if (chk2==chk1 && chk2!=''){
alert('字不能重複')
form.guess.focus()
return
}
}
}
guesstimes=guesstimes+1
form.total.value=totaltime
form.right.value='F'
if (guesstimes == 1)
{
resetno(form)
acc='BB'
// form.ans1.value=chk12
form.ans2.value=''
form.ans3.value=''
form.ans4.value=''
form.ans5.value=''
// form.a.value=acc
form.b.value=''
form.c.value=''
form.d.value=''
form.e.value=''
}
else
{
// found position exact & word too --- A
for (var i = 0; i < 4; i++)
{
var chtemp=form.guess.value
var ch = chtemp.substring(i, i + 1)
if (ch==ans.substring(i,i+1))
{
acc=acc+'A'
}
}
// found word --- B
for (var i = 0; i < 4; i++) {
var chtemp=form.guess.value
var ch = chtemp.substring(i, i + 1)
for (var j=0; j<4; j++) {
if (i!=j)
{
if(ch==ans.substring(j,j+1))
{
acc=acc+'B'
}
}
}
}
if (acc == 'AAAA')
{
alert('太厲害了, 你答對了,你是我的偶像')
form.right.value='T'
form.times.value=guesstimes
win_game++
newgame(form) //重設題目
turn=1
form.guess.focus()
}
else
{
if (acc=='' && form.guess.value != '')
{alert('此 4 字都沒有喔! 相信您快答出來了吧!')
acc='0000'
}
}
}
// if (form.guess.value !='')
// {
form.ans5.value=form.ans4.value
form.e.value=form.d.value
form.ans4.value=form.ans3.value
form.d.value=form.c.value
form.ans3.value=form.ans2.value
form.c.value=form.b.value
form.ans2.value=form.ans1.value
form.b.value=form.a.value
form.ans1.value=form.guess.value
form.a.value=acc
form.guess.value=''
// }
turn=2
answer_ans(form)
}
function newgame(form)
{
startminute=''
guesstimes=0
c_startminute=''
c_guesstimes=0
c_totaltime=0
total_game++
form.wintime.value=win_game
form.totaltime.value=total_game
form.ans1.value=''
form.ans2.value=''
form.ans3.value=''
form.ans4.value=''
form.ans5.value=''
form.a.value=''
form.b.value=''
form.c.value=''
form.d.value=''
form.e.value=''
form.computer_guess.value=''
form.computer_AB.value=''
form.guess.value=''
filter_no=210
form.rest_ofall.value=filter_no
//alert(total_game+'')
decl()
//alert('ok')
}
function guessturn(form)
{
if (turn == 2)
{form.computer_AB.focus()}
}
function backturn(form)
{
if (turn==1){form.guess.focus()}
chkvar=form.computer_guess.value
if (chkvar == '') {newgame(form); answer_ans(form); form.computer_AB.focus()}
}
</script> 幾A幾B猜數遊戲</font></p>
<p> </p>
<form>
<input type="hidden" name="total" value><input type="hidden" name="right" value><input
type="hidden" name="times" value><input type="hidden" name="rest_ofall" value="210"><input
type="hidden" name="totaltime" value><input type="hidden" name="wintime" value><div
align="center"><center>
<table border="5" bgcolor="#888888" cellspacing="0" cellpadding="0" width="699">
<tr>
<th colspan="3" bgcolor="#FFFFFF" width="425"><div align="center"><center><h2>
<font size="4"><br>
<span style="font-weight: 400"><font color="#000000">*A*B猜數字遊戲</font></span></font></h2>
</center></div></th>
<td bgcolor="#FFFF00" align="center" width="260"><div align="center"><center><p>
<font size="4"><input type="button"
value="放棄了,看答案" onclick="ansr(this.form)"></font></td>
</tr>
<tr align="center">
<th colspan="3" bgcolor="#008080" width="425"><font size="4">玩
家</font></th>
<td bgcolor="#ff0000" width="260"><div align="center"><center><p>
<font size="4">電 腦</font></td>
</tr>
<tr align="center">
<th rowspan="5" bgcolor="#FF0000" width="205">
<span style="font-weight: 400">請輸入不重複的4位數字:</span><font size="4"><br>
</font>
<h1><font size="4"> <input name="guess" size="9" value onChange="form.getans.focus()"
onFocus="guessturn(this.form)"> </font></h1>
<p><font size="4"><span style="font-weight: 400"> </span><input type="button" name="getans" value=" 確定輸入 " onClick="sep(this.form)"><br>
</font>
</th>
<td width="110"><font size="4">猜數<b>:<input name="ans1" size="4" onFocus="nolicense(this.form)"></b></font></td>
<td width="106"><font size="4">結果:<input name="a" size="5" value=" " onFocus="nolicense(this.form)">
</font> </td>
<td rowspan="5" bgcolor="#C0C0C0" width="260"><div align="center"><center><p>
<font color="#0000ff"><br>
</font>
<font color="#000000">電 腦 猜 數</font><font color="#0000ff"><br>
</font><font size="4" color="#0000ff"><br>
<input name="computer_guess" size="10" value=" " onFocus="nolicense_c(this.form)"><br>
</font><hr><p>
<font size="4" color="#0000ff">
<br>
</font><font color="#0000ff">請玩家確實輸入判別結果</font><div align="center"><center><p>
<font color="#0000ff">(例如 ABB 或 aab)<br>
</font><font size="4" color="#0000ff"><br>
<input name="computer_AB" size="11" value onBlur="parsing(this.form,filter_no)"
onFocus="backturn(this.form)"><br>
<br>
</font><font color="#0000ff" size="4"><input type="button" name="putans" value=" 確定輸入 "
onClick="parsing(this.form,filter_no)"></font></td>
</tr>
<tr align="center">
<td width="110"><font size="4">猜數<b>:<input name="ans2" size="4" onFocus="nolicense(this.form)"></b></font></td>
<td width="106"><font size="4">結果:<input name="b" size="5" value=" " onFocus="nolicense(this.form)"></font></td>
</tr>
<tr align="center">
<td width="110"><font size="4">猜數<b>:<input name="ans3" size="4" onFocus="nolicense(this.form)"></b></font></td>
<td width="106"><font size="4">結果:<input name="c" size="5" value=" " onFocus="nolicense(this.form)"></font></td>
</tr>
<tr align="center">
<td width="110"><font size="4">猜數<b>:<input name="ans4" size="4" onFocus="nolicense(this.form)"></b></font></td>
<td width="106"><font size="4">結果:<input name="d" size="5" value=" " onFocus="nolicense(this.form)"></font></td>
</tr>
<tr align="center">
<td width="110"><font size="4">猜數<b>:<input name="ans5" size="4" onFocus="nolicense(this.form)"></b></font></td>
<td width="106"><font size="4">結果:<input name="e" size="5" value=" " onFocus="nolicense(this.form)"></font></td>
</tr>
</table>
</center></div>
</form>
<div align="center"><center>
<table border="1" width="20%" bgcolor="#FFFFFF" height="102">
<tr>
<td width="80%" height="96"><p align="center"><font color="#0000FF" FACE="細明體"
LANG="ZH-TW"><a href="learnab.htm" target="main">學習重點</a></font></p>
<p align="center"><a href="ansab.htm" target="main">答案提示</a></p>
<p align="center"><a href="guessmeab.htm" target="main">規則介紹</a></td>
</tr>
</table>
</center></div>
</body>
</html>