top
Loading...
詞語搭配游戲的制作(ASP)一
說明:
這是個關于詞語搭配的游戲,是用ASP、VBScript和JavaScript寫的。
在本機Win98 OEM2、PWS、IE5下測試下沒發現大問題。

使用方法:
方法一:比方說你的3W服務的目錄是C:Inetpubwwwroot,在下面建一個目錄,如wordAsb;
將游戲文件(wordAsb.asp)拷入目錄中;在IE的地址欄中鍵入http://+你的機器名+/wordAsb/wordAsb.asp
或http://127.0.0.1/wordAsb/wordAsb.asp,回車,就可以開始游戲了

方法二:將游戲文件(wordAsb.asp)隨便拷入一新建的目錄。鼠標右鍵點擊該目錄,菜單中選“屬性”,
點“Web Sharing”屬性頁,點選“Share this folder”項,點“OK”就可以了。
在IE的地址欄中鍵入http://+你的機器名+/新建目錄的名稱/wordAsb.asp
或http://127.0.0.1/+新建目錄的名稱+/wordAsb.asp,回車,就可以開始游戲了

注:您的機子OS應該是NT或Win2000 Server或其他OS但是裝有PWS

游戲方法:
單擊游戲中的“游戲說明”就知道了;
如果有時頁面一片空白,請按F5刷新一遍(這也是目前最大的bug吧),不知為什么

代碼如下:

--------------------------------------------------------------------------------

<%@ Language = VBScript%>
<%
Option Explicit
'Last Updated By Recon On 03/16/2001

Dim m_iPartCnt
Dim m_strPrompt
Dim m_astrSenPart(), m_astrFileName()
Dim m_astrWords(), m_aiOpStatus()

'------------------------------------------
'常變量說明
'm_iPartCnt :詞匯分類的數目。整型
'm_strPrompt :對文件操作完畢后的提示。字符串型
'm_astrSenPart :詞匯分類的名稱。字符型數組
'm_astrFileName :記錄各類詞匯文件的文件名。字符型數組
'm_astrWords :紀錄各類詞匯。二維字符型數組
'm_aiOpStatus :紀錄對各個文件操作后的狀態。整型數組
'------------------------------------------

'ShowMethod
m_iPartCnt = 4
m_strPrompt = ""
ReDim m_astrSenPart(m_iPartCnt)
ReDim m_astrFileName(m_iPartCnt)
ReDim m_astrWords(m_iPartCnt)
ReDim m_aiOpStatus(m_iPartCnt)

'定義各種詞匯分類的名稱
m_astrSenPart(0) = "主語"
m_astrSenPart(1) = "程度狀語"
m_astrSenPart(2) = "地點狀語"
m_astrSenPart(3) = "謂語"

'定義記載各類詞匯文件的名稱
m_astrFileName(0) = "Who.txt"
m_astrFileName(1) = "How.txt"
m_astrFileName(2) = "Where.txt"
m_astrFileName(3) = "What.txt"

If Request.ServerVariables("REQUEST_METHOD") = "POST" Then
'如果頁面的請求方式是 POST

'************************
'獲得客戶端的信息
'************************
Dim m_iSenPart
Dim m_strOpWay
Dim m_bRptedData

'------------------------------------------
'常變量說明
'm_iSenPart :表示詞匯分類的數字。整型
' 詞匯的分類來自數組m_astrSenPart
' 可能的值有:
' 0:主語
' 1:程度狀語
' 2:地點狀語
' 3:謂語

'm_strOpWay :文件操作方式。字符串型
' 可能的值有:
' 1、SAVE :將某類詞匯存入文件
' 2、SAVEALL :將所有類別的詞匯存入文件
' 3、LOAD :從文件中載入某類詞匯
' 4、LOADALL :從文件中載入所有類別的詞匯

'm_bRptedData :表示本次提交的表單數據和上次是否相同。布爾型
' 可能的值有:
' 1、False :表單數據不重復
' 2、True :表單數據重復(即重復提交表單)
'------------------------------------------

'ShowForm
'獲得用戶請求的操作方式
m_strOpWay = Request.Form("txtOpWay")
'Show("m_strOpWay")

'獲得各個類別的單詞
For m_iCount = 0 To (m_iPartCnt - 1)
If Request.Form("txtWords" & m_iCount) <> "" Then
m_astrWords(m_iCount) = Split(Request.Form("txtWords" & m_iCount), ",")
End If
'Response.Write UBound(m_astrWords(m_iCount)) & "<br>"
Next

