2013-07-02 2 views
0

Я новичок в android, поэтому в интересах обучения я сделал себе простую игру, в которой пользователь находит изображение в одном действии «scene1», а затем, когда они нажимают изображение, которое он перемещает к следующему мероприятию «scene2», все работает нормально. Что я хочу сделать, это сохранить то, на каком уровне пользователь получает, чтобы они могли продолжить в следующий раз, когда они начнут игру, нажав кнопку загрузки данных с сохранением, например.Как сохранить прогресс пользователей в моей игре

Я просмотрел разделяемые префы и написал файл во внутреннем хранилище, но я не могу его обвести :(Было бы очень полезно, если бы вы предложили мне какую-то помощь и заставили меня двигаться в правое направление :)

Ниже приведен код, который я использую для каждого уровня.

public class scene1 extends Activity implements OnClickListener { 

private CountDownTimer countDownTimer; 
private boolean timerHasStarted = false; 
private Button startB; 
public TextView text; 
private final long startTime = 20 * 1000; 
private final long interval = 1 * 1000; 

@Override 
public void onBackPressed() { 
    new AlertDialog.Builder(this) 
    .setIcon(android.R.drawable.ic_dialog_alert) 
    .setTitle("FindIt") 
    .setMessage("Exit to main menu?") 
    .setPositiveButton("Yes", new DialogInterface.OnClickListener() 
{ 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     finish();  
    } 

}) 
.setNegativeButton("No", null) 
.show(); 
} 

ImageButton imageButton; 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

    startB = (Button) this.findViewById(R.id.button); 
    startB.setOnClickListener(this); 
    text = (TextView) this.findViewById(R.id.timer); 
    countDownTimer = new MyCountDownTimer(startTime, interval); 
    text.setText(text.getText() + String.valueOf(startTime/1000)); 
    } 

    @Override 
    public void onClick(View v) { 
    startB.setVisibility(View.INVISIBLE); 
    if (!timerHasStarted) { 
    countDownTimer.start(); 
    timerHasStarted = true; 
    startB.setText("STOP"); 
    } else { 
    countDownTimer.cancel(); 
    timerHasStarted = false; 
    startB.setText("RESTART"); 
    } 
    } 


    public class MyCountDownTimer extends CountDownTimer { 
    public MyCountDownTimer(long startTime, long interval) { 
    super(startTime, interval); 
    } 

    @Override 
    public void onFinish() { 
     Intent intent = new Intent(scene1.this, timeUp.class); 
     scene1.this.startActivity(intent); 
     finish(); 
      } 

    @Override 
    public void onTick(long millisUntilFinished) { 
    text.setText("" + millisUntilFinished/1000); 


    addListenerOnButton(); 

} 

public void addListenerOnButton() { 

    imageButton = (ImageButton) findViewById(R.id.it); 

    imageButton.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 

      Toast.makeText(scene1.this, 
      "You found It!", Toast.LENGTH_LONG).show(); 

      Intent intent = new Intent(scene1.this, scene2.class); 
      scene1.this.startActivity(intent); 
      android.os.Process.killProcess(android.os.Process.myPid()); 
      finish(); 

     } 

    }); 
} 

} 
} 
+3

О хорошее горе ... 'android.os.Process.killProcess (android.os.Process.myPid()); 'НЕ делай этого КОГДА-ЛИБО !!! Использование 'finish()' - изящный способ закончить 'Activity', а не EVER, чтобы убить ваш процесс. – Squonk

ответ

0

Вы упомянули решение самостоятельно: используйте общие настройки. Прочитайте предпочтения в onCreate() и напишите их в onDestroy()

Этот пост SO содержит краткое описание того, как реализовать общие настройки. How to use SharedPreferences in Android to store, fetch and edit values

0

Вы должны создать своего рода «данные» или «файл данных». Эти данные будут иметь текущий уровень. Вы можете сохранить его внутренне (в памяти телефона пользователя) или извне на каком-либо сервере. Вот то, что вам нужно:

http://developer.android.com/guide/topics/data/data-storage.html

Вы хотите способ для вашей игры, чтобы посмотреть, чтобы увидеть, если есть игра данные уже хранятся. Убедитесь, что вы выполняете эту проверку перед началом игры (или когда выбрана игра загрузки). Файл данных может быть очень простым файлом с только что воспроизведенным и текущим уровнем.

//pseudo code 
//public onStart() 
    //look for saved file 
    //if saved file does not exist or is null 
     //new game 
    //else 
     //parse saved file 
     //load up proper level/stats/etc. 

Это также полезно для сохранения других данных:

http://developer.android.com/training/basics/data-storage/index.html

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