-1

私はAndroid / Javaが初めてです。シンプルなオープン ソースの Android ゲームを変更したいと考えています。実際の例を使ってプログラミングを学ぶ方がはるかに簡単です。

目標: ゲームが次のレベルに進むとき、またはプレーヤーが新しいゲームを開始するときに、ランダムな背景を生成したいと考えています。

既に:ユーザーがアプリケーションを起動しているときにランダムな背景を生成する方法を見つけ、次のコードを置き換えました。

  mBackgroundOrig =
            BitmapFactory.decodeResource(res, R.drawable.background, options);

と:

      TypedArray imgs = getResources().obtainTypedArray(R.array.random_background);
      Random rand = new Random();
      int rndInt = rand.nextInt(imgs.length());
      int resID = imgs.getResourceId(rndInt, 0);
      mBackgroundOrig = BitmapFactory.decodeResource(res, randBackground.resID, options);

: https://code.google.com/p/bubble-shoot/source/browse/trunk/bubble-shooter-pro/src/com/likeapp/game/bubbleshooter/GameView.java

そして、 values/rand_bkgnd.xmlに文字列配列を含む XML ファイルを作成します。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="random_background">
        <item name="background_01">@drawable/background01</item>
        <item name="background_02">@drawable/background02</item>
        <item name="background_03">@drawable/background03</item>
        <item name="background_04">@drawable/background04</item>
        <item name="background_05">@drawable/background05</item>
        <item name="background_06">@drawable/background06</item>
        <item name="background_07">@drawable/background07</item>
        <item name="background_08">@drawable/background08</item>
        <item name="background_09">@drawable/background09</item>
        <item name="background_10">@drawable/background10</item>
    </string-array>
</resources>

リクエスト:上記のランダム化バックグラウンド コードを使用してメソッドを作成するのを手伝ってください。このコードを別の Java ファイルに入れ、プレーヤーが 1 つのレベルを終了して次のレベルに進むときに、goToNextLevel()メソッドから呼び出すことができるようにしたいと考えています。

public void goToNextLevel() {
    SharedPreferences sp =this.mContext.getSharedPreferences(
               BubbleShooterActivity.PREFS_NAME, Context.MODE_PRIVATE);
    currentLevel = sp.getInt(BubbleShooterActivity.PREFS_LEVEL_KEY_NAME, 0);
    int maxLevel = sp.getInt(BubbleShooterActivity.PREFS_UNLOCK_LEVEL_KEY_NAME, 0);     
    currentLevel++;
    if(maxLevel<=currentLevel){
        maxLevel=currentLevel;
    }
    sp.edit().putInt(BubbleShooterActivity.PREFS_LEVEL_KEY_NAME, currentLevel).putInt(BubbleShooterActivity.PREFS_UNLOCK_LEVEL_KEY_NAME, maxLevel).commit();
    if (currentLevel >= MAX_LEVEL_NUM) {
        currentLevel = 0;
    }
}

: https://code.google.com/p/bubble-shoot/source/browse/trunk/bubble-shooter-pro/src/com/likeapp/game/bubbleshooter/LevelManager.java

これは、少なくとも平均的な Java スキルを持っている人にとっては非常に簡単であるに違いないと思います。私のコード/ゲームに基づいた例と、ステップバイステップの指示または説明を提供してください.

4

1 に答える 1

0

クラスを作成するだけです(たとえば、Background.class)

package com.yourpackage.name;

public class Background{
    public <type of the image> RandomBackground(){
        TypedArray imgs = getResources().obtainTypedArray(R.array.random_background);
        Random rand = new Random();
        int rndInt = rand.nextInt(imgs.length());
        int resID = imgs.getResourceId(rndInt, 0);
        mBackgroundOrig = BitmapFactory.decodeResource(res, randBackground.resID, options);
        return mBackgroundOrig;
    }
}

そしてあなたの goToNextLevel() メソッドで

mBackgroundOrig = background.RandomBackground();//add this


public void goToNextLevel() {
mBackgroundOrig = background.RandomBackground(); //to this
SharedPreferences sp =this.mContext.getSharedPreferences(
           BubbleShooterActivity.PREFS_NAME, Context.MODE_PRIVATE);
currentLevel = sp.getInt(BubbleShooterActivity.PREFS_LEVEL_KEY_NAME, 0);
int maxLevel = sp.getInt(BubbleShooterActivity.PREFS_UNLOCK_LEVEL_KEY_NAME, 0);     
currentLevel++;
if(maxLevel<=currentLevel){
    maxLevel=currentLevel;
}
sp.edit().putInt(BubbleShooterActivity.PREFS_LEVEL_KEY_NAME, currentLevel).putInt(BubbleShooterActivity.PREFS_UNLOCK_LEVEL_KEY_NAME, maxLevel).commit();
if (currentLevel >= MAX_LEVEL_NUM) {
    currentLevel = 0;
}

}

また、RandomBackground() メソッドを呼び出すために、メイン クラスにクラスを含める必要があります。

例えば:

Background background;

onCreate() メソッドの前

于 2013-04-10T03:14:51.050 に答える