asfman
android developer
posts - 90,  comments - 213,  trackbacks - 0

<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)>&nbsp;</b>
<b id=b2 style="width:60;height:100;font-size:25pt;cursor:hand;background:#ff8888;border:solid 1px #000000;"  onclick=addN(b1.value)>&nbsp;</b>
<b id=c2 style="width:60;height:100;font-size:25pt;cursor:hand;background:#ff8888;border:solid 1px #000000;"  onclick=addN(c1.value)>&nbsp;</b>
<b id=d2 style="width:60;height:100;font-size:25pt;cursor:hand;background:#ff8888;border:solid 1px #000000;"  onclick=addN(d1.value)>&nbsp;</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;">&nbsp;</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;">&nbsp;</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
只有注册用户登录后才能发表评论。

<2006年10月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

常用链接

留言簿(15)

随笔分类(1)

随笔档案(90)

文章分类(727)

文章档案(712)

相册

收藏夹

http://blog.csdn.net/prodigynonsense

友情链接

最新随笔

搜索

  •  

积分与排名

  • 积分 - 466814
  • 排名 - 6

最新随笔

最新评论

阅读排行榜

评论排行榜