当前位置导航:炫浪网>>网络学院>>在线图书>>网页制作教程>>ASP入门到精通>>第七章 asp编程实例

7.1 用ASP实现网上“五子棋”大赛

“五子棋”是大家都非常熟悉的一种益智类游戏,相关的游戏软件也非常多,在此我向大家隆重推出一款新的纯“网络版”的五子棋,它利用ASP做为开发环境,因此在Internet上对战的时候无需下载客户端软件,只要你有一个浏览器就可以了。你也可以在局域网上进行这个游戏。
对于ASP,我不想做过多的说明,在以前的文章中,我已经说过很多。
游戏的过程是这样的,我们首先登录,然后可以选择战场,有“金星”、“木星”、“水星”、“火星”、“土星”等五个战场,如果你自认为是一个高手,可以选择金星,否则可以依次选择其它几个星球做为战场。如果这个星球上没有擂主,你就应该以擂主的身份进入,然后别人就可以和你进行对战了。当然,如果所有的星球上都已经开始了战争,那么你就只能等一会儿了。
如果你是以擂主身份进入的,你可以等待别人来和你对战,如果你是以攻擂手的身份登录,你可以很快的和擂主展开战斗。开始战斗后,由擂主执黑先行,然后由攻擂手出招,如此这般。当最后决出胜负的时候,会有相应的提示。
该站点有几个主要的文件是:
Index.asp 登录文件:
Index0.asp中间文件:
Match.asp 比赛文件:
Back0.jpg?http://www.xvna.com white0.jpg?http://www.xvna.com black0.jpg?http://www.xvna.com 中间用到的图形文件,分别指的棋盘,白子和黑子,如下图:
在程序的初始化的时候,将棋盘上分成若干的表格,将背景图片放入其中,形成一个棋盘,然后在放上一个棋子后,再将图片换上相应的白子或黑子就可以了。
先看看登录文件:
<%@ Language=VBScript %>



星球大战之“五子连珠”大赛!


 

星球大战










 






 






 






 





 
星球擂主大战攻擂
金星
<%
if application("first1")="" then
%>

type=submit value=进入>

<%
else
response.write application("first1")
end if
%>
大战
<%
if application("second1")="" then
%>
 

name=submit1 type=submit value=进入>

<%
else
response.write application("Second1")
end if
%>
木星
<%
if application("first2")="" then
%>

type=submit value=进入>

<%
else
response.write application("first2")
end if
%>
大战
<%
if application("second2")="" then
%>
 

name=submit1 type=submit value=进入>

<%
else
response.write application("Second2")
end if
%>
金星
<%
if application("first3")="" then
%>

type=submit value=进入>

<%
else
response.write application("first3")
end if
%>
大战
<%
if application("second3")="" then
%>
 

name=submit1 type=submit value=进入>

<%
else
response.write application("Second3")
end if
%>
金星
<%
if application("first4")="" then
%>

type=submit value=进入>

<%
else
response.write application("first4")
end if
%>
大战
<%
if application("second4")="" then
%>
 

name=submit1 type=submit value=进入>

<%
else
response.write application("Second4")
end if
%>
金星
<%
if application("first5")="" then
%>

type=submit value=进入>

<%
else
response.write application("first5")
end if
%>
大战
<%
if application("second5")="" then
%>
 

name=submit1 type=submit value=进入>

<%
else
response.write application("Second5")
end if
%>



这个文件不用做过多的说明,就是一个大的表格,大家可以从那里进入,如果某个位置已经被使用,则它会变成该大 侠的名字,不允许重复登录。在登录后进入
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
 
%>


该程序中,用session(“nice”)来记录您登录的大名,以后的处理中,很多都要用到它,用它来区分很多的用户。如果您是从擂主的位置进入,则您的权利是
first,否则是second,用session("class")来记录位于哪个战场场,“金”“木”
“水”“火”“土”分别表示为1、2、3、4、5,因为有多个战场可能同时开战,如果不能正确地区分开,则可能导致一片混乱。application(session("nice"))是一个逻辑型变量,用真假来表示您是否可以出棋,如果是假,您要等待一个,如果是真,您就可以下棋了。只有一个战场上的两个人都进入了以后,擂主方可以下棋,而且只有当擂主出子以后,攻擂手才可以下棋。

 准备好以后,下面就进入赛场,请看文件match.asp

 







连珠大赛...

<%
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
%>

<%
'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 "

cellpadding=0>"
for i=1 to 16
Response.Write ""
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 ""
else
Response.Write "" & chr(13)
end if
next
Response.Write ""
next
Response.Write "
"
'response.write application(application("first" & session("class")))
if application(session("nice"))=true then
response.write " & ">"
else
response.write ""
end if
response.write "
application("color" & session("class") & "_" & cstr(i) & "_" & cstr
(j)) & "0.jpg?http://www.xvna.com width=25 height=25>
"
'判断输赢
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
%>


如果某点没有棋子,则加上一个超连接,根据擂主与攻擂手的区别放上一个不同颜色的棋子。最后的一段是用来判断输与赢,分为横,列和两个斜线方向。具体内容看一下就可以明白。
最后要说的一点就是global.asa ,这是站点上的一个核心文件,为了在退出棋局后,将位置留给别人,需要在sesison_onend中加入代码进行处理,如下:


 

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

上一篇:没有了! 下一篇:7.2 用ASP构建音乐服务器
相关内容
赞助商链接