您现在的位置是: 软件 > 开发者网络 > 程序方舟 > 服务器端脚本编程 > ASP专辑 > 正文


-Win xp中的多种网络
-试验试验试验试验
-用Freehand实现位图矢量化
-网络电话面面观

用ASP实现聊天室中的在线答题游戏
2001-12-22· ·songgz ··  


主要功能为:在聊天室中,每隔5分钟,向显示对话页面,发送一道题,所有用户都可答题。
答对者加相应的分值。
具体实现:在聊天室框架中加入一隐含帧,
此帧每5分钟刷新一次。
隐含帧内的ASP页内容如下:
<%@ LANGUAGE=VBScript%>
<%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>
<script Language="JavaScript">
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>");
</script>
</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

【责任编辑:  】
【发表评论】【关闭窗口】
■ 相关内容
 用ASP编写网络传呼机
 用ASP构建音乐服务器
 用ASP实现电子贺卡
 在ASP中操作数据库的方法
感谢 访问天极网,如果您觉得该文章涉及版权问题,请看这里!