'檢測是否重復提交表單
'If Session("FormInf") = Request.Form Then
' '表單是重復提交
' m_bRptedData = True
'Else
' '表單是非重復提交
' Session("FormInf") = Request.Form
' m_bRptedData = False
'End If
'Show("m_bRptedData")

'************************
'對單詞文件進行操作
'************************
'If m_bRptedData = False Then

Dim m_iCount, m_iErrCnt
Dim m_strFilePath

'------------------------------------------
'常變量說明
'm_iCount :計數器。整型
'm_iErrCnt :發生操作失敗的次數。整型
'm_strFilePath :記錄各類詞匯文件的路徑。字符串型
'------------------------------------------

'獲得放置詞匯文件的路徑
m_strFilePath = Request.ServerVariables("PATH_TRANSLATED")
m_strFilePath = Left(m_strFilePath, InStrRev(m_strFilePath, ""))
'm_strFilePath = m_strFilePath & "Words"
'Show("m_strFilePath")

'開始操作文件
'Response.Write "Begin to Operate Word Files<br>"
Select Case m_strOpWay
Case "SAVE"
'保存單詞到文件中
m_iSenPart = CInt(Request.Form("txtSenPart"))
m_aiOpStatus(m_iSenPart) = SaveFile(m_iSenPart)

'根據操作狀態,得到提示信息
Select Case m_aiOpStatus(m_iSenPart)
Case 0
m_strPrompt = "[" & m_astrSenPart(m_iSenPart) & "]部分單詞已成功地被保存到文件中"

Case 1
m_strPrompt = "[" & m_astrSenPart(m_iSenPart) & "]部分文件保存失敗"
End Select

Case "SAVEALL"
'保存所有類別的單詞到文件中
m_iErrCnt = 0
For m_iCount = 0 To (m_iPartCnt - 1)
m_aiOpStatus(m_iCount) = SaveFile(m_iCount)
If m_aiOpStatus(m_iCount) = 1 Then
m_iErrCnt = m_iErrCnt + 1
End If
Next

'根據操作狀態,得到提示信息
Select Case m_iErrCnt
Case 0
m_strPrompt = "所有類別的單詞都已成功地被保存到文件中"

Case m_iPartCnt
m_strPrompt = "所有類別的單詞文件都保存失敗"

Case Else
m_strPrompt = "其中,"
For m_iCount = 0 To (m_iPartCnt - 1)
If m_aiOpStatus(m_iCount) = 1 Then
m_strPrompt = m_strPrompt & "[" & m_astrSenPart(m_iCount) & "]、"
End If
Next
m_strPrompt = Left(m_strPrompt, Len(m_strPrompt) - 1)
m_strPrompt = m_strPrompt & "部分文件保存失敗"
End Select

Case "LOAD"
'從文件中載入單詞
m_iSenPart = CInt(Request.Form("txtSenPart"))
m_aiOpStatus(m_iSenPart) = LoadFile(m_iSenPart)

'根據操作狀態,得到提示信息
Select Case m_aiOpStatus(m_iSenPart)
Case 0
m_strPrompt = "[" & m_astrSenPart(m_iSenPart) & "]部分單詞已成功地被載入"

Case 1
m_strPrompt = "[" & m_astrSenPart(m_iSenPart) & "]部分文件不存在,載入失敗"
End Select

Case "LOADALL"
'從各個文件中載入單詞
m_iErrCnt = 0
For m_iCount = 0 To (m_iPartCnt - 1)
m_aiOpStatus(m_iCount) = LoadFile(m_iCount)
If m_aiOpStatus(m_iCount) = 1 Then
m_iErrCnt = m_iErrCnt + 1
End If
Next

'根據操作狀態,得到提示信息
Select Case m_iErrCnt
Case 0
m_strPrompt = "所有類別的單詞都已成功地被載入"

Case m_iPartCnt
m_strPrompt = "所有類別的單詞文件都不存在,載入完全失敗"

Case Else
m_strPrompt = "其中,"
For m_iCount = 0 To (m_iPartCnt - 1)
If m_aiOpStatus(m_iCount) = 1 Then
m_strPrompt = m_strPrompt & "[" & m_astrSenPart(m_iCount) & "]、"
End If
Next
m_strPrompt = Left(m_strPrompt, Len(m_strPrompt) - 1)
m_strPrompt = m_strPrompt & "部分文件不存在,載入部分失敗"
End Select
End Select

'End If
End If
'Response.Write "End to Operate Word Files<br>"
'Response.Write "Begin to Write Client Page<br>"
%>

<html>
<head>
<title> 詞語搭配游戲 </title>
<meta name="Generator" content="EditPlus">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">

