用ASP实现聊天室中的在线答题游戏
类别: ASP教程
主要功能为:在聊天室中,每隔5分钟,向显示对话页面,发送一道题,所有用户都可答题。
答对者加相应的分值。
具体实现:在聊天室框架中加入一隐含帧,
此帧每5分钟刷新一次。
隐含帧内的ASP页内容如下:
<%@ LANGUAGE=VBs cript%>
<%Response.Expires=0%>
<%
Dim Conn,Rs
Application.Lock
application("CanswerName")=application("answerName") '保存答对题用户的名字
application("answerName")=""
application("TanswerName")="" '清除答错题用户的名子
set Conn=server.createobject("ADODB.Connection")
accessdb="db1.mdb" '题库的连接
myDSN="DRIVER={Microsoft Access Driver (*.mdb)};"
myDSN=myDSN & "DBQ=" &server.mappath(accessdb)
Conn.Open myDSN
Set Rs = Server.CreateObject("ADODB.Recordset")
Rs.CursorLocation=3
Rs.open "select * from QUESTION ",Conn
Randomize '随机取得一道题的ID
r=Rs.RecordCount
ID=int((r-1)*Rnd)+1
Rs.Close
set Rs=Nothing
Set Rs = Server.CreateObject("ADODB.Recordset")
Rs.open "select * from QUESTION where questionID="&ID,Conn
application("questionName")=Rs("questionName") '题目
application("questionID")=Rs("questionID") '题的ID
application("questionCent")=Rs("questionCent") '题的分数
application("questionClass")=Rs("questionNotes")'题的说明
Rs.close
Set Rs = Nothing
Set Ra = Server.CreateObject("ADODB.Recordset")
Ra.open "select * from ANSWER where questionID="&ID,Conn
application("answerA")=Ra("answerA") '题的选项
application("answerB")=Ra("answerB")
application("answerC")=Ra("answerC")
application("answerD")=Ra("answerD")
application("answerTrue")=Ra("answerTrue") '题的正确答案
Ra.close
set Ra=Nothing
Conn.Close
set Conn=Nothing
application("questionTime")=Now()
Application.UnLock
%>
<HTML>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=gb2312'>
<Link Rel='stylesheet' Href='../Style.Css' Type='text/css'>
<meta http-equiv="refresh" content="300;url=question.asp">
<title><%=Application("V")%></title>
<s cript Language="Javas cript">
parent.ShowSays.document.write("******系统消息:******<br>"); //向聊天室显示对话窗口写入问题
parent.ShowSays.document.write("**上题答对者为:<%=application"CanswerName")%><br>");
parent.ShowSays.document.write("问题::<%=application("questionName")%>");
parent.ShowSays.document.write(" <%=application("questionCent")%>分(1分钟之内,回答输入‘#答案’)<%=Time()%><br>");
parent.ShowSays.document.write("A::<%=application("answerA")%><br>");
parent.ShowSays.document.write("B::<%=application("answerB")%><br>");
parent.ShowSays.document.write("C::<%=application("answerC")%><br>");
parent.ShowSays.document.write("D::<%=application("answerD")%><br>");
</s cript>
</head>
<body bgcolor='#FFFFFF'>
</Body>
</html>
处理答题部分略!!! 答案处理部分,放在处理发送对话信息的程序中即可。下面是答案处理的代码部分: if mid(FStr,i,1)="#" then 'FStr是保存对话信息的字符串变量
TFstr=mid(FStr,i+1,1)
if CInt(DateDiff("n",application("questionTime"),Now()))<=1 then '判断时间1分钟内答题有效
if LCase(TFstr)=LCase(application("answerTrue")) then '判断答题是否正确
if instr(1,application("answerName"),session("USER_USERNAME"))>0 then '判断用户是否已经答过题了
TFstr=session("USER_USERNAME")&"已经答过这道了!!!"
else
TFstr=session("USER_USERNAME")&"答题正确!"
Session("USER_EXP") =Session("USER_EXP")+application("questionCent") '给答对题的用户加分
application("answerName")=application("answerName")&session("USER_USERNAME")&" " '保存答对题用户的名字
end if
else
if instr(1,application("TanswerName"),session("USER_USERNAME"))>0 then ''判断用户是否已经答过题了 TFstr=session("USER_USERNAME")&"已经答过这道了!!!"
else
application("TanswerName")=application("TanswerName")&session("USER_USERNAME")&" " '保存答错题用户的名字
end if
end if
end if
答对者加相应的分值。
具体实现:在聊天室框架中加入一隐含帧,
此帧每5分钟刷新一次。
隐含帧内的ASP页内容如下:
<%@ LANGUAGE=VBs cript%>
<%Response.Expires=0%>
<%
Dim Conn,Rs
Application.Lock
application("CanswerName")=application("answerName") '保存答对题用户的名字
application("answerName")=""
application("TanswerName")="" '清除答错题用户的名子
set Conn=server.createobject("ADODB.Connection")
accessdb="db1.mdb" '题库的连接
myDSN="DRIVER={Microsoft Access Driver (*.mdb)};"
myDSN=myDSN & "DBQ=" &server.mappath(accessdb)
Conn.Open myDSN
Set Rs = Server.CreateObject("ADODB.Recordset")
Rs.CursorLocation=3
Rs.open "select * from QUESTION ",Conn
Randomize '随机取得一道题的ID
r=Rs.RecordCount
ID=int((r-1)*Rnd)+1
Rs.Close
set Rs=Nothing
Set Rs = Server.CreateObject("ADODB.Recordset")
Rs.open "select * from QUESTION where questionID="&ID,Conn
application("questionName")=Rs("questionName") '题目
application("questionID")=Rs("questionID") '题的ID
application("questionCent")=Rs("questionCent") '题的分数
application("questionClass")=Rs("questionNotes")'题的说明
Rs.close
Set Rs = Nothing
Set Ra = Server.CreateObject("ADODB.Recordset")
Ra.open "select * from ANSWER where questionID="&ID,Conn
application("answerA")=Ra("answerA") '题的选项
application("answerB")=Ra("answerB")
application("answerC")=Ra("answerC")
application("answerD")=Ra("answerD")
application("answerTrue")=Ra("answerTrue") '题的正确答案
Ra.close
set Ra=Nothing
Conn.Close
set Conn=Nothing
application("questionTime")=Now()
Application.UnLock
%>
<HTML>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=gb2312'>
<Link Rel='stylesheet' Href='../Style.Css' Type='text/css'>
<meta http-equiv="refresh" content="300;url=question.asp">
<title><%=Application("V")%></title>
<s cript Language="Javas cript">
parent.ShowSays.document.write("******系统消息:******<br>"); //向聊天室显示对话窗口写入问题
parent.ShowSays.document.write("**上题答对者为:<%=application"CanswerName")%><br>");
parent.ShowSays.document.write("问题::<%=application("questionName")%>");
parent.ShowSays.document.write(" <%=application("questionCent")%>分(1分钟之内,回答输入‘#答案’)<%=Time()%><br>");
parent.ShowSays.document.write("A::<%=application("answerA")%><br>");
parent.ShowSays.document.write("B::<%=application("answerB")%><br>");
parent.ShowSays.document.write("C::<%=application("answerC")%><br>");
parent.ShowSays.document.write("D::<%=application("answerD")%><br>");
</s cript>
</head>
<body bgcolor='#FFFFFF'>
</Body>
</html>
处理答题部分略!!! 答案处理部分,放在处理发送对话信息的程序中即可。下面是答案处理的代码部分: if mid(FStr,i,1)="#" then 'FStr是保存对话信息的字符串变量
TFstr=mid(FStr,i+1,1)
if CInt(DateDiff("n",application("questionTime"),Now()))<=1 then '判断时间1分钟内答题有效
if LCase(TFstr)=LCase(application("answerTrue")) then '判断答题是否正确
if instr(1,application("answerName"),session("USER_USERNAME"))>0 then '判断用户是否已经答过题了
TFstr=session("USER_USERNAME")&"已经答过这道了!!!"
else
TFstr=session("USER_USERNAME")&"答题正确!"
Session("USER_EXP") =Session("USER_EXP")+application("questionCent") '给答对题的用户加分
application("answerName")=application("answerName")&session("USER_USERNAME")&" " '保存答对题用户的名字
end if
else
if instr(1,application("TanswerName"),session("USER_USERNAME"))>0 then ''判断用户是否已经答过题了 TFstr=session("USER_USERNAME")&"已经答过这道了!!!"
else
application("TanswerName")=application("TanswerName")&session("USER_USERNAME")&" " '保存答错题用户的名字
end if
end if
end if
- 上一篇: 最新的JMail(4.3版本)发送代码
- 下一篇: ASP短信发送程序
-= 资 源 教 程 =-
文 章 搜 索