猜歌游戏 总结二

来源:互联网 发布:vue.js event.target 编辑:程序博客网 时间:2024/05/29 07:02

MianActivity

/** * 游戏实现逻辑: * 1.点击中间播放按钮,唱片动画开始,并播放歌曲 * 2.点击下面文字选择区域→待选框内显示点击的字→flag++ * →点击待选框内的字→flag--→当flag的大小等于歌曲长度,判断是否答题正确 * 1)正确跳转页面 2)不正确待选框闪烁 * * */public class MainActivity extends Activity implements View.OnClickListener {    public final static String TAG = "MainActivity";    private Animation mPanAnim;//唱片旋转动画    private Animation mBarInAnim;//拨杆进入动画    private Animation mBarOutAnim;//拨杆出去动画    private ImageView mViewPan;    // 唱片控件    private ImageView mViewPanBar;    // 拨杆控件    private ImageButton mBtnPlayStart;    //开始游戏按钮    private GridView mGridView;//文字选择区域的GridView    private GridViewAdapter mAdapter;//GridView适配器    private List<WordButton> mAllWords;//文字框内的文字集合    //四个选择框    private TextView tvText01;    private TextView tvText02;    private TextView tvText03;    private TextView tvText04;    //这个数组用于存放选择过的按钮信息    private int[] indexArray = new int[4];    private int flag = 0;//用来记录选择的长度    public static Song mSong;//当前关的歌曲    private MyPlayer mPlayer;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initVariable();//初始化变量        initListener();//初始化监听事件        /**         * 注册监听事件         * 字选择区域点击事件         * 自定义的一个监听事件         * */        mAdapter.buttonListener(new IWordButtonClickListener() {            @Override            public void onWordButtonClick(WordButton pButton) {                textEvent(pButton);            }        });    }    /**     * 初始化监听事件     */    private void initListener() {        mBtnPlayStart.setOnClickListener(this);        tvText01.setOnClickListener(this);        tvText02.setOnClickListener(this);        tvText03.setOnClickListener(this);        tvText04.setOnClickListener(this);    }    /**     * 初始化变量     */    private void initVariable() {        // 初始化控件        mViewPan = (ImageView) findViewById(R.id.imageView1);//唱片        mViewPanBar = (ImageView) findViewById(R.id.imageView2);//拨杆        mBtnPlayStart = (ImageButton) findViewById(R.id.btn_play_start);//开始按钮        //初始化4个选择框        tvText01 = (TextView) findViewById(R.id.text_01);        tvText02 = (TextView) findViewById(R.id.text_02);        tvText03 = (TextView) findViewById(R.id.text_03);        tvText04 = (TextView) findViewById(R.id.text_04);        // 初始化动画        mPanAnim = AnimationUtils.loadAnimation(this, R.anim.rotate);//唱片旋转动画        mBarInAnim = AnimationUtils.loadAnimation(this, R.anim.rotate_45);//拨杆进入动画        mBarInAnim.setFillAfter(true);//设置动画停留在结束位置        mBarOutAnim = AnimationUtils.loadAnimation(this, R.anim.rotate_d_45);//拨杆出去动画        mBarOutAnim.setFillAfter(true);        //初始化GridView中的数据        mGridView = (GridView) findViewById(R.id.gridView);//文字选择区域的GridView        mAllWords = new ArrayList<>();//初始化List        mAdapter = new GridViewAdapter(mAllWords, this);        mGridView.setAdapter(mAdapter);        if (mSong == null) {            mSong = SongsData.getSongData(1);//设置关卡 只要改变这个就好了        }        mAllWords.addAll(createText(mSong.getName()));        //初始化数组        for (int i = 0; i < 4; i++) {            indexArray[i] = i;        }        //初始化选择区域        if (mSong.getNameLength() == 3) {            tvText04.setVisibility(View.GONE);        }        if (mSong.getNameLength() == 2) {            tvText04.setVisibility(View.GONE);            tvText03.setVisibility(View.GONE);        }    }    /**     * 设置开始按钮的点击事件     * 点击逻辑:     * 每次进入都先判断1→2→3→5     * 1.判断第一个Text是否为空     * 为空设置它的值     * 2.若不为空,设置第二个Text     */    private void textEvent(WordButton pButton) {        if (tvText01.getText().toString().trim().equals("")) {            textEvent01(0, pButton, tvText01);        } else if (tvText02.getText().toString().trim().equals("")) {            textEvent01(1, pButton, tvText02);        } else if (tvText03.getText().toString().trim().equals("") && tvText03.getVisibility() != View.GONE) {            textEvent01(2, pButton, tvText03);        } else if (tvText04.getText().toString().trim().equals("") && tvText04.getVisibility() != View.GONE) {            textEvent01(3, pButton, tvText04);        }        if (flag == mSong.getNameLength()) {            isFinish();        }    }    public void textEvent01(int i, WordButton pButton, TextView mTextView) {        flag++;        indexArray[i] = pButton.mIndex;        mTextView.setText(pButton.mWordString);        mAllWords.get(pButton.mIndex).mIsVisiable = false;        mAdapter.notifyDataSetChanged();    }    /**     * 点击开始游戏(播放)按钮后     * 1.开始按钮消失 →2.拨杆拨进→3.唱片旋转→3.拨杆播出→4.开始按钮显示,并让音乐停止播放     */    private void startButtonEvent() {        mBtnPlayStart.setVisibility(View.INVISIBLE);//按钮消失        mViewPanBar.startAnimation(mBarInAnim);//拨杆进入        startMusic();//播放音乐        //监听拨杆进入动画结束,唱片动画开始        mBarInAnim.setAnimationListener(new Animation.AnimationListener() {            @Override            public void onAnimationStart(Animation animation) {            }            @Override            public void onAnimationEnd(Animation animation) {                mViewPan.startAnimation(mPanAnim);            }            @Override            public void onAnimationRepeat(Animation animation) {            }        });        //唱片旋转结束时拨杆出来        mPanAnim.setAnimationListener(new Animation.AnimationListener() {            @Override            public void onAnimationStart(Animation animation) {            }            @Override            public void onAnimationEnd(Animation animation) {                if (mPlayer.getPlayer().isPlaying()) {                    mPlayer.getPlayer().stop();//停止                    mPlayer.getPlayer().release();//释放                }                mViewPanBar.startAnimation(mBarOutAnim);//拨杆出去                mBtnPlayStart.setVisibility(View.VISIBLE);//显示按钮            }            @Override            public void onAnimationRepeat(Animation animation) {            }        });    }    /**     * 点击事件     */    @Override    public void onClick(View view) {        switch (view.getId()) {            case R.id.btn_play_start://开始按钮                startButtonEvent();                break;            case R.id.text_01:                setMyText(tvText01, 0);                break;            case R.id.text_02:                setMyText(tvText02, 1);                break;            case R.id.text_03:                setMyText(tvText03, 2);                break;            case R.id.text_04:                setMyText(tvText04, 3);                break;        }    }    /**     * 点击选择框的逻辑     * 1.当前点击的TextView 2.TextView里面的字对应的Index     */    private void setMyText(TextView mTextView, int k) {        //判断当前点击的选择框是否为空,不为空返回到候选区域        if (!mTextView.getText().toString().trim().equals("")) {            flag--;            mAllWords.get(indexArray[k]).mIsVisiable = true;            mAdapter.notifyDataSetChanged();//通知更新            mTextView.setText("");        }    }    /**     * 播放音乐     */    private void startMusic() {        mPlayer = new MyPlayer();        mPlayer.playSong(this, mSong.getSongId());    }    private void isFinish() {        //获得"四个"TextView的数据        String result = tvText01.getText().toString().trim() + tvText02.getText().toString().trim()                + tvText03.getText().toString().trim() + tvText04.getText().toString().trim();        if (result.equals(mSong.getName())) {            startRightEvent();//执行答对时的逻辑        } else {            //文字进行闪烁            //设置透明度动画            AlphaAnimation alphaAnimation = new AlphaAnimation(0.1f, 1.0f);//从0.1→1.0            alphaAnimation.setDuration(100);//动画时间            alphaAnimation.setRepeatCount(5);//重复次数            alphaAnimation.setRepeatMode(Animation.REVERSE); //倒序重复REVERSE  正序重复RESTART            tvText01.startAnimation(alphaAnimation);            tvText02.startAnimation(alphaAnimation);            tvText03.startAnimation(alphaAnimation);            tvText04.startAnimation(alphaAnimation);        }    }    private void startRightEvent() {        Intent mIntent;        if (mSong.getLevel() < 6) {            mIntent = new Intent(MainActivity.this, RightActivity.class);            mIntent.putExtra("Level", mSong.getLevel());//把当前歌曲的等级传给正确页面            startActivity(mIntent);        } else {            //打开全部完成的页面            mIntent = new Intent(MainActivity.this, QuitActivity.class);            startActivity(mIntent);        }        finish();    }    @Override    public void onPause() {        //mPlayer.getPlayer().release();//若出现意外,则停止所有歌曲        mViewPan.clearAnimation();        super.onPause();    }    public  List<WordButton> createText(String songName){        //添加除歌词外的字        List<WordButton> mList = new ArrayList<>();        char[] stringArr = songName.toCharArray();        for (int i = 0; i < stringArr.length; i++) {            WordButton zz = new WordButton();            zz.mWordString = stringArr[i] + "";            mList.add(zz);        }        for (int i = 0; mList.size() < 24; i++) {            String a = MyUtils.getRandomChar() + "";            WordButton zy = new WordButton();            zy.mWordString = a;            mList.add(zy);        }        //打乱候选字        for (int i = 0; i < 300; i++) {            int a = (int) (20 * Math.random());//产生一个随机数            //让随机数和他后面的第四个数交换数据            String k = mList.get(a).mWordString;            mList.get(a).mWordString = mList.get(a + 4).mWordString;            mList.get(a + 4).mWordString = k;        }        return mList;    }}

0 0
原创粉丝点击