この記事で説明されている方法は、究極の真実であると主張していません。 インターネットがなく、精神に強い影響がある場所で、私がそれをどのように行ったかを説明します。
パート1-顧客フォームの作成。
VBAにはフォームがあります...フォームを使用する方が快適であり、最も重要なのはより馴染みのあるものです。 BomberManの場合、ペイントには12個のサムネイルと少しの創造性が必要でした。
-空のセル
-コンクリートの壁
-レンガの壁全体
-老朽化したレンガの壁(爆発時、消失の模倣)
-爆弾
-明るい爆風
-爆発後に火を燃やす(同様の消失)
-グレイブRIP
-緑の男
-赤
-青
-黄色
競技場のサイズは19x29で、そのうち9x14はコンクリートの壁です。 ゲームフォームを作成する原則は次のとおりです。8つのサムネイル標準(表示= false、画像をコピーするだけ)と19x29 = 551空の画像セルを追加する必要があります。参照テクスチャをそれらに代入します。 残りの4つの画像(カラフルな人)は、座標で競技場を移動します。
Excel VBAでフォームを作成します。
フォームを初期化するとき、空のセルImage1..551と色の付いた人をそれぞれの場所に配置する必要があります。 座標LeftおよびTopのパラメーターを割り当てた、1〜551のサイクル。 さて、接続メニューをスケッチしました。
クライアント自体は単純なアプリケーションです。 次に、キーストロークを監視し、小さな男を動かしてその座標をファイルに書き込みます。 同時に、私たちは常に競技場で変化を読み取り、表示します。 これが基本です。
パート2-クライアントとサーバーの相互作用。
テキストファイルを使用してゲームプレイを整理しました。 最初のファイルは、それぞれ29の番号を持つ19行の競技場です。 0-空のセル、1-死にかけている火、2-明るい火、3-破壊された壁、4-壁全体...など。サーバーは単純な数字のシーケンスで動作します。
さらに4つのファイルが、各プレーヤーと彼の新鮮な爆弾の現在の座標を管理します。 したがって、サーバーとして機能するプログラムは、座標を持つ4つのファイルを読み取り、次の瞬間のプレイフィールドを処理し、各クライアントが一度に読み取るメインファイルを吐き出します。
パート3-サーバー。
サーバーはスマートです。 これは別個のアプリケーションであり、タイマーは内部で作動し、各プレーヤーの座標を持つファイルがロードされます
オフトピック
はい、私が意味することを知っていれば、テレポーテーションからの保護なしで、裸の座標で。 爆弾の中で刑務所から脱出した方法を理解していない同僚にこんにちは...一般的に言えば、私のクライアントも爆弾を駆け抜けることができました。 神モード、いわば。 そして、私は常に「ベータ版のバグ」に言及しました
次の時点でフィールドが生成されます。
次の瞬間は、爆発による明るい火が消え、損傷した壁が最後まで崩壊し、各爆弾のタイマーが1つ減り、必要に応じて爆発が機能する条件付きの瞬間です。 同時に、新しい爆弾、新しい爆発、プレイヤーの座標が競技場の配列に追加されます。
ところで、爆発関数は再帰として実装されました。 凝集爆弾の連鎖全体は、ある時点で爆発し、順番に爆発しませんでした。 別のバーストではFPSが多すぎるため、余裕がありません。 そして、爆発は壮観になり、一度に消えていきました。 スクリーンショットでは、真実は減衰のわずかな不一致ですが、これは明らかにクライアント側のブレーキが原因です。
あなたの判断で、VBA上のボンバーマンネットワークの原理について、ある種の簡単な理論的説明を得ました。
PS彼らが言うことは何でも、1年は非常に短いです...どれだけ時間をかけたいと思っていましたが、十分な時間はありませんでした。