【用asp.net】用ASP实现网上“五子棋”大赛

更新时间:2019-11-16 来源:网络 点击:

【www.hzclsc.cn--网络】

  五子棋 是大家都非常熟悉的一种益智类游戏,相关的游戏软件也非常多,在此我向大家隆重推出一款新的纯 网络版 的五子棋,它利用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>
以上就是几个主要的文件,大家可以一试。什么,想做围棋?把棋盘改一下就可以了。
祝大家成功!

本文来源:http://www.hzclsc.cn/ruanjianzixun/39868.html

为您推荐

【绝地求生十字弩伤害】绝地求生十字弩实用技巧分析 绝地求生怎么玩好十字弩

绝地求生里如果要做出了一个最难使用武器的排行,十字弩一定名列前茅,首先十字弩对枪法菜的玩家有着绝对的排斥,驾驭十字弩的极致就是确保一箭可以射到头,下面我们就来说说十字弩的常见几种用法。 一:落地 很网络游戏

2021-02-25 18:54:41   绝地求生十字弩抛物线   绝地求生十字弩射程  

绝地求生沙漠地图防空洞在哪_绝地求生沙漠地图山上怎么打 沙漠地图山坡对枪技巧

《绝地求生》沙漠地图空旷的地方比较多,如何利用好上下坡优势是大家需要学习的,下面小编带来《绝地求生》沙漠地图山坡对枪技巧,希望可以帮到大家。 在山坡上的战斗中,往往会出现敌我双方各占高坡一侧的情况。网络游戏

2021-02-25 18:54:41   绝地求生沙漠地图原型   绝地求生沙漠地图信号枪的位置  

【剑灵火龙巢怎么去】剑灵双线火龙区活动地址 剑灵双线火龙新区活动介绍

剑灵近日开启了双线火龙新区,那么新区开放又有哪些活动等着大家呢?下面就来分享一下剑灵双线火龙新区活动地址及介绍。剑灵双线火龙新区活动地址及介绍活动时间:2018年1月30日~2018年3月1日活动地址网络游戏

2021-02-25 18:54:41   剑灵新火龙奇珍箱有什么   剑灵火龙巢穴  

天涯明月刀官网_天涯明月刀ol2018春节活动地址 2018天刀新春大促活动地址

天涯明月刀ol在2018春节推出了全新的新春活动,还不知道活动地址的玩家朋友不用着急,马上点击进入2018天刀新春大促活动地址查看这次的活动具体内容后再考虑是否参与到活动中来领取属于您的礼包吧。网络游戏

2021-02-25 18:54:41   天涯明月刀手游下载   天涯明月刀手游官网  

dota27.21d_dota27.08更新日志 dota27.08更新内容一览

dota27 08更新日志。昨天我们刚报道了《DOTA2》更新机制大改,没想到V社今天就推出了一个新的更新:7 08“涤尘迎春”版本更新。下面就一起来看看dota27 08更新内容一览吧。《DOTA2网络游戏

2020-12-20 11:05:28