我开发了一款基于Android回合制的游戏,到目前为止我可以做出第一步,但是当我希望用户等待第二个玩家玩应用程序崩溃时。 我试图做的是当玩家完成他的动作时我会调用这样的函数:
public void TheThread()
{
boolean fy=false;
while(!fy)
{
if(CheckMove2())
fy=true;
}
}
checkmove2函数连接解析表并检查是否有转弯并返回布尔值。 我相信这不是正确的方法,谢谢你的帮助。
编辑:
ChecKmove2() function:
private boolean CheckMove2() {
fx=false;
ParseQuery query = new ParseQuery("serverturn");
query.whereEqualTo("Receiver", Sender);
query.getFirstInBackground(new GetCallback() {
public void done(ParseObject updatePO, ParseException ParseError) {
if(ParseError == null){
fx=true;
String objID;
x=updatePO.getInt("x");
y=updatePO.getInt("y");
try {
updatePO.delete();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
///here comes the game algorithm.
if(fx)
return true;
return false;
}
编辑:应用程序没有崩溃它只是停止并提醒:“应用程序没有响应”然后询问我是否要等待或关闭应用程序.Checkmove功能完美运行我检查了其他设备,问题是在while循环中使用此checkmove函数,以便用户等待对手转动。
答案 0 :(得分:0)
您的应用程序崩溃了,因为在这种情况下,您已经导致无限循环(如果没有其他移动等待)。因此操作系统很可能会强制关闭您的应用程序,因为它认为它变得没有响应。
你做得最好的是:
Intent
作为旁注,您应该始终使用后台线程/异步任务等与网络通信。
答案 1 :(得分:0)
在你的位置我会做下一步:
在您正在等待的对象的解析后的cloudCode afterSave或beforeSave中,在更新所需对象时向您的应用发送套接字消息。例如,使用pubnub.com
我认为这是一个不错的解决方案,但是运行一些循环检查逻辑似乎非常不专业。
一般来说,它的工作原理如下:
两名玩家订阅了一个频道
当一个人完成移动时,从云代码发送消息到此 信道
该消息可以从解析触发更新,也可以包含所需的数据本身。