<!--風格表-->
<style>
<!--
/*英文字體1*/
.fontEng1
{
font-family: TIMES NEW ROMAN;
font-style: ;
}

/*英文字體2*/
.fontEng2
{
font-family: TIMES NEW ROMAN;
font-style: ITALIC;
}

/*強調字體*/
.fontEmp
{
color: RED;
}

/*鏈接*/
.link
{
font-family: TIMES NEW ROMAN;
font-style: ITALIC;
text-decoration: NONE;
}

/*被顯示的單詞列表*/
.listShown
{
position: ABSOLUTE;
width: 140px;
height: 200px;
display: INLINE;
border: LIGHTCORAL 1px SOLID;
background-color: GAINSBORO;
}

/*被隱藏的單詞列表*/
.listHidden
{
position: ABSOLUTE;
width: 140px;
height: 200px;
display: NONE;
border: LIGHTCORAL 1px SOLID;
background-color: GAINSBORO;
}

/*被固定的單詞列表*/
.listFixed
{
position: ABSOLUTE;
width: 140px;
height: 200px;
display: INLINE;
border: RED 1px SOLID;
background-color: GAINSBORO;
}

/*被顯示的幫助列表*/
.helpShown
{
position: ABSOLUTE;
width: ;
height: ;
display: block;
border: LIGHTCORAL 1px SOLID;
background-color: GAINSBORO;
}

/*被隱藏的幫助列表*/
.helpHidden
{
position: ABSOLUTE;
width: ;
height: ;
display: NONE;
border: LIGHTCORAL 1px SOLID;
background-color: GAINSBORO;
}

/*被固定的幫助列表*/
.helpFixed
{
position: ABSOLUTE;
width: ;
height: ;
display: block;
border: RED 1px SOLID;
background-color: GAINSBORO;
}

/*被強調顯示的標簽*/
.lblMOver
{
text-decoration: NONE;
color: LIGHTCORAL;
background-color: ;
}

/*正常顯示的標簽*/
.lblMOut
{
text-decoration: NONE;
color: ;
background-color: ;
}

/*被點擊過的標簽*/
.lblClicked
{
text-decoration: UNDERLINE;
color: RED;
background-color: ;
}

/*高亮顯示的按鈕*/
.btnLighted
{
width: 105px;
color: BLUE;
background-color: ;
}

/*正常顯示的按鈕*/
.btnDelighted
{
width: 105px;
color: ;
background-color: ;
}

/*高亮顯示的單詞列表項*/
.optLighted
{
text-decoration: UNDERLINE;
color: BLUE;
background-color: ;
cursor: HAND;
}

/*正常顯示的單詞列表項*/
.optDelighted
{
text-decoration: NONE;
color: ;
background-color: ;
cursor: ;
}
-->
</style>

<!--客戶端腳本-->
<script language="JavaScript">
<!--
//客戶端公用及測試函數
//************************
//函數名 :lTrim
//功能 :去掉字串左邊的空格
//輸入 :1、strTemp :要規整的字串。字符串型
//輸出 :規整后的字串。字符串型
//************************
function lTrim(strTemp)
{
var iCount, iLength;
//------------------------------------------
//常變量說明
//iCount :計數器。整型
//iLength :字串的長度。整型
//------------------------------------------

iLength = strTemp.length;
for (iCount = 0; iCount < iLength; iCount ++)
if (strTemp.charAt(iCount) != " ")
return strTemp.substring(iCount, iLength);

return "";
}

//************************
//函數名 :rTrim
//功能 :去掉字串右邊的空格
//輸入 :1、strTemp :要規整的字串。字符串型
//輸出 :規整后的字串。字符串型
//************************
function rTrim(strTemp)
{
var iCount, iLength;
//------------------------------------------
//常變量說明
//iCount :計數器。整型
//iLength :字串的長度。整型
//------------------------------------------

iLength = strTemp.length;
for(iCount = iLength - 1; iCount >= 0; iCount --)
if (strTemp.charAt(iCount) != " ")
return strTemp.substring(0, iCount + 1);

return "";
}

//************************
//函數名 :trim
//功能 :去掉字串兩邊的空格
//輸入 :1、strTemp :要規整的字串。字符串型
//輸出 :規整后的字串。字符串型
//************************
function trim(strTemp)
{
return rTrim(lTrim(strTemp));
}

