深圳升蓝软件
数据库开发 .Net技术  |  ASP技术 PHP技术 JSP技术 应用技术类   
Hiblue Software

词语搭配游戏的制作(ASP)二


March 25,2004
//-----------------------------------------------------------
//得到用户输入的单词
function getWord()
{
    //只有当在单词输入框中按回车或
    //按“保存”按钮时才继续做下去
    if (window.event.type != "keypress" && window.event.type != "click")
        return;
    else        
        if (window.event.type == "keypress" && window.event.keyCode != 13) return;
   
    var eleSrc;
    var iIndex, iNxtWrdIdx;
    var strWord;
   
    //------------------------------------------
    //常变量说明
    //eleSrc            :发生事件的元素
    //iIndex            :表示词汇分类的数字。整型
    //iNxtWrdIdx    :新单词在单词数组中的索引。整型
    //strWord        :用户输入的单词。字符串型
    //------------------------------------------

    eleSrc = window.event.srcElement;
    iIndex = getEleIndex(eleSrc);    //获得索引
    strWord = trim(txtWord[iIndex].value);     //获得用户输入的单词
   
    //检测输入的单词是否合法
    //若是非法的单词则退出
    if (strWord == "")
    {
        //若输入的单词为空或空格字符串
        alert("单词不能为空或空格字符串");
        txtWord[iIndex].select();
        return;
    }
   
    if (strWord.indexOf(",") != -1 || strWord.indexOf(" ") != -1)
    {
        //若输入的单词包含逗号或空格
        alert("单词不能包含逗号或空格");
        txtWord[iIndex].select();
        return;
    }

    //将单词保存到词汇数组中
    iNxtWrdIdx = m_astrWords[iIndex].length;
    m_astrWords[iIndex][iNxtWrdIdx] = strWord;
    //showArray(m_astrWords[iIndex]);
   
    //将单词写入到页面中
    valueList(m_astrWords[iIndex], iIndex);
    txtWord[iIndex].value = "";
    txtWord[iIndex].focus();
}

//-----------------------------------------------------------
//将当前类别所有的单词从内存中删去
function reset()
{
    var eleSrc;
    var iIndex, iCount;
    var strPrompt;
   
    //------------------------------------------
    //常变量说明
    //eleSrc            :发生事件的元素
    //iIndex            :表示词汇分类的数字。整型
    //iCount            :计数器。整型
    //strPrompt    :操作提示。字符串型
    //------------------------------------------

    eleSrc = window.event.srcElement;
    iIndex = getEleIndex(eleSrc);
    strPrompt = "您确定要从内存中清除[" + m_astrSenPart[iIndex] + "]部分所有的单词吗?";
    if (window.confirm(strPrompt) == false) return;
   
    m_astrWords[iIndex] = new Array();
    valueList(m_astrWords[iIndex], iIndex);
    //showArray(m_astrWords[iIndex]);

    strPrompt = "单词清除完毕";
    alert(strPrompt);
    txtWord[iIndex].select();
}

//-----------------------------------------------------------
//将所选类别的当前词汇保存进文件中
function save()
{
    var eleSrc;
    var iIndex, iCount;
   
    //------------------------------------------
    //常变量说明
    //eleSrc    :发生事件的元素
    //iIndex    :表示词汇分类的数字。整型
    //iCount    :计数器。整型
    //------------------------------------------

    eleSrc = window.event.srcElement;
    iIndex = getEleIndex(eleSrc);
   
    if (m_astrWords[iIndex].length == 0)
    {
        //如果所选类别的当前单词个数为零
        var strPrompt;
        strPrompt   = "[" + m_astrSenPart[iIndex] + "]部分现在一个可选单词也没有,您确定要保存吗?";
        strPrompt += "n(这样将生成一个空的新文件)";
        if (window.confirm(strPrompt) == false) return;
    }
   
    //保存当前内存中所有的单词
    for (iCount = 0; iCount < m_iPartCnt; iCount ++)
        eval("frmWords.txtWords" + iCount).value = m_astrWords[iCount].join(",");
   
    frmWords.txtSenPart.value     = iIndex;
    frmWords.txtOpWay.value = "SAVE";
    frmWords.submit();
}

