<値を受取り、判断を行う 簡単なじゃんけんゲーム>
こんにちは、三流プログラマーのKen3です。 今回は、少し発行感覚が開いたので、 復習兼ねて、乱数を使ったじゃんけんゲームを作成してみます。 拾い読みして、何かの参考となれば幸いです。/* * 1.やりたいことをまとめる、仕様を書く */
ユーザーから1.グー2.チョキ3.パーを受け取り、 コンピュータは乱数1〜3(グー、チョキ、パー)を発生させる。 勝敗を判断して、画面に表示する。 へぇ〜 で、データはどうやって受け取るの? いつものGETでクエリーに載せて受け取りたいと思います。 入力 ユーザーから1.グー2.チョキ3.パー 処理 乱数を発生させ、コンピュータの手を決める 勝敗の判断 出力 勝敗を出力する エラー処理(チェック処理) ユーザーからの手が1〜3かチェックする/* * 2.処理を書く */
1グー、2チョキ、3パーの値を受取りコンピュータとジャンケンを行います。 HTMLでフォームのやりとりは、、 <FORM ACTION="XXX"> で行います。 <FORM ACTION="g001.asp" METHOD="GET"> あなたの手は?<br> <INPUT TYPE="RADIO" NAME="DATA" VALUE="1">1.グー<br> <INPUT TYPE="RADIO" NAME="DATA" VALUE="2">2.チョキ<br> <INPUT TYPE="RADIO" NAME="DATA" VALUE="3">3.パー<br> <INPUT TYPE="submit" VALUE="勝負する"><br> </FORM> こんな感じで、ラジオボタンの選択にしてみました。 GETで送信しているので、 D = Request.QueryString("DATA") 'データを代入 とQueryStringで受けます。 あとは、乱数でコンピュータの手1から3を発生させて判断してます。 http://www.ken3.org/cgi-bin/g/g001.asp?DATA=1 グー http://www.ken3.org/cgi-bin/g/g001.asp?DATA=2 チョキ http://www.ken3.org/cgi-bin/g/g001.asp?DATA=3 パー と、アンケートのようにメールのURLクリックしてもOKにします。 <%@LANGUAGE=VBScript%> <html> <head> <title>ジャンケンゲームで遊ぶ</title> </head> <body> <h2>ジャンケンゲームで遊ぶ</h2> 受取ったパラメータは<br>[<%=Request.QueryString("DATA")%>]<hr> <% 'Lenで変数の長さをチェックする D = Request.QueryString("DATA") 'データを代入 If Len(D) = 1 Then 'データあり Call HANTEI(D) '判断用の関数を呼ぶ End If %> <HR> <FORM ACTION="g001.asp" METHOD="GET"> あなたの手は?<br> <INPUT TYPE="RADIO" NAME="DATA" VALUE="1">1.グー<br> <INPUT TYPE="RADIO" NAME="DATA" VALUE="2">2.チョキ<br> <INPUT TYPE="RADIO" NAME="DATA" VALUE="3">3.パー<br> <INPUT TYPE="submit" VALUE="勝負する"><br> </FORM> <br> </body> </html> <% '乱数を発生させて勝負する%> こんな感じです。
Sub HANTEI(strNO) 'ユーザーの手を受取り判断する Dim nCON 'コンピュータの手1〜3の数値が入る Dim nPC 'ユーザーさんの手 Dim strTE(3) '(*1)配列変数を宣言 strTE(1) = "グー" '(*2)配列にメッセージを代入 strTE(2) = "チョキ" strTE(3) = "パー" '入力値の判断、エラーならメッセージを表示させ抜ける '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 "あなたの手は" & strTE(nPC) & "です<br>" '(*3)ここでnPC番目を表示 '(*4)同様にコンピュータの手を表示する Response.Write "コンピュータの手は" & strTE(nCON) & "です<br>" '結果の判断 'まず、引き分けを判断 If nPC = nCON Then Response.Write "引き分けです<br>" '次に自分が勝ちの手を判断 グーvsチョキ,チョキvsパー,パーvsグー If nPC = 1 And nCON = 2 Then Response.Write "アナタの勝ちです<br>" If nPC = 2 And nCON = 3 Then Response.Write "アナタの勝ちです<br>" If nPC = 3 And nCON = 1 Then Response.Write "アナタの勝ちです<br>" 'コンピュータが勝ちか判断 グーvsパー,チョキvsグー,バーvsチョキ If nPC = 1 And nCON = 3 Then Response.Write "私(コンピュータ)の勝ちです<br>" If nPC = 2 And nCON = 1 Then Response.Write "私(コンピュータ)の勝ちです<br>" If nPC = 3 And nCON = 2 Then Response.Write "私(コンピュータ)の勝ちです<br>" End Sub/* * 3.ポイントは? */
まず、頭に<script>タグを書き、 <%@ LANGUAGE=VBScript %> あとは、普通にHTMLを書いて、 サーバー側の処理を記述したい場合は、 <% と ここの間がサーバーで処理される %> で囲えばいいんだぁ。 <% 〜 %>内に、VBScript(VBAに似てるけど微妙に違う)を記述する。 [No.01 Response.Writeで遊ぶ] ( http://www.ken3.org/backno/backno_asp01.html#1 を参照) で、そんな説明をいきなりしてました(笑) [No.03 乱数を使用して今日の運を表示] ( http://www.ken3.org/backno/backno_asp01.html#3 を参照) では、 Response.Write n は <%=変数%> と書ける方法を紹介、乱数Rnd関数を使ってみました。 今回は、 'コンピュータの手を決定 Randomize ' 乱数発生ルーチンを初期化します。 nCON = Int((3 * Rnd) + 1) '1 から 3 までの乱数を発生させます。 で、使いました。 [No.16 入力、結果表示を1つに、Subで関数分割] ( http://www.ken3.org/backno/backno_asp04.html#16 を参照) で関数を使用して、分割しCallで呼ぶ方法を解説してます 自分自身を呼ぶプログラムを説明しました。 [No.08 URLに付けたパラメータを参照(クエリ情報)] ( http://www.ken3.org/backno/backno_asp02.html#8 を参照) では、 URLに付けた情報 test007-2.asp?ID=123 ?の後ろがパラメーターを取出す Request.QueryString("項目名")をやりました。 GETで送ると、 http://www.ken3.org/cgi-bin/g/g001.asp?DATA=1 グー http://www.ken3.org/cgi-bin/g/g001.asp?DATA=2 チョキ http://www.ken3.org/cgi-bin/g/g001.asp?DATA=3 パー と、アンケートのようにメールのURLクリックしてもOKになることを [No.09 URLに付けたパラメータを参照(クエリ情報)] ( http://www.ken3.org/backno/backno_asp02.html#9 を参照) でフォームの値をURLに載せて、ASPが呼ばれてることを説明しました。/* * 4.終わりの挨拶 </HTML> */
今回は、軽く過去のメルマガをまとめてみました。 単体じゃなく、そろそろつなげて1本システムもどきを作りたいですね。 そんな話しの続きは(自分のメルマガ宣伝) http://www.ken3.org/backno/backno_guchi28.html#142 で、[トンネルの話、貫通後、横に広げるのは簡単?] といいかげんなこと書いてます。お時間のある人は見て笑ってください。 ファイルやDB関係がからんでいない処理なので、 わかりやすかったと思います。 次は、DB関係をまとめよう。。。といいつつ、また違うネタにしたり(笑) ※次回をお楽しみに。。。 ASP、VBScript勉強中の三流プログラマーのKen3でした。
ここまで、読んでいただきどうもです。目的の情報が見つかったか?少々心配しつつ、、、
感想や質問・要望・苦情など 三流君へメッセージを送る。
下記のフォームからメッセージを送ることができます。
[三流君(TOP ken3.org へ戻る)]
/ [ASPで遊ぶ、失敗する]
/ [ASP記事 バックナンバー目次]
まぁ、基本はデータの受け取りかなぁ。
・[Form等を使用したデータのやり取り]・・・ASPと言っても、HTMLの入力フォームからデータを受け取ります。POSTやGETでやりとりを押さえますか。
次は、データの入出力 で ADOを使った(ADOで接続) と SQLの解説を少々
・[ADOでMdbファイルを使う]・・・MDBと接続して、簡単な追加・更新・削除を行った。
・[ADOでExcelと接続してみた]・・・.xlsと接続してSQLを使ってみた。
・[ADOでCSVと接続してみた]・・・.CSV テキストを読み出した。※更新・削除はできません
広告:
DBが使えるので、あまり使用しないけど、普通のテキストファイル処理
・[テキストファイル処理]・・・ファイルを開いて、書き込む。1行読み込みなどを軽く
VBScriptでFormat関数が無いなど、微妙にVBAと違うけど
[VBScript関数関係の説明]・・・少し、処理を書いてみた。
[その他処理サンプル]・・・あまり良いサンプル作れなかったけど。。。
何かの参考となれば幸いです。
[三流君(TOP ken3.org へ戻る)]
/ [ASPで遊ぶ、失敗する]
/ [ASP記事 バックナンバー目次]