<html>
<!--
######################################################
# Copyright 2002-2003 #
# #
# Written by neweroica #
######################################################
-->
<title>neweroica的抢24游戏</title>
<!--------------作者:neweroica(aqyw)---------------->
<h2>24点游戏初解</h2>
<h4>作者:neweroica(aqyw)</h4>
<input type=hidden name=a1>
<input type=hidden name=b1>
<input type=hidden name=c1>
<input type=hidden name=d1>
<table>
<tr>
<td>
<b id=a2 style="width:60;height:100;font-size:25pt;cursor:hand;background:#ff8888;border:solid 1px #000000;" onclick=addN(a1.value)> </b>
<b id=b2 style="width:60;height:100;font-size:25pt;cursor:hand;background:#ff8888;border:solid 1px #000000;" onclick=addN(b1.value)> </b>
<b id=c2 style="width:60;height:100;font-size:25pt;cursor:hand;background:#ff8888;border:solid 1px #000000;" onclick=addN(c1.value)> </b>
<b id=d2 style="width:60;height:100;font-size:25pt;cursor:hand;background:#ff8888;border:solid 1px #000000;" onclick=addN(d1.value)> </b>
<p>
<input type=button value=发牌 onclick=cards(0)>
<input type=button value=自定 onclick=cards(1)>
<font color=#00aa00>正确</font><b id=correct style="width:30;height:;border:solid 1px #aaaa88;">0</b>
<font color=#aa0000>错误</font><b id=wrong style="width:30;height:;border:solid 1px #aaaa88;">0</b>
<font color=#0000aa>正确率</font><b id=yeild style="width:60;height:;border:solid 1px #aaaa88;">0</b>
</p>
</td>
<td>
<table cellspacing=2 cellpadding=2>
<tr>
<td colspan=4>
<b id=formula style="color:#000088;width:200;height:25;border:solid 1px #880000;"> </b>
</td>
</tr>
<tr>
<td>
<input type=button value=+ style="width:30;height:30" onclick=add()>
</td>
<td>
<input type=button value=- style="width:30;height:30" onclick=minus()>
</td>
<td>
<input type=button value=* style="width:30;height:30" onclick=mult()>
</td>
<td>
<input type=button value=/ style="width:30;height:30" onclick=divd()>
</td>
</tr>
<tr>
<td>
<input type=button value=( style="width:30;height:30" onclick=lbr()>
</td>
<td>
<input type=button value=) style="width:30;height:30" onclick=rbr()>
</td>
<td>
<input type=button value== style="width:30;height:30" onclick=equ()>
</td>
<td>
<input type=button value=← style="width:30;height:30" onclick=bkspc()>
</td>
</tr>
<tr>
<td>
<input type=button value=重置 onclick=resetit()>
</td>
<td>
<input type=button value=无解 onclick=abort()>
</td>
<td colspan=2>
<input type=button value=查看答案 onclick=cal()>
</td>
</tr>
</table>
</td>
</tr>
</table>
<p id=showit style="color:#aa3388;width:300;height:150;border:solid 1px #008800;"> </p>
<script>
function numToChar(n){ //数字的单个字符表示;
return unescape('%u'+(n+1000));
}
function charToNum(c){ //单个字符表示对应的数字;
return parseInt(escape(c).substring(2,100))-1000;
}
var cardInf='',cardInf0;
var cardS=new Array(0,'A',2,3,4,5,6,7,8,9,10,'J','Q','K');
var typ=new Array(0,1,2,3);
var typhtml=new Array(
'<font color=#000000>'+unescape('%u2660'),
'<font color=#000000>'+unescape('%u2663'),
'<font color=#ff0000>'+unescape('%u2665'),
'<font color=#ff0000>'+unescape('%u2666'));
for(var i=1;i<=13;i++){
for(var j=0;j<4;j++){
cardInf+=numToChar(i)+typ[j];
}
}
cardInf0=cardInf;
var mode=new Array();
mode[0]='a+b+c+d';
mode[1]='a+b+c-d';
mode[2]='a+b-c-d';
mode[3]='a*b+c+d';
mode[4]='a*b*c+d';
mode[5]='a*b+c*d';
mode[6]='a*b*c*d';
mode[7]='a/b+c+d';
mode[8]='a/b/c+d';
mode[9]='a/b+c/d';
mode[10]='a*b*c/d';
mode[11]='a*b/c/d';
mode[12]='a*b/c+d';
mode[13]='a/b+c*d';
mode[14]='a*b-c-d';
mode[15]='a*b*c-d';
mode[16]='a*b-c*d';
mode[17]='a*b/c-d';
mode[18]='a*b+c-d';
mode[19]='(a+b+c)*d';
mode[20]='(a+b-c)*d';
mode[21]='(a*b+c)*d';
mode[22]='(a*b-c)*d';
mode[23]='(a/b+c)*d';
mode[24]='(a/b-c)*d';
mode[25]='(a+b+c)/d';
mode[26]='(a+b-c)/d';
mode[27]='(a*b+c)/d';
mode[28]='(a*b-c)/d';
mode[29]='(a/b+c)/d';
mode[30]='(a+b)*c+d';
mode[31]='(a-b)*c+d';
mode[32]='(a+b)/c+d';
mode[33]='(a-b)/c+d';
mode[34]='(a+b)*c-d';
mode[35]='(a-b)*c-d';
mode[36]='(a+b)/c-d';
mode[37]='(a+b)*c*d';
mode[38]='(a-b)*c*d';
mode[33]='(a+b)/c*d';
mode[40]='(a-b)/c*d';
mode[41]='(a+b)/c/d';
mode[42]='(a+b)*(c+d)';
mode[43]='(a+b)*(c-d)';
mode[44]='(a-b)*(c-d)';
mode[45]='(a+b)/(c+d)';
mode[46]='(a+b)/(c-d)';
mode[47]='a/b+c-d';
mode[48]='a+b/(c+d)';
mode[49]='a*b/(c+d)';
mode[50]='a+b/(c-d)';
mode[51]='a*b/(c-d)';
mode[52]='a/(b-c/d)';
var vari=new Array(
'0123',
'0132',
'0213',
'0231',
'0312',
'0321',
'1023',
'1032',
'1203',
'1230',
'1302',
'1320',
'2013',
'2031',
'2103',
'2130',
'2301',
'2310',
'3012',
'3021',
'3102',
'3120',
'3201',
'3210');
var z=new Array();
var zt=new Array();
function cards(ifmine){
formula.innerHTML='';
showit.innerHTML='';
if(ifmine){
z[0]=prompt('第一张牌的数字:','');
z[1]=prompt('第二张牌的数字:','');
z[2]=prompt('第三张牌的数字:','');
z[3]=prompt('第四张牌的数字:','');
for(var i=0;i<4;i++){
zt[i]='<font color=#000088>';
}
}
else{
for(var i=0;i<4;i++){
var index=2*Math.floor(cardInf.length/2*Math.random());
var cardN=cardInf.charAt(index);
z[i]=charToNum(cardN);
zt[i]=typhtml[parseInt(cardInf.charAt(index+1))];
cardInf=cardInf.substring(0,index)+cardInf.substring(index+2,cardInf.length);
}
if(cardInf==''){
alert('52张牌已全部发完!\n\n正确:'+correct.innerHTML+';错误:'+wrong.innerHTML+';正确率:'+yeild.innerHTML+'。\n\n\n再来一局!');
cardInf=cardInf0;
a2.innerHTML='';
b2.innerHTML='';
c2.innerHTML='';
d2.innerHTML='';
a2.style.backgroundColor='#ff8888';
b2.style.backgroundColor='#ff8888';
c2.style.backgroundColor='#ff8888';
d2.style.backgroundColor='#ff8888';
a1.value='';
b1.value='';
c1.value='';
d1.value='';
correct.innerHTML=0;
wrong.innerHTML=0;
yeild.innerHTML=0;
return 0;
}
}
a1.value=z[0];
b1.value=z[1];
c1.value=z[2];
d1.value=z[3];
var m1='<br><center>',m2='</center></font>';
a2.innerHTML=zt[0]+m1+cardS[z[0]]+m2;
b2.innerHTML=zt[1]+m1+cardS[z[1]]+m2;
c2.innerHTML=zt[2]+m1+cardS[z[2]]+m2;
d2.innerHTML=zt[3]+m1+cardS[z[3]]+m2;
a2.style.backgroundColor='#ffffee';
b2.style.backgroundColor='#ffffee';
c2.style.backgroundColor='#ffffee';
d2.style.backgroundColor='#ffffee';
}
function cal(){
showit.innerHTML='<br>标准答案:<br>';
var p=0;
for(i=0;i<mode.length;i++){
for(j=0;j<24;j++){
a=parseInt(z[vari[j].charAt(0)]);
b=parseInt(z[vari[j].charAt(1)]);
c=parseInt(z[vari[j].charAt(2)]);
d=parseInt(z[vari[j].charAt(3)]);
var s=mode[i];
var result=eval(s);
if(Math.abs(result-24)<1E-5){
var ina=mode[i].indexOf('a');
var inb=mode[i].indexOf('b');
var inc=mode[i].indexOf('c');
var ind=mode[i].indexOf('d');
showit.innerHTML+=mode[i].substring(0,ina)+a+mode[i].substring(ina+1,inb)+b+mode[i].substring(inb+1,inc)+c+mode[i].substring(inc+1,ind)+d+mode[i].substring(ind+1,mode[i].length)+'=24\n';
showit.innerHTML+='<br>';
p=1;
break;
}
}
}
if(p) return 0;
else showit.innerHTML='无解';
}
function addN(v,n){
formula.innerHTML+=v;
}
function add(){
formula.innerHTML+='+';
}
function minus(){
formula.innerHTML+='-';
}
function mult(){
formula.innerHTML+='*';
}
function divd(){
formula.innerHTML+='/';
}
function lbr(){
formula.innerHTML+='(';
}
function rbr(){
formula.innerHTML+=')';
}
function equ(){
var v=eval(formula.innerHTML);
if(v-Math.floor(v)<1E-5||v-Math.floor(v)>9E-6)
v=Math.round(v);
formula.innerHTML+='='+v;
cal();
var temp=showit.innerHTML;
var rt=parseInt(correct.innerHTML);
var wg=parseInt(wrong.innerHTML);
if(v==24){
showit.innerHTML='正确!'+temp;
correct.innerHTML=rt+1;
}
else{
showit.innerHTML='错误!'+temp;
wrong.innerHTML=wg+1;
}
rt=parseInt(correct.innerHTML);
wg=parseInt(wrong.innerHTML);
yeild.innerHTML=Math.floor(rt/(rt+wg)*10000)/100+'%';
}
function bkspc(){
var s=formula.innerHTML;
formula.innerHTML=s.substring(0,s.length-1);
}
function resetit(){
formula.innerHTML='';
}
function abort(){
cal();
var temp=showit.innerHTML;
var rt=parseInt(correct.innerHTML);
var wg=parseInt(wrong.innerHTML);
if(showit.innerHTML=='无解'){
showit.innerHTML='正确!<br>确实无解。'
correct.innerHTML=rt+1;
}
else{
showit.innerHTML='错误!'+temp;
wrong.innerHTML=wg+1;
}
rt=parseInt(correct.innerHTML);
wg=parseInt(wrong.innerHTML);
yeild.innerHTML=Math.floor(rt/(rt+wg)*10000)/100+'%';
}
</script>
</html>
posted on 2006-03-29 13:22
汪杰 阅读(297)
评论(0) 编辑 收藏 引用 所属分类:
js game