//-----------------------------------------------------------
//从文件中读取所选类别的单词纪录
function load()
{
    var eleSrc;
    var iIndex, iCount;
   
    //------------------------------------------
    //常变量说明
    //eleSrc    :发生事件的元素
    //iIndex    :表示词汇分类的数字。整型
    //iCount    :计数器。整型
    //------------------------------------------

    eleSrc = window.event.srcElement;
    iIndex = getEleIndex(eleSrc);
   
    //保存当前内存中所有的单词
    for (iCount = 0; iCount < m_iPartCnt; iCount ++)
        eval("frmWords.txtWords" + iCount).value = m_astrWords[iCount].join(",")

    frmWords.txtSenPart.value = iIndex;
    frmWords.txtOpWay.value = "LOAD";
    frmWords.submit();
}

//-----------------------------------------------------------
//显示词汇列表
function showList(iIndex)
{
    //如果未给定参数 iIndex
    //获得 iIndex
    if (iIndex == undefined)
    {
        //如果已有单词列表被固定,退出函数
        if (m_iListFixed != -1) return;
            
        var eleSrc;
        var iIndex;
        
        //------------------------------------------
        //常变量说明
        //eleSrc    :发生事件的元素
        //iIndex    :表示词汇分类的数字。整型
        //------------------------------------------

        eleSrc = window.event.srcElement;
        iIndex = getEleIndex(eleSrc);
    }
    //alert("iIndex: "+iIndex);
   
    //显示词汇列表
    //lblWordList[iIndex].innerText    = "[" + lblWordList[iIndex].innerText + "]";
    //lblWordList[iIndex].innerText    = lblWordList[iIndex].innerText + ">";
    lblWordList[iIndex].className    = "lblMOver";
    divWordList[iIndex].className= "listShown";
}

//-----------------------------------------------------------
//隐藏词汇列表
function hideList(iIndex)
{
    //如果未给定参数 iIndex
    //获得 iIndex
    if (iIndex == undefined)
    {
        //如果已有单词列表被固定,退出函数
        if (m_iListFixed != -1) return;

        var eleSrc;
        var iIndex;
        
        //------------------------------------------
        //常变量说明
        //eleSrc    :发生事件的元素
        //iIndex    :表示词汇分类的数字。整型
        //------------------------------------------

        eleSrc = window.event.srcElement;
        iIndex = getEleIndex(eleSrc);
    }
    //alert("iIndex: "+iIndex);
   
    //隐藏词汇列表
    //lblWordList[iIndex].innerText    = lblWordList[iIndex].innerText.slice(0, -1);
    lblWordList[iIndex].className    = "lblMOut";
    divWordList[iIndex].className= "listHidden";
}

//-----------------------------------------------------------
//固定词汇列表
function fixList()
{
    var eleSrc;
    var iIndex;
   
    //------------------------------------------
    //常变量说明
    //eleSrc    :发生事件的元素
    //iIndex    :表示词汇分类的数字。整型
    //------------------------------------------

    eleSrc = window.event.srcElement;
    iIndex = getEleIndex(eleSrc);
   
    switch (m_iListFixed)
    {
        case -1:
            //如果还没有单词列表被固定
            //固定当前列表
            m_iListFixed = iIndex;
            lblWordList[iIndex].className    = "lblClicked";
            divWordList[iIndex].className= "listFixed";
            break;
        
        case iIndex:
            //如果被固定单词列表是当前列表
            //解固当前列表
            m_iListFixed = -1;
            lblWordList[iIndex].className    = "lblMOver";
            divWordList[iIndex].className= "listShown";
            break;

        default:
            //如果被固定单词列表不是当前列表
            //解固被固定列表
            hideList(m_iListFixed);
            m_iListFixed = -1;
            lblWordList[iIndex].className    = "lblMOver";
            showList(iIndex);
            break;
    }

    //alert("m_iListFixed: " + m_iListFixed + "niIndex: " + iIndex);
}

