注册 登录
编程论坛 JavaScript论坛

js编写算24点小游戏

yeelone 发布于 2010-08-31 09:06, 1921 次点击
程序代码:
<head>
<title>24点游戏</title>
<meta http-equiv="content-type"  content="text/html";charset=utf-8>
<style>
body {background-color:buttonface;}
#text_result {
        background-color:#6090da;
        border:black solid 1px;
        color:white;
        font-weight:bold;
        height:20px;        
}
</style>

<script type="text/javascript">
<!--
var v1,v2,v3,v4,v5,text_result;
function $(str){return(document.getElementById(str));}
function call(val1,val2,val3,val4)
{

        thearray0=new Array(val1,val2,val3,val4);
        thearray1=new Array('1234','1243','1324','1342','1423','1432',
        '2134','2143','2341','2314','2413','2431','3124','3142','3241','3214','3412','3421','4123','4132','4213','4231','4312','4321');
        thearray2=new Array('+' ,'-','*', '/');

        a1=parseInt(v5.value);

        for(var ii=0;ii<24;ii++)
        {
                thearray3=thearray1[ii].split('');
                for(var mm=0;mm<4;mm++)
                {
                        thearray3[mm]=parseInt(thearray3[mm]);
                }

                for(var jj=0;jj<4;jj++){
                        for(var kk=0;kk<4;kk++){
                                for(var ll=0;ll<4;ll++)
                                {
                                        ss1=thearray0[therray3[0]-1]+thearray2[jj]+therray0[thearray3[1]-1]+thearray2[kk]+thearray0[thearray[2]-1]+thearray2[ll]+thearray0[thearray3[3]-1];
                                        if(eval(ss1)==a1)
                                        {return(ss1);}

                                        ss1='('+thearray0[thearray3[0]-1]+thearray2[jj]+thearray0[thearray3[1]-1]+')'+thearray2[kk]+thearray0[thearray[2]-1]+thearray2[ll]+thearray0[thearray3[3]-1];
                                        if(eval(ss1)==a1)
                                        {return(ss1);}
                                        ss1=thearray0[thearray3[0]-1]+thearray2[jj]+'('+thearray0[thearray3[1]-1]+thearray2[kk]+thearray0[thearray[2]-1]+')'+thearray2[ll]+thearray0[thearray3[3]-1];
                                        if(eval(ss1)==a1)
                                        {return(ss1);}
                                        ss1=thearray0[thearray3[0]-1]+thearray2[jj]+thearray0[thearray3[1]-1]+thearray2[kk]+'('+thearray0[thearray[2]-1]+thearray2[ll]+thearray0[thearray3[3]-1]+')';
                                        if(eval(ss1)==a1)
                                        {return(ss1);}
                                       
                                        ss1='('+thearray0[thearray3[0]-1]+thearray2[jj]+thearray0[thearry3[1]-1]+thearray2[kk]+thearray0[thearray[2]-1]+')'+thearray2[ll]+thearray0[thearray3[3]-1];
                                        if(eval(ss1)==a1)
                                        {return(ss1);}
                                        ss1=thearray0[thearray3[0]-1]+thearray2[jj]+'('+thearray0[thearray3[1]-1]+thearray2[kk]+thearray0[thearray[2]-1]+thearray2[ll]+thearray0[thearray3[3]-1]+')';
                                        if(eval(ss1)==a1)
                                        {return(ss1);}
                                }

        }}}
        return(false);
}


function check1(boj1)
{
        if(isNaN(boj1.value))
                {

                        alert("请输入数值");
                        boj1.focus();                        
                        boj1.select();
                        event.returnValue=false;
                        event.cancelBubble=true;
                        return(false);
                }
}

function init()
{
        v1=$("v1");
   
        v2=$("v2");
        v3=$("v3");
        v4=$("v4");
        v5=$("v5");
        text_result=$("text_result");
        v1.select();
}

function main()
{
        var s1=call(v1.value,v2.value,v3.value,v4.value);

        if(s1)
        {      
                text_result.innerText+='\n'+s1+'=='+v5.value;
        }
        else
        {
                text_result.innerText+='\n'+v1.value+','+v2.value+','+v3.value+','+v4.value+','+v5.value+'        无效果!';
        }
        init();
        return(false);
}





-->
</script>


