package edu.minggo.chat.ui; import com.baidu.mobstat.StatService; import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.graphics.Color; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Handler; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.view.animation.Animation; import android.view.animation.Animation.AnimationListener; import android.view.animation.AnimationUtils; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import edu.minggo.chat.R; /** * * @author minggo * @date 2013-5-14上午11:43:21 */ public class GameStoneScissorsClothActivity extends Activity { private ImageView chockAiv; private ImageView chockBiv; private Button redbt; private Button yellowbt; private Button bluebt; private Button backbt; private TextView timetv; private Drawable[] leftiv; private Drawable[] rightiv; // private String time; private Handler handler; private Animation animation1; private Animation animation2; private boolean startFlag; private boolean runningFlage; @SuppressWarnings("unused") private boolean timeFlage; //随机产生手头剪刀�? private int leftRadom; private int rightRandom; //记录两次时间 private long timeRecod; private long animEnd; private long onclickEnd; //选择哪一边正�? private int selectRight; private boolean clickable; //游戏预备秒数 private int i; //正确的次�? private int count; private final int GAME_ROUND = 5; @Override protected void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_NO_TITLE); // this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, // WindowManager.LayoutParams.FLAG_FULLSCREEN); super.onCreate(savedInstanceState); setContentView(R.layout.game_stone_scissors_cloth); chockAiv = (ImageView) findViewById(R.id.game_guest_a_iv); chockBiv = (ImageView) findViewById(R.id.game_gesture_b_iv); redbt = (Button)findViewById(R.id.game_left_bt); yellowbt = (Button)findViewById(R.id.game_mid_bt); bluebt = (Button)findViewById(R.id.game_right_bt); backbt = (Button)findViewById(R.id.game_bt_left); timetv = (TextView)findViewById(R.id.time); redbt.setOnClickListener(new MyOnclickListener()); backbt.setOnClickListener(new MyOnclickListener()); yellowbt.setOnClickListener(new MyOnclickListener()); bluebt.setOnClickListener(new MyOnclickListener()); leftiv = new Drawable[3]; rightiv = new Drawable[3]; //顺序 --> 剪刀、石头�?布(�? leftiv[0] = this.getResources().getDrawable(R.drawable.a09_hand010); leftiv[1] = this.getResources().getDrawable(R.drawable.a09_hand020); leftiv[2] = this.getResources().getDrawable(R.drawable.a09_hand030); //顺序 --> 剪刀、石头�?布(�? rightiv[0] = this.getResources().getDrawable(R.drawable.a09_hand01); rightiv[1] = this.getResources().getDrawable(R.drawable.a09_hand02); rightiv[2] = this.getResources().getDrawable(R.drawable.a09_hand03); handler = new Handler(); runningFlage = false; startFlag = false; timeFlage = false; clickable = false; readyGo(); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.game_menu, menu); return true; } /** * ready game */ public void readyGo(){ i = 0; startFlag = true; final Handler handler1 = new Handler(); handler1.post(new Runnable() { @Override public void run() { if (i<4) { if (i==0) { timetv.setText("Ready..."); timetv.setTextColor(Color.RED); }else if (i==1) { timetv.setText("3"); }else if (i==2) { timetv.setText("2"); }else if (i==3) { timetv.setText("1"); } i++; handler1.postDelayed(this, 1000); }else{ startFlag = false; timeFlage = true; runningFlage = true; handler1.removeCallbacks(this); startGame(); } } }); } /** *��ʼ��Ϸ */ public void startGame(){ leftRadom = (int) (Math.random()*3); rightRandom = (int) (Math.random()*3); chockAiv.setAnimation(animation1); chockBiv.setAnimation(animation2); animation1 = AnimationUtils.loadAnimation(GameStoneScissorsClothActivity.this, R.anim.left_shock); animation1.setAnimationListener(new MyAnimationListener()); animation2 = AnimationUtils.loadAnimation(GameStoneScissorsClothActivity.this, R.anim.right_shock); handler.post(new Runnable() { @Override public void run() { if (count<GAME_ROUND) { if (!startFlag) { time = (System.currentTimeMillis() + "").substring(9) + "ms"; timetv.setTextColor(Color.WHITE); timetv.setText(time); } if (runningFlage) { runningFlage = false; chockAiv.startAnimation(animation1); chockBiv.startAnimation(animation2); } handler.post(this); }else{ handler.removeCallbacks(this); AlertDialog.Builder builder = new Builder(GameStoneScissorsClothActivity.this); builder.setMessage("时间"+timeRecod+"ms"); builder.setTitle("得分结果"); builder.create().show(); } } }); } /** * 判断按对与否 */ public void charge(int index){ onclickEnd = System.currentTimeMillis(); timeRecod = timeRecod+(onclickEnd - animEnd); if (leftRadom-rightRandom==-1||leftRadom-rightRandom==2) {//右边�? selectRight = 1; }else if (leftRadom-rightRandom==1||leftRadom-rightRandom==-2) {//左边�? selectRight = 0; }else if (leftRadom-rightRandom==0) { selectRight = 2; } if(selectRight==index){ count++; }else{ Toast.makeText(GameStoneScissorsClothActivity.this, "按错了,再来!", Toast.LENGTH_SHORT).show(); } timetv.setText("0000ms"); clickable = false; leftRadom = (int) (Math.random()*3); rightRandom = (int) (Math.random()*3); runningFlage = true; } /** * * @author minggo * @date 2013-5-14下午02:55:12 */ public class MyAnimationListener implements AnimationListener{ @Override public void onAnimationStart(Animation animation) { chockAiv.setImageDrawable(leftiv[1]); chockBiv.setImageDrawable(rightiv[1]); } @Override public void onAnimationEnd(Animation animation) { animEnd = System.currentTimeMillis(); chockAiv.setImageDrawable(leftiv[leftRadom]); chockBiv.setImageDrawable(rightiv[rightRandom]); clickable = true; } @Override public void onAnimationRepeat(Animation animation) { } } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.game_finish: finish(); break; default: timeRecod = 0; animEnd = 0; onclickEnd = 0;; selectRight = 0; i = 0; count = 0; runningFlage = false; startFlag = false; timeFlage = false; clickable = false; readyGo(); break; } return super.onOptionsItemSelected(item); } /** * 按钮监听 * @author minggo * @date 2013-5-14上午11:45:51 */ public class MyOnclickListener implements OnClickListener{ @Override public void onClick(View v) { if (v.equals(redbt)&&clickable) { charge(0); }else if (v.equals(yellowbt)&&clickable) { charge(2); }else if (v.equals(bluebt)&&clickable) { charge(1); }else if (v.equals(backbt)) { finish(); } } } @Override protected void onPause() { super.onPause(); StatService.onPause(this); } @Override protected void onResume() { super.onResume(); StatService.onResume(this); } }