五子棋是大家都非常熟悉的益智遊戲,相關的遊戲軟體也非常多,在此我向大家隆重推出一款新的純網版的五子棋,它利用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><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 至 16
Response.Write <tr>
for j=1 至 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 至 15
win=false
loss=false
five_me=0
five_he=0
for j=1 至 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 至 15
win=false
loss=false
five_me=0
five_he=0
for i=1 至 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 到 11
win=false
loss=false
five_me=0
five_he=0
for j=i+4 至 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 到 11
win=false
loss=false
five_me=0
five_he=0
for j=12-i 至 15
if application(color & session(class) & _ & cstr(13-ij) & _
& cstr(j))=m then
five_me=five_me+1
five_he=0
elseif application(color & session(class) & _ & cstr(13-ij)
& _ & 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 至 15
for j=1 至 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>
以上就是幾個主要的文件,大家可以一試。什麼,想做圍棋?把棋盤改一下就好了。