用ASP实现网上“五子棋”大赛 |
“五子棋”是大家都十分 相熟的一种益智类游戏, 有关的游戏软件也十分多,在此我向大家盛大推出一款新的纯“网络版”的五子棋,它利用ASP做为开发环境, 因此在Internet上对战的时候无需下载客户端软件, 惟独你有一个阅读器就 可以了 。你也 可以在局域网上进行这个游戏 。 关于ASP,我不想做过多的 注明,在以往的文章中,我已经说过众多 。 游戏的过程是这样的,我们首先登录, 而后 可以 取舍战场,有“金星”、“木星”、“水星”、“火星”、“土星”等五个战场,假如你自认为是一个高手, 可以 取舍金星,不然 可以 顺次 取舍其它几个星球做为战场 。假如这个星球上没有擂主,你就应该以擂主的身份进入, 而后别人就 可以和你进行对战了 。固然,假如全部的星球上都已经开始了战争,那么你就不得不等一会儿了 。 假如你是以擂主身份进入的,你 可以期待别人来和你对战,假如你是以攻擂手的身份登录,你 可以很快的和擂主展 开火斗 。开始战斗后,由擂主执黑先行, 而后由攻擂手出招,如此这般 。当最终决出 输赢的时候,会有相应的 揭示 。 该站点有几个重要的文件是: Index.asp 登录文件: Index0.asp之间文件: Match.asp 比赛文件: Back0.jpg white0.jpg black0.jpg 之间用到的图形文件,分别指的棋盘,白子和黑子,如下图: 在程序的初始化的时候,将棋盘上分成若干的表格,将背景图片放入其中, 构成一个棋盘, 而后在放上一个棋子后,再将图片换上相应的白子或黑子就 可以了 。 先看看登录文件: <%@ Language=VBScript %> <HTML> <HEAD> <META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"> <title>星球大战之“五子连珠”大赛!</title> </HEAD> <BODY> <p align=center><font size=6>星球大战</font></P> <table border=1 width=80% align=center> <tr><td>星球</td><td>擂主</td><td>大战</td><td>攻擂</td></tr> <tr> <td>金星</td> <td> <% if application("first1")="" then %> <form action=index0.asp?flag=First1 method=post> <INPUT id=text1 name=txtFirst1 size=10><INPUT id=submit1 name=submit1 type=submit value=进入> </form> <% else response.write application("first1") end if %> </td> <td>大战</td> <td> <% if application("second1")="" then %> <form action=index0.asp?flag=second1 method=post> <INPUT id=text1 name=txtSecond1 size=10><INPUT id=submit1 name=submit1 type=submit value=进入> </form> <% else response.write application("Second1") end if %> </td> </tr> <tr> <td>木星</td> <td> <% if application("first2")="" then %> <form action=index0.asp?flag=First2 method=post> <INPUT id=text1 name=txtFirst2 size=10><INPUT id=submit1 name=submit1 type=submit value=进入> </form> <% else response.write application("first2") end if %> </td> <td>大战</td> <td> <% if application("second2")="" then %> <form action=index0.asp?flag=second2 method=post> <INPUT id=text1 name=txtSecond2 size=10><INPUT id=submit1 name=submit1 type=submit value=进入> </form> <% else response.write application("Second2") end if %> </td> </tr> <tr> <td>金星</td> <td> <% if application("first3")="" then %> <form action=index0.asp?flag=First3 method=post> <INPUT id=text1 name=txtFirst3 size=10><INPUT id=submit1 name=submit1 type=submit value=进入> </form> <% else response.write application("first3") end if %> </td> <td>大战</td> <td> <% if application("second3")="" then %> <form action=index0.asp?flag=second3 method=post> <INPUT id=text1 name=txtSecond3 size=10><INPUT id=submit1 name=submit1 type=submit value=进入> </form> <% else response.write application("Second3") end if %> </td> </tr> <tr> <td>金星</td> <td> <% if application("first4")="" then %> <form action=index0.asp?flag=First4 method=post> <INPUT id=text1 name=txtFirst4 size=10><INPUT id=submit1 name=submit1 type=submit value=进入> </form> <% else response.write application("first4") end if %> </td> <td>大战</td> <td> <% if application("second4")="" then %> <form action=index0.asp?flag=second4 method=post> <INPUT id=text1 name=txtSecond4 size=10><INPUT id=submit1 name=submit1 type=submit value=进入> </form> <% else response.write application("Second4") end if %> </td> </tr> <tr> <td>金星</td> <td> <% if application("first5")="" then %> <form action=index0.asp?flag=First5 method=post> <INPUT id=text1 name=txtFirst5 size=10><INPUT id=submit1 name=submit1 type=submit value=进入> </form> <% else response.write application("first5") end if %> </td> <td>大战</td> <td> <% if application("second5")="" then %> <form action=index0.asp?flag=second5 method=post> <INPUT id=text1 name=txtSecond5 size=10><INPUT id=submit1 name=submit1 type=submit value=进入> </form> <% else response.write application("Second5") end if %> </td> </tr> </table> </BODY> </HTML> 这个文件不用做过多的 注明,便是一个大的表格,大家 可以从那里进入,假如某个位置已经被 使用,则它会变成该大 侠的名字,不同意 反复登录 。在登录后进入 index0.asp,这是一个之间 交换文件,在里面进行一些变量的 解决及赋值, 而后再进入match.asp,进行正式的 比赛 。我们来看一下index0.asp的内容: <%@ Language=VBScript %> <% if Request.Form("txt" & request.querystring("flag"))<>"" then 'response.write "in!" & "" session("nice")=Request.Form("txt" & request.querystring("flag")) 'response.write session("nice") & "" 'response.write application(request.querystring("flag")) if application(request.querystring("flag"))="" then application(request.querystring("flag"))=session("nice") session("class")=right(request.querystring("flag"),1) if left(request.querystring("flag"),1)="f" then application(session("nice"))=false elseif left(request.querystring("flag"),1)="s" then application(session("nice"))=false application(application("first" & session("class")))=true end if Response.Redirect "match.asp" end if
end if %> <HTML> </HTML> 该程序中,用session(“nice”)来记录您登录的大名,以后的 解决中,众多都要用到它,用它来 划分众多的消费者 。假如您是从擂主的位置进入,则您的 权力是 first,不然是second,用session("class")来记录位于哪个战场场,“金”“木” “水”“火”“土”分别 示意为1、2、3、4、5,由于有多个战场可能同时 开火,假如不能正确地域 离开,则可能招致一片 混乱 。application(session("nice"))是一个逻辑型变量,用 虚实来 示意您是不是 可以出棋,假如是假,您要期待一个,假如是真,您就 可以下棋了 。惟独一个战场上的两个人都进入了以后,擂主方 可以下棋,并且惟独当擂主出子以后,攻擂手才 可以下棋 。 预备好以后,下面就进入赛场,请看文件match.asp <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <meta name="GENERATOR" content="Microsoft FrontPage 4.0"> <meta name="ProgId" content="FrontPage.Editor.Document"> <META http-equiv=refresh content=3> <title>连珠大赛...</title> </head> <% Response.Write "擂主:" & application("first" & session("class")) & " 攻擂:" & application("second" & session ("class")) if Request.QueryString("pos")<>"" then application("pos" & session("class") & Request.QueryString("pos")) =true end if %> <body> <% 'Response.Write application("aaa") if application("first" & session("class"))=session("nice") then color="black" if Request.QueryString("pos")<>"" then if session("last")="" then session("last")="abc" if session("last")<> Request.QueryString("pos") then application(application("first" & session("class")))=false if application("second" & session("class"))<>"" then application (application("second" & session("class")))=true session("last")=Request.QueryString("pos") END IF end if else if application("second" & session("class"))=session("nice") then color="white" if Request.QueryString("pos")<>"" then 'if session("last")="" then session("last")="abc" if session("last")<> Request.QueryString("pos") then application(application("first" & session("class")))=true application(application("second" & session("class")))=false session("last")=Request.QueryString("pos") END IF end if else if application("second" & session("class"))="" then application("second" & session("class"))=session("nice") color="white" if Request.QueryString("pos")<>"" then if session("last")="" then session("last")="abc" if session("last")<> Request.QueryString("pos") then application(application("first" & session("class")))=true application(application("second" & session("class")))=false session("last")=Request.QueryString("pos") END IF end if else color="" end if end if end if Response.Write "<table width=400 height=400 border=0 cellspacing=0 cellpadding=0>" for i=1 to 16 Response.Write "<tr>" for j=1 to 16 if application("pos" & session("class") & cstr(i) & "_" & cstr(j))="" then application("color" & session("class") & "_" & Request.QueryString ("pos"))=color Response.Write "<td width=25 height=25>" 'response.write application(application("first" & session("class"))) if application(session("nice"))=true then response.write "<a href=match.asp?pos=" & cstr(i) & "_" & cstr(j) & "><img border=0 src=back0.jpg width=25 height=25></a>" else response.write "<img border=0 src=back0.jpg width=25 height=25>" end if response.write "</td>" else Response.Write "<td width=25 height=25><img border=0 src=" & application("color" & session("class") & "_" & cstr(i) & "_" & cstr (j)) & "0.jpg width=25 height=25></td>" & chr(13) end if next Response.Write "</tr>" next Response.Write "</table>" '推断输赢 if application("first" & session("class"))=session("nice") then m="black" h="white" else h="black" m="white" end if '横向推断"-" for i=1 to 15 win=false loss=false five_me=0 five_he=0 for j=1 to 15 if application("color" & session("class") & "_" & cstr(i) & "_" & cstr (j))=m then five_me=five_me+1 five_he=0 elseif application("color" & session("class") & "_" & cstr(i) & "_" & cstr(j))=h then five_me=0 five_he=five_he+1 else five_me=0 five_he=0 end if if five_me=5 then win=true loss=false exit for elseif five_he=5 then win=false loss=true exit for end if next if win or loss then exit for next if win then response.write "你赢了!" application(application("first" & session("class")))=false application(application("second" & session("class")))=false end if if loss then response.write "对不起,你输了!" application(application("first" & session("class")))=false application(application("second" & session("class")))=false end if '列向推断"|" for j=1 to 15 win=false loss=false five_me=0 five_he=0 for i=1 to 15 if application("color" & session("class") & "_" & cstr(i) & "_" & cstr (j))=m then five_me=five_me+1 five_he=0 elseif application("color" & session("class") & "_" & cstr(i) & "_" & cstr(j))=h then five_me=0 five_he=five_he+1 else five_me=0 five_he=0 end if if five_me=5 then win=true loss=false exit for elseif five_he=5 then win=false loss=true exit for end if next if win or loss then exit for next if win then response.write "你赢了!" application(application("first" & session("class")))=false application(application("second" & session("class")))=false end if if loss then response.write "对不起,你输了!" application(application("first" & session("class")))=false application(application("second" & session("class")))=false end if '斜向推断"/" for i=1 to 11 win=false loss=false five_me=0 five_he=0 for j=i+4 to 1 step -1 if application("color" & session("class") & "_" & cstr(j) & "_" & cstr (i+5-j))=m then five_me=five_me+1 five_he=0 elseif application("color" & session("class") & "_" & cstr(j) & "_" & cstr(i+5-j))=h then five_me=0 five_he=five_he+1 else five_me=0 five_he=0 end if if five_me=5 then win=true loss=false exit for elseif five_he=5 then win=false loss=true exit for end if next if win or loss then exit for next if win then response.write "你赢了!" application(application("first" & session("class")))=false application(application("second" & session("class")))=false end if if loss then response.write "对不起,你输了!" application(application("first" & session("class")))=false application(application("second" & session("class")))=false end if '斜向推断"\" for i=1 to 11 win=false loss=false five_me=0 five_he=0 for j=12-i to 15 if application("color" & session("class") & "_" & cstr(13-i-j) & "_" & cstr(j))=m then five_me=five_me+1 five_he=0 elseif application("color" & session("class") & "_" & cstr(13-i-j) & "_" & cstr(j))=h then five_me=0 five_he=five_he+1 else five_me=0 five_he=0 end if if five_me=5 then win=true loss=false exit for elseif five_he=5 then win=false loss=true exit for end if next if win or loss then exit for next if win then response.write "你赢了!" application(application("first" & session("class")))=false application(application("second" & session("class")))=false end if if loss then response.write "对不起,你输了!" application(application("first" & session("class")))=false application(application("second" & session("class")))=false end if %> </body> </html> 假如某点没有棋子,则外加一个超衔接,依据擂主与攻擂手的区别放上一个不同 色彩的棋子 。最终的一段是用来推断输与赢,分为横,列和两个斜线方向 。具体内容看一下就 可以清楚 。 最终要说的丝毫便是global.asa ,这是站点上的一个核心文件,为了在退出棋局后,将位置留给别人,需求在sesison_onend中加入代码进行 解决,如下: <script language=vbscript runat = server> sub application_onstart session.timeout=1 end sub sub session_onstart if application("num")="" then application("num")=0 end if application("num")=application("num")+1 end sub </script> <script language=vbscript runat = server> sub session_onend if application("num")="" then application("num")=0 end if application("num")=application("num")-1 if application("first1")=session("nice") then application("first1")="" elseif application("second1")=session("nice") then application("second1")="" elseif application("first2")=session("nice") then application("first2")="" elseif application("second2")=session("nice") then application("second2")="" elseif application("first3")=session("nice") then application("first3")="" elseif application("second3")=session("nice") then application("second3")="" elseif application("first4")=session("nice") then application("first4")="" elseif application("second4")=session("nice") then application("second4")="" elseif application("first5")=session("nice") then application("first5")="" elseif application("second5")=session("nice") then application("second5")="" end if for i=1 to 15 for j=1 to 15 application("color" & session("class") & "_" & cstr(i) & "_" & cstr (J))="" application("pos" & session("class") & cstr(i) & "_" & cstr(j))="" next next application(session("nice"))="" end sub </script> 以上便是几个重要的文件,大家 可以一试 。什么,想做围棋?把棋盘改一下就 可以了 。 |