</head>
<body  style="overflow:auto;"   onload="init();">
<form  onsubmit="return(main());">
<b>请输入要计算的四个数:</b><br>
<input id="v1" onchange="check1(this);">
<input id="v2" onchange="check1(this);"><br>
<input id="v3" onchange="check1(this);">
<input id="v4" onchange="check1(this);"><br>
<b>请输入要计算的目标结果:</b>
<input id="v5" onchange="check1(this);"  value="24"><br>
<input type="submit" value="计算">
<input type="reset" onclick="clear_input();" value="清除结果">
</form>
<b>结果:</b><br>
<div id="text_result" ><div>

</body>
</html>

根据书里代码是这样写的,输入四个数字之后,点击“计算”没有效果。请大家帮我看看
10 回复
#2
foktime2010-08-31 11:22
变量名拼写错误无数,请再编写代码的过程中务必仔细仔细再仔细!!!!!
程序代码:
<html>
<head>
<title>24点游戏</title>
<meta http-equiv="content-type"  content="text/html";charset=utf-8>
<style>
body {background-color:buttonface;}
#text_result {
        background-color:#6090da;
        border:black solid 1px;
        color:white;
        font-weight:bold;
        height:20px;      
}
</style>

<script type="text/javascript">
<!--
var v1,v2,v3,v4,v5,text_result;
function $(str){return(document.getElementById(str));}
function call(val1,val2,val3,val4)
{

        thearray0=new Array(val1,val2,val3,val4);
        thearray1=new Array('1234','1243','1324','1342','1423','1432',
        

'2134','2143','2341','2314','2413','2431','3124','3142','3241','3214','3412','3421','4123','4132

','4213','4231','4312','4321');
        thearray2=new Array('+' ,'-','*', '/');

        a1 = parseInt(v5.value);
      
        for(var ii=0;ii<24;ii++)
        {
            thearray3 = thearray1[ii].split('');
                for(var mm=0;mm<4;mm++)
                {
                        thearray3[mm]=parseInt(thearray3[mm]);
                }
               
                for(var jj=0;jj<4;jj++){
                        for(var kk=0;kk<4;kk++){
                            for (var ll = 0; ll < 4; ll++) {
                                ss1 = thearray0[thearray3[0] - 1] + thearray2[jj] + thearray0

[thearray3[1] - 1] + thearray2[kk] + thearray0[thearray3[2] - 1] + thearray2[ll] + thearray0

[thearray3[3] - 1];
                                if (eval(ss1) == a1)
                                { return (ss1); }
                                ss1 = '(' + thearray0[thearray3[0] - 1] + thearray2[jj] +

thearray0[thearray3[1] - 1] + ')' + thearray2[kk] + thearray0[thearray3[2] - 1] + thearray2[ll]

+ thearray0[thearray3[3] - 1]; ;
                                if (eval(ss1) == a1)
                                { return (ss1); }
                                ss1 = thearray0[thearray3[0] - 1] + thearray2[jj] + '(' +

thearray0[thearray3[1] - 1] + thearray2[kk] + thearray0[thearray3[2] - 1] + ')' + thearray2[ll]

+ thearray0[thearray3[3] - 1];
                                if (eval(ss1) == a1)
                                { return (ss1); }
                                ss1 = thearray0[thearray3[0] - 1] + thearray2[jj] + thearray0

[thearray3[1] - 1] + thearray2[kk] + '(' + thearray0[thearray3[2] - 1] + thearray2[ll] +

thearray0[thearray3[3] - 1] + ')';
                                if (eval(ss1) == a1)
                                { return (ss1); }

                                ss1 = '(' + thearray0[thearray3[0] - 1] + thearray2[jj] +

thearray0[thearray3[1] - 1] + thearray2[kk] + thearray0[thearray3[2] - 1] + ')' + thearray2[ll]

+ thearray0[thearray3[3] - 1];
                                if (eval(ss1) == a1)
                                { return (ss1); }
                                ss1 = thearray0[thearray3[0] - 1] + thearray2[jj] + '(' +

thearray0[thearray3[1] - 1] + thearray2[kk] + thearray0[thearray3[2] - 1] + thearray2[ll] +

thearray0[thearray3[3] - 1] + ')';
                                if (eval(ss1) == a1)
                                { return (ss1); }
                            }
                        }
                    }
                }
                return (false);
}


function check1(boj1)
{
        if(isNaN(boj1.value))
                {
                        alert("请输入数值");
                        boj1.focus();                       
                        boj1.select();
                        event.returnValue=false;
                        event.cancelBubble=true;
                        return(false);
                }
}

function init()
{
        v1=$("v1");
        v2=$("v2");
        v3=$("v3");
        v4=$("v4");
        v5=$("v5");
        text_result=$("text_result");
        v1.select();
}

function main()
{
    init();
    var s1 = call(v1.value, v2.value, v3.value, v4.value);
    if (s1) {
        text_result.innerText += '\n' + s1 + '==' + v5.value;
    }
    else {
        text_result.innerText += '\n' + v1.value + ',' + v2.value + ',' + v3.value + ',' +

v4.value + ',' + v5.value + '        无效果!';
    }

    return (false);
}





-->
</script>


</head>
<body  style="overflow:auto;"   onload="init();">
<form  onsubmit="return(main());">
<b>请输入要计算的四个数:</b><br>
<input id="v1" onchange="check1(this);">
<input id="v2" onchange="check1(this);"><br>
<input id="v3" onchange="check1(this);">
<input id="v4" onchange="check1(this);"><br>
<b>请输入要计算的目标结果:</b>
<input id="v5" onchange="check1(this);"  value="24"><br>
<input type="submit" value="计算">
<input type="reset" onclick="clear_input();" value="清除结果">
</form>
<b>结果:</b><br>
<div id="text_result" ><div>

</body>
</html>


[ 本帖最后由 foktime 于 2010-8-31 11:23 编辑 ]
#3
yeelone2010-08-31 13:05
还是没有效果。感觉call函数没起作用。
#4
foktime2010-08-31 13:37
不知道是不是中间贴代码的时候是不是出了什么错误 再贴一遍。
程序代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.点游戏</title>
<meta http-equiv="content-type"  content="text/html";charset=utf-8>
<style>
body {background-color:buttonface;}
#text_result {
        background-color:#6090da;
        border:black solid 1px;
        color:white;
        font-weight:bold;
        height:20px;      
}
</style>

