0

こんにちは、私は現在仮想ペット スタイルのアプリを作成しています。Pet.class というペットのベース用のクラスを作成しました。

    package com.grim.droidchi;

public class Pet {

    public static int Health = 100;
    public static int Happiness = 10;
    public static int Level = 1;
    public static int Hunger = 0;
    public static int Exp = 0;
    public static String Name;
    public static Boolean isAlive = true;
    public static Boolean isSick = false;

    public Pet(int startHealth, int startLevel, int startHunger) {

    }

   }

そして、基本のペット クラスを拡張する 'Dog' クラス

package com.grim.droidchi;


public class Dog extends Pet {

    public Dog(int startHealth, int startLevel, int startHunger) {
        super(startHealth, startLevel, startHunger);

    }

}

30 分ごとに AlarmManager が Gameloop.class をトリガーします

package com.grim.droidchi;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.media.MediaPlayer;
import android.util.Log;
import android.widget.TextView;

public class Gameloop extends BroadcastReceiver {
    MediaPlayer mp = null;
    private static final String TAG = "VPET";

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d(TAG, "Loop running");
        if (Pet.isAlive == true) {
            Pet.Hunger = Pet.Hunger + 1;
            Pet.Exp = Pet.Exp + 2;
            Pet.Happiness = Pet.Happiness - 1;

            mp = MediaPlayer.create(context, R.raw.beep);
            mp.start();
            petLevel();
            petStatus();
            randomEncounters();
        } else {

        }
    }

    private void petLevel() {


    }

    private void randomEncounters() {
        if (Math.random() < 0.20) {
            Pet.isSick = true; 

        }

    }

    private void petStatus() {
        if (Pet.Hunger > 7) {
            Pet.isAlive = false;

        } 

    }

}

ユーザーが選択した特定のペットに依存するようにゲームループで行われることを取得するにはどうすればよいですか? (より多くのペットタイプを作成すると仮定します。)

PS また、この質問の補足として、Gameloop クラスから UI を常に最新の状態に保つための最良の方法は何ですか?

どんな助けでも大歓迎です。私はまだJavaとAndroidについて学んでいます.すべての優れた学習教材の中でさえ、特定の/質問の答えを見つけるのが難しい場合があります.

ありがとうございました。

4

1 に答える 1

0

ペットの種類:

if (pet instanceof Dog)

UI を更新するには、インターフェイスを定義します。ここで私の答えを見てください:

BroadcastReceiver から R にアクセスする

これは別のシナリオ向けですが、簡単に適応できます。

[編集]

instanceof多くの場合、設計が不十分であることを示しています。

これを試して:

public void feed(Pet pet, int foodAmount){
        pet.feed(foodAmount);
}

public class Pet{       
}

public class Dog extends Pet{
    public void feed(int foodAmount){
        // feed like a dog
    }
}


public class Cat extends Pet{
    public void feed(int foodAmount){
        // feed like a cat
    }
}

次に、使用するだけですpet.feed(10);

于 2013-02-24T16:08:16.623 に答える