2016-06-20 8 views
0

私は2プレイヤーのゲームをしています。サーバーから情報を取得すると、 "topic; arg1; arg2"の形式になりますので、ポジションを送る場合は "PlayerPos; x; y"です。 それからsplitメソッドを文字「;」で使用します。 しかし...私は画面上に "PlayerPos"と書いてみましたが、それは正しいと書かれていましたが、それは得ることができません。処理分割(サーバ)

これは私がサーバー上で情報を送信する方法である:

server.write("PlayerPos;"+player1.x+";"+player1.y); 

そして、どのように私は、クライアント上で、それを受け入れる:

String Get=client.readString(); 
    String [] Getted = split(Get, ';'); 
    fill(0); 
    text(Get,20,20); 
    text(Getted[0],20,40); 
if(Getted[0]=="PlayerPos"){ 
    text("HERE",20,100); 
    player1.x=parseInt(Getted[1]); 
    player1.x=parseInt(Getted[2]); 
} 

それは私 "PlayerPos 200; 200" を書き込み、画面上その下に「PlayerPos」さえあります。しかし、ここに「ここ」と書いたことは決してありません。 私のミスはどこですか?

答えて

0

Stringの値を比較するときは、==を使用しないでください。代わりにif (a == b)の、if (a.equals(b))のように、equals()メソッドを使用し、二つの文字列の内容を比較するには

the Processing referenceから

if(Getted[0].equals("PlayerPos")){ 

:代わりにequals()機能を使用してください。 A StringObjectなので、==オペレータと比較すると、Stringsが同じメモリ位置に格納されているかどうかだけが比較されます。 equals()メソッドを使用すると、実際の内容が確実に比較されます。 (troubleshooting referenceは説明が長くなります)

+0

ありがとう!私はとてもばかげている、私はいつもこれを忘れる。< –

+0

@DavidAliFoxKnapčok問題はない。好きなときに役立つ回答をアップホートして受け入れることができます。 –

関連する問題