(Collegeboard の AP 試験のケーススタディのような GridWorld)
それで、私はここ数年、空き時間にこのゲームに取り組んできましたが、かなり順調に進んでいます。グリッド内を走り回り、アイテムを拾い、モンスターなどと戦う素敵な小さな棒のキャラクターがいます。今、私はそれを次のレベルに進める準備ができていると思います (ネットワーク クラスのプロジェクトを作成する必要があるため、とにかく多くの選択肢があります...)、そして私は'進行方法に少し困惑しています。
私は過去に ServerSocket を使用していくつかのプログラムを作成しました。そこでは 1 つのサーバーが実行されており、複数のクライアントがそれに接続してメッセージを受信できますが、それらはすべて単純なテキスト プログラムであり、少数の文字列しか交換しません。これにソケットを使おうと思っていたのですが、設定方法がわかりません...
GridWorld が実行されると、グリッドとその中のすべてのアクターを含む JFrame のようなものが自動的にポップアップします。「エンジン」のすべてのコードを含むメイン ソース ファイルには、基本的に 2 つの巨大なメソッドがあります。単位時間ごとに何が起こるかを制御する step() と、keyPressed() です。ユーザーがキーを押したときの動作を制御します。ここで、step() は確実にサーバー側にある必要があり、keyPressed() はウィンドウと一緒にクライアント側にある必要があると考えていました。すべての NPC のアクションとゲームの計算を管理するメイン ゲームを、サーバー上で 1 回だけ実行するという考えです。
しかし、どのように正確に分割しますか?サーバーとクライアントの間でデータをやり取りする方法さえわかりません。 PrintWriter と BufferedReader を使用しました。PrintWriter には任意のオブジェクトを受け入れる print() メソッドがあることがわかりましたが、BufferedReader はどのようにそれを受け取るのでしょうか? オブジェクトを読み取るメソッドはありません。
つまり、基本的には、サーバーが何をすべきか、クライアントが何をすべきか、どのライブラリを使用すべきか、特定の機能をどこに置くべきかなど、すべての詳細を知りたいのです。