<script type="text/javascript">
<!--
var v1,v2,v3,v4,v5,text_result;
function $(str){return(document.getElementById(str));}
function call(val1,val2,val3,val4)
{

        thearray0=new Array(val1,val2,val3,val4);
        thearray1=new Array('1234','1243','1324','1342','1423','1432',
        '2134','2143','2341','2314','2413','2431','3124','3142','3241','3214','3412','3421','4123','4132','4213','4231','4312','4321');
        thearray2=new Array('+' ,'-','*', '/');

        a1 = parseInt(v5.value);
      
        for(var ii=0;ii<24;ii++)
        {
            thearray3 = thearray1[ii].split('');
                for(var mm=0;mm<4;mm++)
                {
                        thearray3[mm]=parseInt(thearray3[mm]);
                }
               
                for(var jj=0;jj<4;jj++){
                        for(var kk=0;kk<4;kk++){
                            for (var ll = 0; ll < 4; ll++) {
                                ss1 = thearray0[thearray3[0] - 1] + thearray2[jj] + thearray0[thearray3[1] - 1] + thearray2[kk] + thearray0[thearray3[2] - 1] + thearray2[ll] + thearray0[thearray3[3] - 1];
                                if (eval(ss1) == a1)
                                { return (ss1); }
                                ss1 = '(' + thearray0[thearray3[0] - 1] + thearray2[jj] + thearray0[thearray3[1] - 1] + ')' + thearray2[kk] + thearray0[thearray3[2] - 1] + thearray2[ll] + thearray0[thearray3[3] - 1]; ;
                                if (eval(ss1) == a1)
                                { return (ss1); }
                                ss1 = thearray0[thearray3[0] - 1] + thearray2[jj] + '(' + thearray0[thearray3[1] - 1] + thearray2[kk] + thearray0[thearray3[2] - 1] + ')' + thearray2[ll] + thearray0[thearray3[3] - 1];
                                if (eval(ss1) == a1)
                                { return (ss1); }
                                ss1 = thearray0[thearray3[0] - 1] + thearray2[jj] + thearray0[thearray3[1] - 1] + thearray2[kk] + '(' + thearray0[thearray3[2] - 1] + thearray2[ll] + thearray0[thearray3[3] - 1] + ')';
                                if (eval(ss1) == a1)
                                { return (ss1); }

                                ss1 = '(' + thearray0[thearray3[0] - 1] + thearray2[jj] + thearray0[thearray3[1] - 1] + thearray2[kk] + thearray0[thearray3[2] - 1] + ')' + thearray2[ll] + thearray0[thearray3[3] - 1];
                                if (eval(ss1) == a1)
                                { return (ss1); }
                                ss1 = thearray0[thearray3[0] - 1] + thearray2[jj] + '(' + thearray0[thearray3[1] - 1] + thearray2[kk] + thearray0[thearray3[2] - 1] + thearray2[ll] + thearray0[thearray3[3] - 1] + ')';
                                if (eval(ss1) == a1)
                                { return (ss1); }
                            }
                        }
                    }
                }
                return (false);
}


