□投稿者/ とりあえず匿名 -(2002/06/22(Sat) 07:34:30)
□U R L/ |
{---プログラム掲示板投稿フォーム--- !!!どうやら量が多すぎて一度に投稿できないようなので 2回に分けて投稿します。!!! 【ソフト名】ネト対戦、五目並べ風味 【作 成 者】とりあえず匿名 【種 別】フリーソフトウェア 【ひまわりのバージョン】ver.1.50 【転 載】可(転載条件:ご自由に) 【改変運用】可 【ひまわり本体への梱包】可(でもやらない方がいいと思いますけど(笑)) 【実行時に利用作成するファイル】無 【コメント】ネットで「占有されたMIDIデバイスを強制解放するソフト」を 探していて、ひまわりに出会ったのが3日前。僕もゆくゆくは日本語プログラムな ソフトを作ろうと思っていたんですが既にあったんですね。と思って、とりあえず ネトゲー作ってまみした。TCP/IPも、ゲーム自体も、プログラム組むのは初めて だったんですが、それでも一応なんとか動くものが作れるのは、ひまわりのパワー でしょうか。五目並べ風味です。ゲームのルールですが「3・3禁」とか一切判別 してません。1個づつ交互に石を置いていって、先に、縦・横・ナナメに連続5つ "以上"並べた方が勝ちです。まぁソレだけです。それにしても、今見返しても、 なんてゴテゴテッとしたソースなんでしょう。もし次があれば、もう少しスマートな ソースを書きたいものです。メモをスクロールさせる事ができなかったんで、 新規発言が最上部に来る、htmlチャットみたいな不格好なものになってしまった のがチョイ心残りですね。ところで、この際だからちょっと言わせてもらいたい んですがプログラム制作者はWindowsの設定の「小さいフォント」だけではなくて 「大きいフォント」でも表示を確認して頂きたい。「大きいフォント」愛用家と しては寂しい限りです。と言いつつこのプログラムは800x600の画面には収まら ないんですが・・・(800x600も愛用してる人) ---投稿フォームここまで---}
※※※※※※※※※※※※ ※碁盤の総括、初期設定 ※※※※※※※※※※※※
※碁盤の各設定 碁盤の色は、「#eecc44」。 碁盤の1マスは、20。 碁盤の大きさは、碁盤の1マス*19。
※碁盤の石の状態を記憶する変数 ※※0が何も無い、1が黒石、2が白石。 置き碁石初期化を、呼ぶ。 置き碁石初期化の次へ、飛ぶ。
*置き碁石初期化 碁盤の石#0 = 「0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0」 碁盤の石#1 = 「0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0」 碁盤の石#2 = 「0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0」 碁盤の石#3 = 「0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0」 碁盤の石#4 = 「0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0」 碁盤の石#5 = 「0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0」 碁盤の石#6 = 「0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0」 碁盤の石#7 = 「0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0」 碁盤の石#8 = 「0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0」 碁盤の石#9 = 「0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0」 碁盤の石#10 = 「0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0」 碁盤の石#11 = 「0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0」 碁盤の石#12 = 「0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0」 碁盤の石#13 = 「0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0」 碁盤の石#14 = 「0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0」 碁盤の石#15 = 「0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0」 碁盤の石#16 = 「0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0」 碁盤の石#17 = 「0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0」 碁盤の石#18 = 「0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0」 戻る。 *置き碁石初期化の次
『勝利確認』を、『?の』で、関数定義。 ※引数、1か2。1で黒が5個並んでるか調べ、2は白を調べる。 ※戻り値、「それ」に「はい」か「いいえ」。 ※※※※※※※※※※※※※※※※※ ※ルールを追加する時は、この関数の周辺を変更するといいかも。 ※※※※※※※※※※※※※※※※※
※碁盤の表示に関する初期処理 碁盤を、イメージとして、作成。 その、拡大機能は、オフ。 その、Xは、0。 その、Yは、0。 その、幅は、碁盤の大きさ。 その、高さは、碁盤の大きさ。 その、クリックした時は、碁盤クリックイベント。 『指定碁石描写』を、『?,?に,?で』で、関数定義。 ※引数は、碁盤の位置 X, Y に、1(黒)/2(白)で、 その、マウス動かした時は、碁盤マウス移動イベント。 その、可視は、オン。
碁盤裏VRAMを、イメージとして、作成。 その、拡大機能は、オフ。 その、Xは、0。 その、Yは、0。 その、幅は、碁盤の大きさ。 その、高さは、碁盤の大きさ。 その、可視は、オフ。
碁盤描写クリアを、呼ぶ。 碁盤描写クリアの次へ、飛ぶ。
※碁盤の目、描写。 *碁盤描写クリア 塗り色は、碁盤の色。 ペン色は、碁盤の色。 ペン太さは、1。 碁盤裏VRAMの、(0,0)から(碁盤の大きさ,碁盤の大きさ)へ、四角形描画。 ペン色は、黒色。 一時変数xは、碁盤の1マス÷2。 一時変数yは、碁盤の1マス÷2。 19回( 碁盤裏VRAMの、(一時変数x,一時変数y)から、 (碁盤の大きさ - 一時変数x,一時変数y)へ、線描画。 一時変数yは、一時変数y + 碁盤の1マス。 ) 一時変数xは、碁盤の1マス÷2。 一時変数yは、碁盤の1マス÷2。 19回( 碁盤裏VRAMの、(一時変数x,一時変数y)から、 (一時変数x,碁盤の大きさ - 一時変数y)へ、線描画。 一時変数xは、一時変数x + 碁盤の1マス。 )
碁盤裏VRAMを、碁盤の、(0,0)へ、イメージコピー。 戻る。 *碁盤描写クリアの次
※※※※※※※※※※※※ ※碁盤以外のUIの宣言 ※※※※※※※※※※※※
母艦の、タイトルは、「ネト対戦、五目並べ風味」。 母艦の、高さは、600。 (碁盤の、下側)に、ラベルAを、ラベルとして、作成。 その、テキストは、「簡易チャット/通信メッセージ(あなたの名前:???)」 その、Xは、10。 (その、下側)に、チャットメッセージを、メモとして、作成。 その、幅は、500。 その、高さは、140。 『チャットメッセージへ発言』を、『?と』で、関数定義。 (その、下側)に、発言エディタを、エディタとして、作成。 その、幅は、500。 (その、右側)に、発言ボタンを、ボタンとして、作成。 その、タイトルは、「発言」 その、イベントは、発言イベント。 (チャットメッセージの、右側)に、切断ボタンを、ボタンとして、作成。 その、タイトルは、「切断」 その、イベントは、切断ボタンイベント。 (碁盤の、右側)に、ラベルBを、ラベルとして、作成。 その、テキストは、「手順の記録」。 (その、下側)に、手順の記録を、メモとして、作成。 その、幅は、200。 その、高さは、300。 『手順を記録』を、『?,?,?で』で、関数定義。 ※引数は、碁盤のX, Y ,色
※※※※※※※※※※※※ ※初期設定ダイアログ ※※※※※※※※※※※※
ユーザー初期設定ダイアログを、フォームとして、作成。 その、スタイルは、ダイアログスタイル。 その、幅は、450。 その、高さは、350。 ラベル1を、ラベルとして、作成。 その、テキストは、「ゲーム中のあなたのニックネーム:」。 その、Xは、10。 その、Yは、10。 そを、ユーザー初期設定ダイアログに、乗せる。 (その、下側)に、自分の名前を、エディタとして、作成。 その、幅は、300。 そを、ユーザー初期設定ダイアログに、乗せる。 (その、下側)に、ラベル2を、ラベルとして、作成。 その、テキストは、「クライアントになる場合、\n接続するサーバーのIPアドレス:」。 そを、ユーザー初期設定ダイアログに、乗せる。 (その、下側)に、エディタ2を、エディタとして、作成。 その、幅は、200。 そを、ユーザー初期設定ダイアログに、乗せる。 (その、下側)に、ラベル3を、ラベルとして、作成。 その、テキストは、「使用ポート番号:」。 そを、ユーザー初期設定ダイアログに、乗せる。 (その、下側)に、ポート番号を、エディタとして、作成。 そを、ユーザー初期設定ダイアログに、乗せる。 (その、下側)に、ボタン1を、ボタンとして、作成。 その、テキストは、「サーバーを起動し、相手を待ち受ける。」。 その、高さは、35。 そを、ユーザー初期設定ダイアログに、乗せる。 その、イベントは、サーバー開始イベント。 (その、下側)に、ボタン2を、ボタンとして、作成。 その、テキストは、「クライアントになり、サーバーに接続する。」。 その、高さは、35。 そを、ユーザー初期設定ダイアログに、乗せる。 その、イベントは、クライアント開始イベント。
※※※※※※※※※※※※ ※TCP/IP 状況把握変数 ※※※※※※※※※※※※ 通信の立場は、「」。※サーバーかクライアントか。 通信の相手は、「」。※主に複数との接続を避けるために使う。IPアドレスを記憶。 通信の相手の名前は、「」。 試合状況の、試合数は、1。 試合状況の、自分の勝ち数は、0。 試合状況の、相手の勝ち数は、0。 試合状況の、打つ番は、「」。 試合状況の、手順数は、1。
待機。
*碁盤クリックイベント
もし、碁盤の石#(整数(マウスX÷碁盤の1マス))#(整数(マウスY÷碁盤の1マス))が、0ならば、( もし、(試合状況の、打つ番)が、通信の立場ならば、( もし、通信の立場が、「サーバー」ならば、石の番号は、1。{黒} もし、通信の立場が、「クライアント」ならば、石の番号は、2。{白}
(整数(マウスX÷碁盤の1マス)),(整数(マウスY÷碁盤の1マス))に、石の番号で、指定碁石描写。
一時変数xは、整数(マウスX÷碁盤の1マス)。 一時変数yは、整数(マウスY÷碁盤の1マス)。 もし、通信の立場が、「サーバー」ならば、 通信の相手へ、「石置きました,{一時変数x},{一時変数y}」を、TCPサーバーから送信。 もし、通信の立場が、「クライアント」ならば、 「石置きました,{一時変数x},{一時変数y}」を、TCP送信。
石の番号の、勝利確認。 もし、それが、「はい」ならば、( 「System > あなたの勝ちです。」と、チャットメッセージへ発言。 試合状況の、自分の勝ち数は、(試合状況の、自分の勝ち数) +1。 「System > あなたの勝ち数は、{試合状況の、自分の勝ち数}になりました。」& 「相手の勝ち数は、{試合状況の、相手の勝ち数}です。」と、チャットメッセージへ発言。 もし、(試合状況の、自分の勝ち数)が、2以上ならば、( 「System > おめでとう、あなたは{通信の相手の名前}との対戦に勝利しました。」と、 チャットメッセージへ発言。 )違えば、( 試合状況の、試合数は、(試合状況の、試合数 +1)。 「System > では、{試合状況の、試合数}戦目を開始します。」と、 チャットメッセージへ発言。 もし、通信の立場が、「サーバー」ならば、( 「System > 先手は白の{通信の相手の名前}です。」と、 チャットメッセージへ発言。 手順の記録は、「後手:黒({自分の名前})\n先手:白({通信の相手の名前})」。 ) もし、通信の立場が、「クライアント」ならば、( 「System > 先手は黒の{通信の相手の名前}です。」と、 チャットメッセージへ発言。 手順の記録は、「後手:白({自分の名前})\n先手:黒({通信の相手の名前})」。 ) ) 試合状況の、手順数は、1。 置き碁石初期化を、呼ぶ。 碁盤描写クリアを、呼ぶ。 ) 打ち手交代を、呼ぶ。
)) 待機。
*碁盤マウス移動イベント 碁盤裏VRAMを、碁盤の、(0,0)へ、イメージコピー。 もし、(試合状況の、打つ番)が、通信の立場ならば、( もし、碁盤の石#(整数(マウスX÷碁盤の1マス))#(整数(マウスY÷碁盤の1マス))が、0ならば、( 塗り色は、0。 ペン色は、赤色。 ペン太さは、2。 一時変数xは、整数(マウスX÷碁盤の1マス)*碁盤の1マス。 一時変数yは、整数(マウスY÷碁盤の1マス)*碁盤の1マス。 碁盤の、(一時変数x,一時変数y)から(一時変数x+碁盤の1マス,一時変数y)へ、線描画。 碁盤の、(一時変数x,一時変数y)から(一時変数x,一時変数y+碁盤の1マス)へ、線描画。 碁盤の、(一時変数x,一時変数y+碁盤の1マス)から、 (一時変数x+碁盤の1マス,一時変数y+碁盤の1マス)へ、線描画。 碁盤の、(一時変数x+碁盤の1マス,一時変数y)から、 (一時変数x+碁盤の1マス,一時変数y+碁盤の1マス)へ、線描画。 )) 待機。
*サーバー開始イベント もし、自分の名前が、「」ならば、 「ニックネームを入力してください。」と、言う。 違えば、( もし、ポート番号が、「」ならば、 「ポートを指定してください。」と、言う。 違えば、( ポート番号が、数字か。 もし、それが、いいえならば、 「ポート番号を正しく指定してください。」と、言う。 違えば、( ラベルAの、テキストは、「簡易チャット/通信メッセージ(あなたの名前:{自分の名前})」
TCPポートは、ポート番号。 TCPサーバー起動。 サーバー接続イベントに、TCPサーバー接続処理設定。 通信受信イベントに、TCPサーバー受信処理設定。 ※サーバーを起動した後に受信イベントを設定しないと無視されてしまうので注意。 ※接続イベントは問題ないのに、なぜ・・・。
通信の立場は、「サーバー」。 通信の相手は、「」。
「System > サーバーとして起動しました。相手の接続を待っています。」と、 チャットメッセージへ発言。 ユーザー初期設定ダイアログの、可視は、オフ。
))) 待機。
|
|