//將2位數字轉換成2位數字字串
//************************
//函數名 :get2bNumStr
//功能 :轉換2位的數字成2位的數字字串
//輸入 :1、iNumber :要轉換的數字。整型
//輸出 :轉換后得到的數字字串。整型
//************************
function get2bNumStr(iNumber)
{
var str2bNum;
//------------------------------------------
//常變量說明
//str2bNum :數字字串。字符串型
//------------------------------------------

if (parseInt(iNumber) < 10)
str2bNum = "0" + iNumber;
else
str2bNum = "" + iNumber;

return str2bNum;
}

//************************
//函數名 :assignFunc
//功能 :指定元素的事件處理函數
//輸入 :1、ele :要指定事件處理函數的元素。對象型
// 2、func :事件處理函數。函數型
// 3、event :事件類型。字符串型
//輸出 :無
//************************
function assignFunc(ele, func, event)
{
var iCount, iEleCount;
var strEvent;

//------------------------------------------
//常變量說明
//iCount :計數器。整型
//iEleCount :同名元素集合中元素的個數。整型
//strEvent :事件類型。字符串型
//------------------------------------------

if (event == null)
strEvent = "onclick";
else
strEvent = event;

iEleCount = ele.length;
if (iEleCount == undefined)
eval("ele." + strEvent + " = " + func);
else
for (iCount = 0; iCount < iEleCount; iCount ++)
eval("ele[iCount]." + strEvent + " = " + func);
}

//************************
//函數名 :getEleIndex
//功能 :得到發生事件的元素在同名集合中的索引
//輸入 :1、eleSrc :發生事件的元素。對象型
//輸出 :發生事件的元素在同名集合中的索引
//************************
function getEleIndex(eleSrc)
{
var colSrc;
var iCount, iEleCount;

//------------------------------------------
//常變量說明
//colSrc :同名元素集合。對象型數組
//iCount :計數器。整型
//iEleCount :同名元素集合中元素的個數。整型
//------------------------------------------

colSrc = eval(eleSrc.id);
iEleCount = colSrc.length;
for (iCount = 0; iCount < iEleCount; iCount ++)
{
if (colSrc[iCount] == eleSrc)
return iCount;
}

return -1;
}

//顯示常變量的值(調試用)
//!準備刪去
function show(strDef1, strDef2, strDef3, strDef4)
{
var iCount, iDefCnt;
var strShow, strTemp;

iDefCnt = 4;
strShow = "[常變量值]";
for (iCount = 1; iCount <= iDefCnt; iCount ++)
{
strTemp = eval("strDef" + iCount);
if (strTemp != undefined && strTemp != null)
strShow += "" + strTemp + ": " + eval(strTemp);
}

alert(strShow);
}

//************************
//函數名 :showArray
//功能 :顯示一維數組的元素(調試用)
//輸入 :1、array :要顯示的一維數組。數組
//輸出 :無
//************************
function showArray(array)
{
var iCount, iEleCount;
var strShow;

//------------------------------------------
//常變量說明
//iCount :計數器。整型
//iEleCount :數組元素的個數。整型
//strShow :數組元素值構成的字串。字符串型
//------------------------------------------

iEleCount = array.length;
strShow = "Array Length: " + iEleCount;
strShow += "---------------------------------";

for (iCount = 0; iCount < iEleCount; iCount ++)
{
if (typeof(array[iCount]) == "object")
strShow += array[iCount].id + " ";
else
strShow += array[iCount] + " ";
}

alert(strShow);
}

//************************
//函數名 :show2DArray
//功能 :顯示二維數組的元素(調試用)
//輸入 :1、array :要顯示的二維數組。數組
//輸出 :無
//************************
function show2DArray(array)
{
var iX, iY, iLen1, iLen2;
var strShow;

//------------------------------------------
//常變量說明
//iX :計數器。整型
//iY :計數器。整型
//iLen1 :數組一維的數目。整型
//iLen2 :數組二維的數目。整型
//strShow :數組元素值構成的字串。字符串型
//------------------------------------------

iLen1 = array.length;
strShow = "Array 1D Length: " + iLen1;
strShow += "---------------------------------";

for (iX = 0; iX < iLen1; iX ++)
{
strShow += "";
iLen2 = array[iX].length;
for (iY = 0; iY < iLen2; iY ++)
strShow += array[iX][iY] + " ";
}

alert(strShow);
}
//-->
</script>

<script language="JavaScript">
<!--
//--------------------函數列表--------------------------
//window_onload
//
//getWord
//reset
//save
//load
//
//showList
//hideList
//fixList
//valueList
//
//showHelp
//hideHelp
//fixHelp
//
//resetAll
//saveAll
//loadAll
//assemble
//
//lightBtn
//delightBtn
//lightOpt
//delightOpt
//
//makeOpt
//removeOpt
//-----------------------------------------------------------