//-----------------------------------------------------------
//写入某类词汇已载入的单词
function valueList(aWords, iSenPart)
{
    var iCount, iWrdCnt;
    var strListPpt;
   
    //------------------------------------------
    //常变量说明
    //iCount            :计数器。整型
    //iWrdCnt        :某类词汇单词的数目。整型
    //strListPpt    :单词列表中的提示。字符串型
    //------------------------------------------

    //数据准备
    iWrdCnt = aWords.length;
    lblWordCount[iSenPart].innerText = iWrdCnt;
    strListPpt   = "<div><span style='color: RED; font-style: Italic; font-size: 10.5pt;'>";
    strListPpt += "双击单词将其删除</span></div>";
   
    //将单词写入列表
    if (iWrdCnt != 0)
    {
        divWordList[iSenPart].innerHTML = strListPpt;
        for (iCount = 0; iCount < iWrdCnt; iCount ++)
            divWordList[iSenPart].innerHTML += makeOpt(aWords[iCount], iCount);
    }
    else
        divWordList[iSenPart].innerHTML = strListPpt;
}

//-----------------------------------------------------------
//显示帮助列表
function showHelp()
{
    //如果帮助列表已被固定,退出函数
    if (m_iHelpFixed == 0) return;

    //显示帮助
    lblHelp.className    = "lblMOver";
    divHelp.className    = "helpShown";
}

//-----------------------------------------------------------
//隐藏帮助列表
function hideHelp()
{
    //如果帮助列表已被固定,退出函数
    if (m_iHelpFixed == 0) return;

    //隐藏帮助
    lblHelp.className    = "lblMOut";
    divHelp.className    = "helpHidden";
}

//-----------------------------------------------------------
//固定帮助列表
function fixHelp()
{
    if (m_iHelpFixed == -1)
    {
        //如果帮助列表还未被固定
        //固定它
        m_iHelpFixed = 0;
        lblHelp.className    = "lblClicked";
        divHelp.className    = "helpFixed";
    }
    else
    {
        //如果帮助列表已被固定
        //解固它
        m_iHelpFixed = -1;
        lblHelp.className    = "lblMOver";
        divHelp.className    = "helpShown";
    }
}

//-----------------------------------------------------------
//重置页面至初始状态
function resetAll()
{
    var iCount;
    //------------------------------------------
    //常变量说明
    //iCount    :计数器。整型
    //------------------------------------------

    for (iCount = 0; iCount < m_iPartCnt; iCount ++)
    {
        txtWord[iCount].value= "";
        m_astrWords[iCount]    = new Array();    //将单词数组清空
        valueList(m_astrWords[iCount], iCount);
    }

    txtSentence.value = "";
    txtWord[0].focus();
}

