2013-04-10 2 views
-1

Я новичок в Android/Java. Я хочу изменить простую игру с открытым исходным кодом Android. Мне намного легче научиться программированию на реальных примерах.Вызвать метод в 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

И создать XML-файл со строковым массивом в значениях /rand_bkgnd.xm л:

<?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> 

Запрос: Пожалуйста, помогите мне создать метод с выше Randomize фона кода. Я хотел бы иметь этот код в отдельный файл Java и иметь возможность вызвать его из 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. Пожалуйста, предоставьте мне примеры, основанные на моем коде/игре и пошаговых инструкциях или объяснениях.

+0

Я просто удивляюсь, почему я получил отрицательный голос за мой вопрос без каких-либо объяснений? Итак, следует ли мне считать эту плохую шутку жалким участником этого форума? Или я должен считать это реакцией разочарованного программиста java/android, который не понимает очень простой фальшивый факт, что там есть безобразия в отчаянной потребности в помощи? –

ответ

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() Метод

Смежные вопросы