我在圍繞遊戲循環以及代碼實際位於程序中的位置仍然有很多麻煩。爲了學習基礎知識,我想爲此活動添加一個非常簡單的循環,但我不知道在哪裏放置代碼。我想要的是每10秒鐘,怪物攻擊玩家。每次玩家攻擊怪物時,在玩家再次攻擊之前,攻擊按鈕被禁用5秒。我知道有很多關於遊戲循環的文章,但我一直無法弄清楚如何以我想要使用它們的簡單方式來實現我讀過的內容。我不需要更新屏幕上的信息,背景是靜態的,因爲它是基於文本的戰鬥。另外我想要做的是繼續戰鬥,直到玩家或怪物死亡。如何創建一個簡單的遊戲循環,不需要繪圖
我不需要確切的代碼被寫入,更多的只是把定時器設置和在哪裏放置在活動代碼的框架。
謝謝。
public class MonstersActivity extends AppCompatActivity implements View.OnClickListener {
//variables for the UI
Button buttonAttack
View layout;
//Variables for game
private Player player;
private Monster monster;
//thread variables
private Handler myHandler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
//makes activity run in fullscreen
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_monsters);
//initiate player object from intent
Intent intent = getIntent();
Player player = (Player)intent.getSerializableExtra("player");
this.player = player;
//create monster
monster = new Monster(player.getCurrentCity());
//assign variables to UI objects
buttonAttack = (Button)findViewById(R.id.buttonAttack);
monsterHealth = (TextView)findViewById(R.id.textMonsterHealth);
playerHealth = (TextView)findViewById(R.id.textPlayerHealthMonster);
//setup onclick listeners
buttonAttack.setOnClickListener(this);
//initial UI setup
battleWindow.setEnabled(false);
battleWindow.setText("You have encountered a " + monster.getName() + ". Good luck brave Tobias!");
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.buttonAttack:
//Player attack
final int playerAttackDamage = GameElements.battleDamage(player.getPlayerStrength());
monster.setHealth(monster.getHealth() - playerAttackDamage);
player.setDamageDealt(playerAttackDamage);
battleWindow.setEnabled(true);
buttonAttack.setEnabled(false);
if(monster.getHealth() < 1){
player = GameElements.playerWon(player);
battleWindow.setText(player.getBattleLog());
player.setGP(player.getGP() + monster.getRewardGP());
monsterHealth.setText(monster.getName() + "'s Health = " + monster.getHealth());
}else {
player = GameElements.playerAttack(player);
battleWindow.setText(player.getBattleLog());
monsterHealth.setText(monster.getName() + "'s Health = " + monster.getHealth());
battleResult = 0;
}
break;
}
}
}//Activity Ends
你看過多線程嗎? – bdavies6086