//-----------------------------------------------------------
//把所有类别的单词都存入文件
function saveAll()
{
    var iCount, iEmptyCnt;
    var strPrompt;
   
    //------------------------------------------
    //常变量说明
    //iCount            :计数器。整型
    //iEmptyCnt    :单词数目为0的类别个数。整型
    //strPrompt    :操作提示。字符串型
    //------------------------------------------

    iEmptyCnt = 0;
    for (iCount = 0; iCount < m_iPartCnt; iCount ++)
    {
        //保存当前内存中所有的单词
        eval("frmWords.txtWords" + iCount).value = m_astrWords[iCount].join(",");
        if (m_astrWords[iCount].length == 0)
            iEmptyCnt ++;
    }
    //alert("iEmptyCnt: " + iEmptyCnt);
   
    if (iEmptyCnt > 0)
    {
        switch (iEmptyCnt)
        {
            case m_iPartCnt:
                strPrompt   = "所有类别的词汇单词个数都为0,操作将会产生" + m_iPartCnt + "个空文件";
                strPrompt += "n您确定要这样做吗?";
                break;

            default:
                strPrompt = "其中,";
                for (iCount = 0; iCount < m_iPartCnt; iCount ++)
                    if (m_astrWords[iCount].length == 0)
                        strPrompt += "[" + m_astrSenPart[iCount] + "]、";
                strPrompt   = strPrompt.slice(0, -1);
                strPrompt += "部分单词个数为0";
                strPrompt += "n操作将会产生" + iEmptyCnt + "个空文件";
                strPrompt += ",您确定要这样做吗?";
        }

        if (window.confirm(strPrompt) == false) return;
    }
   
    frmWords.txtOpWay.value = "SAVEALL";
    frmWords.submit();
}

//-----------------------------------------------------------
//从文件中载入所有类别的单词
function loadAll()
{
    var iCount;
    //------------------------------------------
    //常变量说明
    //iCount            :计数器。整型
    //------------------------------------------

    //保存当前内存中所有的单词
    for (iCount = 0; iCount < m_iPartCnt; iCount ++)
        eval("frmWords.txtWords" + iCount).value = m_astrWords[iCount].join(",")
   
    frmWords.txtOpWay.value = "LOADALL";
    frmWords.submit();
}

//-----------------------------------------------------------
//进行词汇搭配,得到一个句子
function assemble()
{
    var iCount, iWrdCnt, iRndIndex;
    var strSentence;
   
    //------------------------------------------
    //常变量说明
    //iCount            :计数器。整型
    //iWrdCnt        :某类词汇单词的个数。整型
    //iRndIndex    :随机产生的单词索引。整型
    //strSentence    :由各个类别词汇中的随机单词组成的句子。字符串型
    //------------------------------------------

    strSentence = "";
    for (iCount = 0; iCount < m_iPartCnt; iCount ++)
    {
        //如果当前类别词汇的个数为0
        //给出提示,并中止搭配
        iWrdCnt = m_astrWords[iCount].length;
        if (iWrdCnt == 0)
        {
            var strPrompt;
            //------------------------------------------
            //常变量说明
            //strPrompt    :操作提示。字符串型
            //------------------------------------------

            strPrompt = "[" + m_astrSenPart[iCount] + "]部分一个可选单词也没有";
            strPrompt += "n请至少输入一个单词";
            alert(strPrompt);
            txtWord[iCount].select();
            return;
        }
        
        //随机抽取当前类别词汇中的一个单词
        //加入到句子中
        iRndIndex = Math.floor(Math.random()*iWrdCnt);
        strSentence += m_astrWords[iCount][iRndIndex];
        //alert("iWrdCnt: " + iWrdCnt + "niRndIndex: " + iRndIndex);
    }
   
    strSentence += "。";
    txtSentence.value = strSentence;
}

//使鼠标移到之处的按钮
//产生“点亮”的效果
function lightBtn()
{
    var eleSrc;
    //------------------------------------------
    //常变量说明
    //eleSrc    :发生事件的元素
    //------------------------------------------

    eleSrc = window.event.srcElement;
    while (eleSrc.tagName.toUpperCase() != "BUTTON")
        eleSrc = eleSrc.parentElement;
    eleSrc.className = "btnLighted";
}

//使鼠标离开的按钮
//还原为初始状态
function delightBtn()
{
    var eleSrc;
    //------------------------------------------
    //常变量说明
    //eleSrc    :发生事件的元素
    //------------------------------------------

    eleSrc = window.event.srcElement;
    while (eleSrc.tagName.toUpperCase() != "BUTTON")
        eleSrc = eleSrc.parentElement;
    eleSrc.className = "btnDelighted";
}
       
Copyright © 2001-2008 Shenzhen Hiblue Software Team All rights reserved