Android 猜牌游戏,第二张牌赢了';不要画中间线
在这里进行中期项目,并寻找一种快速而肮脏的方法来摆脱棘手的局面 游戏看起来是这样的。要玩游戏,请单击一张牌,然后单击另一张牌,如果它们匹配,它们都将保持显示状态。全力以赴,比赛就结束了 在我的例子中,当显示一张卡时,当用户选择第二张卡时,处理逻辑应将该卡设置为可见,然后检查是否存在匹配。如果没有,请将卡返回到旧图像 我希望这段代码能帮助您理解我的意图Android 猜牌游戏,第二张牌赢了';不要画中间线,android,Android,在这里进行中期项目,并寻找一种快速而肮脏的方法来摆脱棘手的局面 游戏看起来是这样的。要玩游戏,请单击一张牌,然后单击另一张牌,如果它们匹配,它们都将保持显示状态。全力以赴,比赛就结束了 在我的例子中,当显示一张卡时,当用户选择第二张卡时,处理逻辑应将该卡设置为可见,然后检查是否存在匹配。如果没有,请将卡返回到旧图像 我希望这段代码能帮助您理解我的意图 gridLayout.setOnItemClickListener(new AdapterView.OnItemClickListene
gridLayout.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//HOW DO I FORCE THE INTERFACE TO REDRAW BEFORE CONTINUING THE THREAD?
engine.setCardStateToShow(position);
gridLayout.invalidate();
gridLayout.invalidateViews();
try{
Thread.sleep(1000);
}catch (Exception x){
}
//DETERMINE IF THE CARDS MATCH AND IF NOT -- SET CARD INVIS
String message = engine.itemClicked(position, gridLayout);
Toast.makeText(getApplication(), message, Toast.LENGTH_SHORT).show();
//If engine returns a value of WASWINNER, we can end the activity and end the game.
if (message.equals(GameEngine.WASWINNER)) {
startActivity(endActivity);
}
}
});
}
gridLayout.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
//在继续线程之前,如何强制重新绘制接口?
发动机。设置卡状态显示(位置);
gridLayout.invalidate();
gridLayout.invalidateViews();
试一试{
睡眠(1000);
}捕获(异常x){
}
//确定卡是否匹配,如果不匹配--设置卡Invi
String message=engine.itemClicked(位置、网格布局);
Toast.makeText(getApplication(),message,Toast.LENGTH_SHORT).show();
//如果引擎返回的值为WASWINNER,则可以结束活动并结束游戏。
if(message.equals(GameEngine.WASWINNER)){
起始触觉(终末活动);
}
}
});
}
最终的结果是,应用程序将图像更改为显示,检查匹配,如果没有匹配,则更改为不显示。然后,用新的值重新绘制界面,因此对于最终用户,如果没有匹配,他们永远不会看到“错误”的磁贴,因为它会恢复为“不显示”
提前感谢,如果这个问题可以问得更好,请纠正我。好的,我利用AsyncTask抽象类解决了这个问题。通过使用AsyncTask,我可以有效地实现“多线程”,将比较逻辑与UI逻辑分离。因此,我可以直接单独管理UI,如下面的基本说明所示 通过使用onPreExecute()我展示了这些卡片 通过使用doInBackground()我可以检查并设置卡片显示状态处理
通过使用onPostExecute(),我可以根据AsyncTask实现的DoInBackground()方法的结果,直接在UI线程中将卡片返回到最终视图状态。请发布代码的“请勿发布”屏幕截图。请将所有文本作为文本发布。对不起,我在这里还是比较新的。我会努力找到并阅读规则。