Array を 使った ソースコードを紹介する表示色の説明:ASP VBScriptは <% 〜 %> キーワードはArray です。
<%@LANGUAGE=VBScript%>
<html>
<head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis">
<title>2次元配列をArray関数で初期化する</title>
</head>
<body>
<h2>2次元配列をArray関数で初期化する</h2>
<b>2次元配列をArray関数で初期化して使ってみました。</b><br>
ポイントは、<br>
<pre>
'勝負の結果表を作る
strCHK = Array( "", Array( 0, 2, 1, 3 ), _
Array( 0, 3, 2, 1 ), _
Array( 0, 1, 3, 2 ) )
と、強引にArrayを多重化してみました。
で、値を参照するときは、
nMSGNO = strCHK(nPC, nCON) '結果表の値を代入
<b>ではなくて</b>
nMSGNO = <b>strCHK(nPC)(nCON)</b> '結果表の値を代入
と書きます。
</pre>
<h3>じゃんけんゲーム</h3>
<%
'ユーザー名が送られていたら、セッション変数にセットする
D = Request.QueryString("UNAME") 'データを代入
If Len(D) <> 0 Then 'データあり
Session("USERNAME") = D '名前の代入
End If
'パラメータをチェックする、セッション変数に名前が入っているか?
USER_NAME = Session("USERNAME")
'Lenで変数の長さをチェックする
If Len(Trim(USER_NAME)) = 0 Then '名前が未入力なら
Call INPUT_NAME() '名前入力フォームの表示
Else
D = Request.QueryString("DATA") 'データを代入(選択された手)
If Len(D) = 1 Then 'データあり
Call HANTEI(D) '判断用の関数を呼ぶ
End If
Call INPUT_FORM() '入力用のフォームを表示する、再度入力させる
End If
%>
<hr>
</body>
</html>
<% '名前入力フォームの表示
Sub INPUT_NAME()
Response.Write "<HR>"
Response.Write "<FORM ACTION='test065-3.asp' METHOD='GET'>"
Response.Write "あなたのお名前は?<br>"
Response.Write "<INPUT TYPE='text' NAME='UNAME'><br>"
Response.Write "<INPUT TYPE='submit' VALUE='名前の登録'><br>"
Response.Write "</FORM>"
End Sub
%>
<% '入力フォームの表示(勝負する手を入力)
Sub INPUT_FORM()
Response.Write "<HR>"
Response.Write "<FORM ACTION='test065-3.asp' METHOD='GET'>"
Response.Write "<b>" & USER_NAME & "</b>さん、あなたの手は?<br>"
Response.Write "<INPUT TYPE='RADIO' NAME='DATA' VALUE='1'>1.グー<br>"
Response.Write "<INPUT TYPE='RADIO' NAME='DATA' VALUE='2'>2.チョキ<br>"
Response.Write "<INPUT TYPE='RADIO' NAME='DATA' VALUE='3'>3.パー<br>"
Response.Write "<INPUT TYPE='submit' VALUE='勝負する'><br>"
Response.Write "</FORM>"
End Sub
%>
<% '乱数を発生させて勝負する
Sub HANTEI(strNO) 'ユーザーの手を受取り判断する
Dim nCON 'コンピュータの手1〜3の数値が入る
Dim nPC 'ユーザーさんの手
'配列にメッセージを代入
strTE = Array("", "グー", "チョキ", "パー")
Dim nMSGNO 'メッセージの番号
'メッセージ表示用の配列
strMSG = Array("", "アナタの勝ちです<br>", "引き分けです<br>", _
"私(コンピュータ)の勝ちです<br>" )
'入力値の判断、エラーならメッセージを表示させ抜ける
'If文で1,2,3以外を判断する
If strNO <> "1" And strNO <> "2" And strNO <> "3" Then
Response.Write "[" & strNO & "]は不正な入力です"
Exit Sub '<--Exit Subを使用してここでプログラムを抜ける
End If
'コンピュータの手を決定
Randomize ' 乱数発生ルーチンを初期化します。
nCON = Int((3 * Rnd) + 1) '1 から 3 までの乱数を発生させます。
'結果判断と表示
'ユーザーの手を表示する
nPC = CInt(strNO) 'CInt関数で数値型に変換する
Response.Write USER_NAME & "さんの手は、"
Response.Write strTE(nPC) & "です<br>" '(*3)ここでnPC番目を表示
'(*4)同様にコンピュータの手を表示する
Response.Write "コンピュータの手は" & strTE(nCON) & "です<br>"
'結果の判断
' グー(1) チョキ(2) パー(3) ←コンピュータの手
'グー(1) 2引き分け 1勝ち 3負け
'チョキ(2) 3負け 2引き分け 1勝ち
'パー(3) 1勝ち 3負け 2引き分け
'↑自分の手
'勝負の結果表を作る
strCHK = Array( "", Array( 0, 2, 1, 3 ), _
Array( 0, 3, 2, 1 ), _
Array( 0, 1, 3, 2 ) )
'結果を代入
nMSGNO = strCHK(nPC)(nCON) '結果表の値を代入
'結果のメッセージを表示する(メッセージ番号を使用して)
Response.Write strMSG(nMSGNO)
End Sub
%>
| 商品:来月の予約関係を紹介(広告)
3月の人気
-
ワンピース ONE PIECE アラーム クロック 置時計 OP-002 2/1人気が上昇中
-
空間除菌 ウィルスブロッカー CL-40(ストラップ有り1個、ストラップ 2/1新作や予約商品
-
25日 ぴくりる! 初音ミク-Project DIVA- トレーディングストラップ Track04(BOX) - おもちゃ ほか
-
24日 GUNDAMWAR NEX-A エキスパンションブースターパック 「ACCEL OF NEXT AGE」 [EX01] (BOX) - おもちゃ ほか
-
23日 テイルズ オブ ザ ヒーローズ ツインブレイヴ 初回生産限定プレミアムエディション 特典 オリジナルアニメ「ているず おぶ 劇場」プロダクトコード・ダウンロードカード付き - GAME ほか
-
22日 積みヴィネ 仮面ライダー 1BOX (食玩) - おもちゃ ほか
-
21日 Outdoors Unlimited(輸入版) - GAME ほか
-
17日 プリズムコネクト 劇場版魔法先生ネギま! ANIME FINAL ブースターパック BOX - おもちゃ ほか
続き(一覧)を見る
|