public class GameMgr { private enum eStatus{ NORMAL, GAMEOVER, GAMECLEAR }; private static final float PI = (float) Math.PI; private ArrayList<Barricade> _barrList = new ArrayList<Barricade>();//障害物リスト private LinkedList<Task> _taskList = new LinkedList<Task>();// タスクリスト private eStatus _status = eStatus.NORMAL; private Player _player; GameMgr() { _barrList.add(new BarricadeSquare( 0, 0,480, 20, null));// 画面4隅に四角形を配置 _barrList.add(new BarricadeSquare( 0, 0, 20,800, null)); _barrList.add(new BarricadeSquare(460, 0, 20,800, null)); _barrList.add(new BarricadeSquare( 0,780,480, 20, null)); // _barrList.add(new BarricadeSquare(0, 390, 480, 20, new BConf(+PI / 180)));// 中央に回転するバー(時計回り) // _barrList.add(new BarricadeSquare(0, 390, 480, 20, new BConf(-PI / 180)));// 中央に回転するバー(反時計回り) // _barrList.add(new BarricadeTriangle(240, 400, 200, new BConf(+PI / 180)));// 中央に回転する三角形(時計回り) // _barrList.add(new BarricadeStar(240, 400, 80, 220, new BConf(+PI / 180)));// 中央に回転する星(時計回り) _barrList.add(new BarricadeSquare(20, 20, 100, 100, new BConf(eType.GOAL)));// ゴール for (Barricade bar : _barrList) { _taskList.add(bar); //タスクリストに障害物を追加 } _player = new Player(); _taskList.add(_player); _taskList.add(new FpsController()); } private boolean Collision(){ Vec vec = new Vec(); final Circle cir = _player.getPt(); for(Barricade barr : _barrList){ Def.eHitCode code = barr.isHit(cir, vec); switch(code){ case OUT: _status = eStatus.GAMEOVER; return true; case GOAL: _status = eStatus.GAMECLEAR; return true; } } return false; } public boolean onUpdate() { if( _status != eStatus.NORMAL ){ return true; } if( Collision() ){ return true; } for (int i = 0; i < _taskList.size(); i++) { if (_taskList.get(i).onUpdate() == false) { // 更新失敗なら _taskList.remove(i); // そのタスクを消す i--; } } return true; } private void drawStatus(Canvas c){ switch( _status ){ case GAMEOVER: { Paint paint = new Paint(); paint.setTextSize(80); paint.setColor(Color.BLACK); c.drawText("GameOver", 40, 100, paint); } break; case GAMECLEAR: { Paint paint = new Paint(); paint.setTextSize(80); paint.setColor(Color.BLACK); c.drawText("GameClear", 40, 100, paint); } break; } } public void onDraw(Canvas c) { c.drawColor(Color.WHITE); // 白で塗りつぶす for (Task task : _taskList) { task.onDraw(c);// 描画 } drawStatus(c); } }
Portions of this page are modifications
based on work created and shared by Google and used according to terms
described in the Creative Commons 3.0 Attribution License.
- Remical Soft -