• 注册
  • 关于作者
    企业认证:趣记站长
    关注 6 粉丝 4 喜欢 9 内容 992
    江西省·南昌市
    聊天 送礼
    • 查看作者
    • 用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,

      实例演练ASP+XML编程
      ASP错误处理,ASP网站防范黑客技巧,巧用ASP技术保护DHTML源代码,用ASP取出HTML里面的图片地址的函数,ASP实现网页打开任何类型文件都保存,ASP木马Webshell安全解决办案,几招让你的网站免受采集之苦,ASP使用MYSQL数据库全攻略,Ad Rotator 组件参考,在Asp中使用存储过程数值类型值,asp防止同时登陆的问题,使用ASP重启服务器,在ASP程序中实现数据库事务控制,深入理解ASP中FSO的神奇功能,Asp中一些FSO方面的函数,用ASP编程实现网络内容快速查找,ASP实现文件直接下载,Adodb.Stream 组件的使用说明,全国省市县无刷新多级关联菜单,ASP上两个防止SQL注入式攻击Function
      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"))

      & " &nbsp; &nbsp;攻擂:" & 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>

      以上就是几个主要的文件,大家可以一试。什么,想做围棋?把棋盘改一下就可以了。

      祝大家成功! 

      微软建议的ASP性能优化28条守则
      ASP错误处理,ASP网站防范黑客技巧,巧用ASP技术保护DHTML源代码,用ASP取出HTML里面的图片地址的函数,ASP实现网页打开任何类型文件都保存,ASP木马Webshell安全解决办案,几招让你的网站免受采集之苦,ASP使用MYSQL数据库全攻略,Ad Rotator 组件参考,在Asp中使用存储过程数值类型值,asp防止同时登陆的问题,使用ASP重启服务器,在ASP程序中实现数据库事务控制,深入理解ASP中FSO的神奇功能,Asp中一些FSO方面的函数,用ASP编程实现网络内容快速查找,ASP实现文件直接下载,Adodb.Stream 组件的使用说明,全国省市县无刷新多级关联菜单,ASP上两个防止SQL注入式攻击Function
      ASP

    • 0
    • 0
    • 0
    • 69
    • 单栏布局 侧栏位置: