这是我的第一篇文章,我没有发现任何类似的东西,所以我决定问一下。
我正在为 Android 开发一个扑克游戏来练习 SDK 并刷新/改进我的 Java。它是一个控制德州扑克手的简单应用程序。
最初,我只使用 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 进行绘制并传递一个包含要绘制什么的对象?
非常感谢你的帮助
编辑:我决定尝试使用处理程序实现它并传递简单的消息。正如我从Developers 的 Handler 中读到的,一个 Handler 对象被分配给线程的 MessageQueue,所以我尝试将它放入我的 Activity 类中(在 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 不执行。
我错过了什么?
再次感谢