var m_iPartCnt;
var m_astrSenPart, m_astrWords;
var m_strPrompt;
var m_iListFixed, m_iHelpFixed;

//------------------------------------------
//常變量說明
//m_iPartCnt :詞匯分類的數目。整型
//m_astrSenPart :詞匯分類的名稱。字符型數組
//m_astrWords :紀錄各類詞匯。二維字符型數組
//m_strPrompt :文件操作完畢后的提示信息。字符串型
//m_iListFixed :代表被固定單詞列表的數字。整型
// -1表示沒有單詞列表被固定
//m_iHelpFixed :表示幫助列表固定狀態的數字。整型
// -1表示幫助列表沒有被固定
//------------------------------------------

window.onload = window_onload;
//-----------------------------------------------------------
//初始化頁面
function window_onload()
{
var iCount, iEleCnt;
var colButton;
var strHelp;

//------------------------------------------
//常變量說明
//iCount :計數器。整型
//iEleCnt :集合中元素的個數。整型
//colButton :BUTTON元素的集合。對象型數組
//strHelp :幫助文件內容。字符串型
//------------------------------------------

m_iPartCnt = <%= m_iPartCnt%>;
m_strPrompt = "<%= m_strPrompt%>";
m_iListFixed = -1;
m_iHelpFixed = -1;
m_astrSenPart = new Array();
m_astrWords = new Array();
//alert("m_iPartCnt: " + m_iPartCnt + "m_strPrompt: " + m_strPrompt);

//得到詞匯分類的名稱和已載入的各類詞匯
<%For m_iCount = 0 To (m_iPartCnt - 1)%>
//得到已載入的各類詞匯
<%If IsEmpty(m_astrWords(m_iCount)) = True Then%>
m_astrWords[<%= m_iCount%>] = new Array();
<%Else%>
m_astrWords[<%= m_iCount%>] = "<%= Join(m_astrWords(m_iCount), ",")%>".split(",");
<%End If%>

//得到詞匯分類的名稱
m_astrSenPart[<%= m_iCount%>] = "<%= m_astrSenPart(m_iCount)%>";
<%Next%>
//show2DArray(m_astrWords);
//showArray(m_astrSenPart);

//將已載入的各類詞匯寫入到頁面中
for (iCount = 0; iCount < m_iPartCnt; iCount ++)
valueList(m_astrWords[iCount], iCount);

//載入幫助文件
//strHelp = tblHelp.outerHTML;
//strHelp = divHelp1.innerHTML;
//tblHelp.outerHTML = "";
//divHelp.innerHTML = strHelp;
//tblHelp.style.display = "";
//divHelp.style.display = "NONE";
//divHelp.style.left = divHelp1.style.left;
//alert("left: "+divHelp.style.left + "left: " + divHelp1.style.left);
//alert("pixelleft: "+divHelp.style.pixelLeft + "pixelleft: " + divHelp1.style.pixelLeft);
//alert("posLeft: "+divHelp.style.posLeft + "posLeft: " + divHelp1.style.posLeft);
//alert("offsetLeft : "+divHelp.offsetLeft + "offsetLeft : " + divHelp1.offsetLeft );
//alert("clientLeft : "+divHelp.clientLeft + "clientLeft : " + divHelp1.clientLeft );

//指定頁面元素的事件處理函數
assignFunc(txtWord, getWord, "onkeypress");
assignFunc(btnGetWord, getWord);
assignFunc(btnReset, reset);
assignFunc(btnSave, save);
assignFunc(btnLoad, load);
assignFunc(lblWordList, showList, "onmouseover");
assignFunc(lblWordList, hideList, "onmouseout");
assignFunc(lblWordList, fixList);
assignFunc(lblHelp, showHelp, "onmouseover");
assignFunc(lblHelp, hideHelp, "onmouseout");
assignFunc(lblHelp, fixHelp);
assignFunc(btnResetAll, resetAll);
assignFunc(btnSaveAll, saveAll);
assignFunc(btnLoadAll, loadAll);
assignFunc(btnAsb, assemble);

colButton = document.all.tags("BUTTON");
iEleCnt = colButton.length;
//showArray(colButton);
//alert("iEleCnt: " + iEleCnt);
for (iCount = 0; iCount < iEleCnt; iCount ++)
{
assignFunc(colButton[iCount], lightBtn, "onmouseover");
assignFunc(colButton[iCount], delightBtn, "onmouseout");
}

//設置頁面初始狀態
if (m_strPrompt != "")
alert(m_strPrompt);
txtWord[0].focus();
}

北斗有巢氏 有巢氏北斗