これは私の最初の投稿であり、同様のものが見つからなかったので、質問することにしました.
SDK を練習し、Java を更新/改善するために Android 用のポーカー ゲームを開発しています。テキサス ホールデム ポーカーの手を制御するシンプルなアプリです。
最初は、Java SE のみを使用してクラスを作成しましたが、問題ないように見えます。各クラスには独自の目的があり、コンソールの入出力でテストすると、実際に機能することがわかります:)
先週、私はそれを Android に移植して、グラフィック インターフェースで何が起きているかを確認することにしました。そのため、リソース イメージを取得し、Activity を作成して、私のポーカー パッケージを含めました。
Android に移植する前に、println (または readLine) を配置して、何が起こっているかを確認し、入力を送信できます。ここで、各クラスがゲーム アクティビティと通信して、描画する必要があるものを提供する方法にこだわっています。できれば、ゲーム クラス内に Android の描画コードを挿入したくありません。アクティビティとゲーム クラスの間でメッセージを交換する方法を見つけようとしています。Androidアプリの開発は初めてなので、これを行うためのすべてのメカニズムを知りません。
以下は私の活動のスニペットです:
package my.poker.game;
//import stuff
public class ActivityHand extends Activity
{
private static Vector<Player> Players = new Vector<Player>();
public static final int MAX_PLAYERS = 8;
public static void startEmptyTable()
{
Players.removeAllElements();
Players.setSize(MAX_PLAYERS);
}
public static void LeaveTable(int pos)
{
Players.set(pos, null);
}
public static void SitTable(int pos, Player player)
{
Players.set(pos, player);
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
int cash = 1000;
startEmptyTable();
SitTable(0, new Jogador("William", cash));
SitTable(2, new Jogador("Richard", cash));
SitTable(4, new Jogador("John", cash));
SitTable(6, new Jogador("Paul", cash));
SitTable(8, new Jogador("Albert", cash));
//Start a Hand.... in future this will be a loop for each Hand
Hand hand = new Hand(Players);
}
}
オブジェクト ハンドは、ディーラーを選択し、カードを配り、スモール ブラインドとビッグ ブラインドをコントロールし、ゲーム ループを開始します。
問題は、hand クラスが Activity に Draw を指示し、何を描画するかを含むオブジェクトを渡すにはどうすればよいかということです。
助けてくれてどうもありがとう
編集: ハンドラーを使用して簡単なメッセージを渡すことを実装してみることにしました。Handler at Developersから読み取ったように、Handler オブジェクトがスレッドの MessageQueue に割り当てられているため、これをアクティビティ クラスに入れようとしました (Hand hand = new Hand (...) の前):
Handler handler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
Bundle bundle = msg.getData();
// Do something with message contents
}
};
そして、何かを描きたいときは、Hand クラス内にこれを置きます。
Handler handler = new Handler();
Message msg = new Message();
Bundle bundle = new Bundle();
bundle.putString("Key", "The Key's Value");
msg.setData(bundle);
handler.sendMessage(msg);
私が理解しているように、両方のハンドラーは同じスレッドからのものであるため、同じ MessageQueue に割り当てられていますか? Hand クラス内でメッセージを送信すると、Activity クラスは handleMessage メソッドでメッセージを受信し、送信したメッセージを処理できるようになりましたが、handleMessage は実行されません。
私は何が欠けていますか?
再度、感謝します