for Win32 Version 1.0
Copyright 2000. Sato-Si
☆本体のダウンロードはここでも出来ます
☆ 付属のマニュアルも参照してください。そちらには
それぞれの、メソッドや、プロパティごとの説明文や
「現実的な、プログラミングにおける、問題点と、解決方法」が書かれています
さらに、実際のプログラムは、付属のサンプルプログラムを参照してください。
ただし、このサンプルプログラムはVisual
Basic 6.0のサービスパック4以降で
ないと、開いたり実行する事は出来ません・・・。その場合は、Visaul Basic
6.0
とサービスパック4以降を入手するか、ファイルForm1.frm
にプログラムが、
入っているので、メモ帳などで開いて参照してください
( 説明の中のプログラムはVisual Basic
です )
ActiveXコントロールSIGameのオブジェクト名を SIGame1とします
(Visual
Basicに貼り付けると、標準で、これになります)
作者(さとーし)へのメール(サポート&バグ情報をください)
☆目次
0.
概念
0-1.
どういうものか
0-2.
接続しているもの同士の識別方法
0-3.
データ共有方式(送信・受信方式)&変数について
--------- 基本編 ---------
1.
接続方法
1-1.
サーバで起動するプログラム
1-2.
サーバに接続するプログラム (クライアント)
1-3.
接続を閉じるプログラム(処理を中止するプログラム)
2.
変数について(通信方式)
2-1.
自分の変数を設定するには
2-2.
任意のidの人の変数を設定するには
2-3.
変数が変更されかどうかを監視すには
2-4.
接続状態を表す特殊変数"cnt"について
---------
応用編 --------- (まだ、工事中・・・・)
3.
接続した切断したの割り込みを検出する
3-1.
特殊変数"cnt"と、接続/切断 割り込みについて
3-2.
接続した
3-3.
切断した
4.
使わなくてもいい、メソッド。
5.
ダイレクト・データ送信機能
このActiveX
コントロールでは、TCP/IPプロトコルを使用して
ネットワーク越えの同じソフトウエアと情報共有を手段を簡単に
行えるようにするためのものです。
接続方式は、サーバ・クライアント型で、1カ所のサーバに
他の大勢が接続する(クライアント)方式をとります。
しかし、このソフトウエアでは、接続してしまえば、サーバも
クライアントも、特に意識しないですみます。
ゲームなどを簡単に実装できるように設計しました。
接続している一つ一つは、idで一意に識別されます。このidというのは
サーバに接続すると、サーバからもらえます。なお、
これは、単なる0以上の整数で、サーバのidは0で、あとは
開いているもっとも小さい数値のidをサーバが、接続してきた
クライアントに自動的に割り当てます。
サーバや、クライアント一つ一つに、自由に自分の変数を
持つことが出来ます。同じ変数名でも、idが違えば、別の変数です。
また、この変数は、全員から自由に見たり書き込んだりする事が
でき、また、自由に増やすことが出来ます。変数が作成されたり
変更されたりすると、イベント(割り込み)が発生します。これを
チェックする事で、キャラクターの状態の変化や、合図の確認を
行うことが出来ます
|
SIGame1.portNo =
12020
これは、サーバで、待ち受けに使用するポート番号の設定です。
ソフトごとに別々の番号を付けます。ここでは、12020番を使いました
なお、他のソフトウエアの使用するポート番号と重ならないような
4桁ぐらいの数字を使うのが良いでしょう。
SIGame1.maxConnects = 5
これは、今から起動するサーバへの接続許容個数です。
サーバも含まれます。この設定では、5なので、あと、4人まで
接続することが可能です。
SIGame1.StartServer
サーバを起動して、すぐに戻ります。
誰かが接続してきたかどうかや、起動を失敗したのを検出するには、
「3.接続した切断したの割り込みを検出する」を参照してください
|
SIGame1.serverIP =
"192.168.1.1"
これは、接続先のサーバのIPアドレスを指定しています。
SIGame1.portNo =
12020
これは、接続先のサーバで待ち受けを行っている
ポート番号を指定してます
SIGame1.Connect
サーバに接続を実行します
接続したかどうかや、接続を失敗したのを知るには、
「3.接続した切断したの割り込みを検出する」を参照してください
|
また、これは、サーバや、サーバ起動中や、接続中や
接続を試みている最中なら、その処理を中止します。
送信・受信中のデータも中止します。
なお、接続中にプログラムを終了すると、これが
自動的に呼び出されます。
自分の変数を作成する・値を変更する:
|
自分の変数"name"に対して、値を"さとーし"と設定します
変数名、変数の値、ともに文字列です。
変数名は、大文字小文字を区別します。
変数名、及び、変数の値に使えない文字は、TAB(文字コード8)
改行文字のCR(文字コード13)LF(文字コード10)と、NUL文字
(文字コード はれ以外なら、いかなる文字の組み合わせでも
使えます。(つまり、日本語の変数名も使用可能です)
接続中にこれを使うと、全員に 値設定の割り込みが入ります
「2-3.変数が変更されたかどうかを監視するには」を参照
この機能は、接続していない状態でも、使うことが出来ます。
接続すると、全員から、自分の値を見ることが出来ます。
自分の変数を値を取得する:
|
SetMyValでや、自分のidでSetValで設定してある値を取得します。
この場合は設定されていた値は val に、なります。
設定されてない場合は、""(ヌルストリング)を返します。
これも、接続していない状態で、使うことが出来ます。
接続している誰かの変数を作成する・値を変更する:
|
idが2の人の変数"name"を"たま"と設定します変数名、変数の値、
ともに文字列です。
変数名は、"name"で、設定する値は、"さとーし"です。
変数名、変数の値、ともに文字列です。
変数名は、大文字小文字を区別します。
変数名、及び、変数の値に使えない文字は、TAB(文字コード8)
改行文字のCR(文字コード13)LF(文字コード10)と、NUL文字
(文字コード
はれ以外なら、いかなる文字の組み合わせでも
使えます。(つまり、日本語の変数名も使用可能です)
※これは、SetMyValは接続していない状態でも使えますが
SetValは、接続中にしか使えません。
☆これで、自分の変数も設定できます。その時は自分のidに対して
設定します。(接続中はSetMyValの代わりにもなります)
使うと、全員に 値設定の割り込みが入ります
「2-3.変数が変更されたかどうかを監視するには」を参照
※自分のidや、他の人がどのidなのかを知る方法は、
「2-4.接続状態を表す特殊変数変数"cnt"について」や、
「3.
接続した切断したの割り込みを検出する
」を参照してください。
接続している誰かの変数を値を取得する:
|
SetValや、(id = 2のひとが)SetMyValで、設定してある 次のように割り込みを記述します:
値を取得します。この場合は設定されていた値は val
に、なります。
設定されてない場合は、""(ヌルストリング)を返します。
これも、接続していない状態で、使うことが出来ます。
2-3.変数が更新されたかどうかを監視するには
|
誰かが、SetVal や SetMyVal
を実行すると、接続している全員に対して
この割り込みが発生します。
これを使えば、SetValや、SetMyValで、合図を出すことも可能です
さらに、特殊変数"cnt"の値の変更を監視する事によって、誰かが
接続してきた、切断された等を検出する事も出来ます。
この、変数は、一人一人の接続状態、つまり、接続してきた
接続している、そして、切断した等を表すのに使用します。
接続し手いる場合は、値が"1"となります。切断中は"0"と
なります。
|
そして、誰かが、接続してきたかどうかを
検出するには、OnSetVal に 以下のようにすると
知ることが出来ます。ちょっと長いですが、
大した内容ではないので、すぐに分かると思います
接続した:
|
切断した:
|
それが、自分かどうかを知るには、
|
他にも、自分が接続した、切断した、他の人が接続した、切断した等を
知る方法はあります。次の、「接続した・切断したの割り込みを検出する」
そのに説明があります。そちらを使用すれば、複雑な処理を行いたい
ときには、If
文をいっぱい書かなくてもすみます。
ここまでで、一通りのゲームに必要な通信機能の説明は終わりました。
これだけで、ゲームは出来ますが、これ以下は、さらに、細かい処理や
他の記述方法の説明が書かれています
特殊変数"cnt"の値の変更を監視することによって、
接続してきた切断されたをまとめて監視することは出来ますが、
前のプログラムのように、If
文をたくさん書かなくてはならず
多少複雑です。それぞれの接続割り込みは、個別の
割り込み関数も、また呼び出されます。
次のような、イベントが用意されています
|