function check1(boj1)
{
        if(isNaN(boj1.value))
                {
                        alert("请输入数值");
                        boj1.focus();                       
                        boj1.select();
                        event.returnValue=false;
                        event.cancelBubble=true;
                        return(false);
                }
}

function init()
{
        v1=$("v1");
        v2=$("v2");
        v3=$("v3");
        v4=$("v4");
        v5=$("v5");
        text_result=$("text_result");
        v1.select();
}

function main()
{
    init();
    var s1 = call(v1.value, v2.value, v3.value, v4.value);
    if (s1) {
        text_result.innerText += '\n' + s1 + '==' + v5.value;
    }
    else {
        text_result.innerText += '\n' + v1.value + ',' + v2.value + ',' + v3.value + ',' + v4.value + ',' + v5.value + '        无效果!';
    }

    return (false);
}





-->
</script>


</head>
<body  style="overflow:auto;"   onload="init();">
<form  onsubmit="return(main());">
<b>请输入要计算的四个数:</b><br>
<input id="v1" onchange="check1(this);">
<input id="v2" onchange="check1(this);"><br>
<input id="v3" onchange="check1(this);">
<input id="v4" onchange="check1(this);"><br>
<b>请输入要计算的目标结果:</b>
<input id="v5" onchange="check1(this);"  value="24"><br>
<input type="submit" value="计算">
<input type="reset" onclick="clear_input();" value="清除结果">
</form>
<b>结果:</b><br>
<div id="text_result" ><div>

</body>
</html>

#5
gupiao1752010-08-31 17:49
24点代码很有意思,顶!
#6
yeelone2010-08-31 22:58
成功了。哈哈。谢谢版主。
是我 的变量错了吗?我之前检查了好多次的啊,没看出来。版主还记得是我哪写错了吗?能否说一下。
#7
yeelone2010-08-31 23:05
我发现版主只是在我的操作符之间多了很多空格而已啊。
在linux下用
diff  比较两个文件是这样显示的
#8
yeelone2010-08-31 23:17
我一直没看出是哪里错了,版主可否说 一下?
#9
foktime2010-09-01 08:16
笨笨 本来希望你能自己好好检查一下 既然这么说了那就告诉你 不过得给我发工资
一. ss1=thearray0[therray3[0]-1]+thearray2[jj]+therray0[thearray3[1]-1]+thearray2[kk]+thearray0[thearray[2]-1]+thearray2[ll]+thearray0[thearray3[3]-1];
这个,哪来的thearray??你用ie调试一下都可以看到  有thearray未定义的报错。综合前后我推断这个应该是thearray3才对,并且与此类似的几行代码都有这个错误;
二. ss1='('+thearray0[thearray3[0]-1]+thearray2[jj]+thearray0[thearry3[1]-1]+thearray2[kk]+thearray0[thearray[2]-1]+')'+thearray2[ll]+thearray0[thearray3[3]-1];
你觉得thearry3和thearray3长的一个模样吗?上面定义了thearray3,下面用的时候却变成了thearry3。类似错误我只说这一个,事实上里面还有好几个同样的问题,你自己找找吧,要学会排错

#10
yeelone2010-09-01 11:11
我学js才几天,现在还不知道怎么排错。
现在还不懂得有没有工具可以排错。我已经在一行行的查,可是还是漏了。
谢谢版主。
#11
foktime2010-09-01 13:36
回复 10楼 yeelone
ie8有自带调试工具,firefox的firebug组件也不错
1