クラスを使わずにゲームを作るのは難しいです。
アクティビティのビューを更新するコードを保持するには、連絡する必要があります。ただし、「updateGame ()」内のコードは別のクラスで完全に抽象化する必要があります。このクラスをビジネス クラス (Controller) と呼びます。彼女はゲームの進行を管理する
次に、バックアップする情報がある場合は、別のクラスを使用してデータにアクセスする必要があります (データ アクセス層/モデル)。
これを読むことをお勧めします:
http://www.leepoint.net/notes-java/GUI/structure/40mvc.html
アニメーションやビデオが多い場合は、http: //www.andengine.org/ のようなフレームワークを使用する必要があります。
新しいアクティビティを使用したメニュー設定の例とゲーム管理の例:
public class MainActivity extends Activity {
private static final int CODE_MENU_SETTING = 5;
private int mTimeGame;
private Thread mGameThread;
private boolean isCurrentGame, isPause;
private Button mStartGameButton;
private ClassBusinessGame mBusiness;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//start button if you want to start the game with a button
mStartGameButton = (Button) findViewById(/*id button start game*/);
isCurrentGame = false;
isPause = false;
//mTimeGame counts the number of seconds of game
mTimeGame = 0;
//the class that controls the game
mBusiness = new ClassBusinessGame(...);
//example thread timer
mGameThread = new Thread("game thread") {
public void run() {
while(isCurrentGame) {
//here, your code to update your game, view
mTimeGame++;
try {
Thread.sleep(1000); //pause 1 sec
} catch(InterruptedException e) {}
while(isPause) {/*load*/} //this is not a good practice to break; loop while paused
}
}
};
}
public boolean onCreateOptionsMenu(Menu menu) {
// here, directly call the Menu Setting Activity
// attention: here, stop the thread which manage your game
isPause = true;
Intent menuIntent = new Intent(this, MenuSettingActivity.class);
startActivityForResult(menuIntent, CODE_MENU_SETTING); //startActivityForResult to resume game
return true;
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==CODE_MENU_SETTING) {
//resume game
isCurrentGame = false;
}
}
}
これは基本的な例であり、多くの改善が可能ですが、それは (フレームワークのないゲームの) アイデアです。