ネット接続でキャラクタを動かす

二台のパソコンをネートワークで接続して、キャラクタを操作します。

前田稔の超初心者のプログラム入門

プログラムの作成

  1. 二台のパソコンをネートワークで接続して、キャラクタを操作します。
    一台目のパソコンでは猫を動かし、二台目のパソコンでは恐竜を動かします。
    キャラクタを操作するプログラムは 二個のウインドウからキャラクタを操作 を参照して下さい。
  2. プロジェクトのディクトリ構成です。
    C:\tomcat\webapps\applet にプロジェクトを格納します。
    +:フォルダー, ・:ファイル, *:生成されるファイルです。
    +applet
        +WEB-INF
            +classes
                +mybean
                    ・msg2bean.java     //msgA,msgBを定義したBeans
                    *msg2bean.class
                ・Msg2Serv.java         //Appletから呼び出されるServlet
                *Msg2Serv.class
            ・web.xml                   //Servlets のマッピング
        ・PlayA.java                    //ClientAがプレイするApplet
        ・PlayB.java                    //ClientBがプレイするApplet
        *PlayA.class
        *PlayB.class
        ・PlayA.htm                     //PlayA.javaの起動
        ・PlayB.htm                     //PlayB.javaの起動
        ・chr47.gif                     //PlayAのキャラクタ
        ・chr53.gif                     //PlayBのキャラクタ
    
  3. ソースプログラムです。
    ファイル名 説明
    PlayA.htm PlayA.java(Applet)を起動する HTML
    PlayB.htm PlayA.htm と同じ要領です。各自で作成して下さい。
    PlayA.java ClientA がプレイする Applet
    PlayB.java PlayA.java と同じ要領です。各自で作成して下さい。
    msg2bean.java msgA,msgB を定義した Beans
    Msg2Serv.java Applet から呼び出される Servlet
    web.xml TEXT FILE を入力 を参照して各自で作成して下さい
      
  4. msg2bean.java をコンパイルして msg2bean.class を作成して下さい。
    Msg2Serv.java をコンパイルして Msg2Serv.class を作成して下さい。
    PlayA.java をコンパイルして PlayA.class を作成して下さい。
    PlayB.java をコンパイルして PlayB.class を作成して下さい。
    詳細は JSP Error Guide を参照して下さい。
  5. "C:\tomcat\bin\tomcat7w.exe" を選択して、管理者として実行から apache-tomcat を起動します。
    WWW ブラウザを起動してキャラクタAを操作するプログラムを起動して下さい。
    http://localhost:8080/applet/PlayA.htm
    次に、別のウインドウを開いてキャラクタBを操作するプログラムを起動して下さい。
    http://localhost:8080/applet/PlayB.htm
  6. PlayA からは猫を操作し、PlayB からは恐竜を操作します。

プログラムの説明

  1. msg2bean.java には PlayA 用の領域(MsgA)と PlayB 用の領域(MsgB)を定義しています。
    この領域に「A/Bの区別(0,1)と、XY座標と、キャラクタの向き(0〜3)」をカンマで区切って格納します。
    private String MsgA,MsgB;
  2. Msg2Serv.java は Applet から呼び出されて、PlayA と PlayB のデータを交信します。
    msg2bean.java を組み込んで、Beans を永続化しています。
    PlayA から呼ばれた時は渡された情報を MsgA に格納して MsgB を返します。
    PlayB から呼ばれた時は渡された情報を MsgB に格納して MsgA を返します。
  3. PlayA.java では、キーの操作を検出してアニメーションしながら猫を描画します。
    また Msg2Serv.java に猫の情報を渡して恐竜の情報を受け取ります。
    受け取った情報に基づいて恐竜を描画します。
  4. PlayB.java では、キーの操作を検出してアニメーションしながら恐竜を描画します。
    また Msg2Serv.java に恐竜の情報を渡して猫の情報を受け取ります。
    受け取った情報に基づいて猫を描画します。
  5. キャラクタAを操作するプログラムを起動して下さい。
    PlayA からは猫を操作します。
    http://localhost:8080/applet/PlayA.htm
  6. 別のウインドウを開いてキャラクタBを操作するプログラムを起動して下さい。
    PlayB からは恐竜を操作します。
    http://localhost:8080/applet/PlayB.htm
  7. キャラクタを操作するプログラムは 二個のウインドウからキャラクタを操作 を参照して下さい。
    ネットワークの接続は AppletA⇔Servlet⇔AppletB を参照して下さい。
  8. LAN で接続されいるデスクトップとノートをつないでゲームを起動してみました。
    キャラクタAの起動
    http://192.168.24.53:8080/applet/PlayA.htm
    キャラクタBの起動
    http://192.168.24.53:8080/applet/PlayB.htm
    問題無く起動出来たのですが、自分のキャラクタは操作出来ても、相手のキャラクタが動きません。
    JAVA 対応のサーバーを使えば正常に動作するのでしょうか?
    何か対処する方法があるのでしょうね。ご存じの方はメールして下さい。 (^_^;)

Java Game Program