もぐら叩き
ボタンのonClickが使えるならもぐら叩きを作れるんじゃ?ということで作ってみた。
とりあえず.javaだけ。layoutはTableLayout使ってスタートボタン1つ、結果表示TextView1つ、似非モグラボタン6つ作っただけ。
タイマが使えて、onClick使えて、ならいけるんじゃね?、と頭の中でまともに考えずにコードを書いた結果がこのありさまだよ!
public class MoguraTataki extends Activity implements OnClickListener{ // Views private Button button_start; private Button button_00; private Button button_01; private Button button_02; private Button button_10; private Button button_11; private Button button_12; private TextView point_text; // game values private Boolean game_start = false; private Integer point = 0; private Boolean mogura_status[]; // for Timer Timer timer = null; Handler handler; private Integer time; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.mogura); button_start = (Button) findViewById(R.id.mogura_Button_start); button_00 = (Button) findViewById(R.id.mogura_Button0_0); button_01 = (Button) findViewById(R.id.mogura_Button0_1); button_02 = (Button) findViewById(R.id.mogura_Button0_2); button_10 = (Button) findViewById(R.id.mogura_Button1_0); button_11 = (Button) findViewById(R.id.mogura_Button1_1); button_12 = (Button) findViewById(R.id.mogura_Button1_2); point_text = (TextView) findViewById(R.id.mogura_textView); mogura_status = new Boolean[6]; button_start.setOnClickListener(this); button_00.setOnClickListener(this); button_01.setOnClickListener(this); button_02.setOnClickListener(this); button_10.setOnClickListener(this); button_11.setOnClickListener(this); button_12.setOnClickListener(this); Init(); // for timer timer = new Timer(true); handler = new Handler(); timer.schedule( new TimerTask() { @Override public void run() { handler.post(new Runnable() { @Override public void run() { TimerEvent(); } }); } }, 100, 100); // first delay and delay interval, [ms] } private void TimerEvent(){ // init timer if( time == 0 && game_start == true ){ time = 100; } // in game start if( time != 0){ if( time % 10 == 0 ){// make mogura EnableMogura(); } else if( time % 10 == 5 ){// vanish mogura DisableMogura(); } time--; if(time==0) GameStop(); } } private void EnableMogura(){ Random rand = new Random(); int r = rand.nextInt(6); switch(r){ case 0: button_00.setText("○○○○○"); break; case 1: button_01.setText("○○○○○"); break; case 2: button_02.setText("○○○○○"); break; case 3: button_10.setText("○○○○○"); break; case 4: button_11.setText("○○○○○"); break; case 5: button_12.setText("○○○○○"); break; } mogura_status[r] = true; } private void DisableMogura(){ int r; for(r=0; r<6; r++){ if(mogura_status[r] == true) { DisableMogura(r); break; } } } private void DisableMogura(int r){ if(r < 0 && 5 < r) return; switch(r){ case 0: button_00.setText("×××××"); break; case 1: button_01.setText("×××××"); break; case 2: button_02.setText("×××××"); break; case 3: button_10.setText("×××××"); break; case 4: button_11.setText("×××××"); break; case 5: button_12.setText("×××××"); break; } mogura_status[r] = false; } public void onClick(View v){ if( game_start == false){ // now no game if(v == button_start){// start or reset game GameStart(); } } else{ if(v == button_start){ GameReset(); } else if (v == button_00){ if(mogura_status[0] == true){ PointUp(); DisableMogura(0); } } else if (v == button_01){ if(mogura_status[1] == true){ PointUp(); DisableMogura(1); } } else if (v == button_02){ if(mogura_status[2] == true){ PointUp(); DisableMogura(2); } } else if (v == button_10){ if(mogura_status[3] == true){ PointUp(); DisableMogura(3); } } else if (v == button_11){ if(mogura_status[4] == true){ PointUp(); DisableMogura(4); } } else if (v == button_12){ if(mogura_status[5] == true){ PointUp(); DisableMogura(5); } } } } private void Init(){ point = 0; game_start = false; time=0; button_start.setText("start"); point_text.setText("point:" + point); for(int i=0; i<6; i++){ DisableMogura(i); } } private void GameStart(){ Init(); game_start = true; button_start.setText("reset"); } private void GameReset(){ game_start = false; Init(); } private void GameStop(){ game_start = false; button_start.setText("start"); } private void PointUp(){ point++; point_text.setText("point:" + point); } }
自分で書いててイライラしてた。
どのボタンを押したかどうかの感知を決めうちで書いてたり、ボタンのsetTextも決めうちだったり……
あと書きながら使いそうなコードを追加していったので要らないコード残ってたり……
たぶんぐぐったらもっと綺麗なもぐら叩き作ってる人いるんだろうなあ。
明日はそれサガして反省会しよう。