亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? tetrisview.java

?? 主要是一個(gè)手機(jī)版的游戲
?? JAVA
字號(hào):
package com.google.andriod.tetris;

import java.util.ArrayList;
import java.util.Map;
import java.util.Random;

import android.content.Context;
import android.content.Resources;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.TextView;

public class TetrisView extends TileView {
	
	private static final String TAG = "TetrisView";
	private int mMode = READY;
	public static final int PAUSE = 0;
	public static final int READY = 1;
	public static final int RUNNING = 2;
	public static final int LOSE = 3;
	
	private static final int STAR = 1;
	
	private static final int AUTODOWN =0;
	private static final int GOLEFT =1;
	private static final int GORIGHT=2;
	private static final int ROTATE =3;
	private static final int FALLEN =4;
	
	private int mControl =AUTODOWN;
	private int mlevel = 1;
	private long mScore = 0;
	private long mMoveDelay = 300;
	
    private long mLastMove;
    
	private TextView mStatusText;
	private TextView mInfoText;
	
	private static final Random RNG = new Random();
	
	private Shape mShape = null;
	
	private RefreshHandler mRedrawHandler =  new RefreshHandler();
	
	class RefreshHandler extends Handler{
        @Override
        public void handleMessage(Message msg) {
            TetrisView.this.update();
            TetrisView.this.invalidate();
        }
        
        public void sleep(long delayMillis) {
        	this.removeMessages(0);
            sendMessageDelayed(obtainMessage(0), delayMillis);
        }
	};
	
	public TetrisView(Context context, AttributeSet attrs, Map inflateParams, 
			int defStyle){
		super(context, attrs, inflateParams, defStyle);
		initTetrisView();
	}
	
	public TetrisView(Context context, AttributeSet attrs, Map inflateParams){
		super(context, attrs, inflateParams);
		initTetrisView();
	}
	
	private void initTetrisView(){
		setFocusable(true);
		Resources r = this.getContext().getResources();
		loadTile(r.getDrawable(R.drawable.star));
	}
	
	private void initNewGame(){
		mShape = new Shape(mXTileCount/2-1,1,RNG.nextInt(6));
		updateInfo();
	}
	
    public Bundle saveState(){
        Bundle map = new Bundle();
        map.putLong("mScore", Long.valueOf(mScore));
        map.putInteger("mLevel", Integer.valueOf(mlevel));
        return map;
    }

    public void restoreState(Bundle icicle){
    	setMode(PAUSE);
    	mScore = icicle.getLong("mScore");
    	mlevel = icicle.getInteger("mLevel");
    }
    
    public boolean onKeyDown(int keyCode, KeyEvent msg) {
    	if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
            if (mMode == READY | mMode == LOSE) {
                initNewGame();
                setMode(RUNNING);
                clearTiles();
                invalidate();
                update();
                return (true);
            }
            if (mMode == PAUSE) {
            	if(mShape == null){
            		initNewGame();
            		clearTiles();
            		invalidate();
            	}
                setMode(RUNNING);
                update();
                return (true);
            }
    	}
        if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) {
        	if(mMode == RUNNING){
        		mControl = GOLEFT;
        	}
            return (true);
        }
        if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) {
        	if(mMode == RUNNING){
        		mControl = GORIGHT;
        	}
            return (true);
        }
        if(keyCode == KeyEvent.KEYCODE_DPAD_UP){
        	if(mMode == RUNNING){
        		mControl = ROTATE;
        	}
            return (true);
        }
        if(keyCode == KeyEvent.KEYCODE_DPAD_DOWN){
        	if(mMode == RUNNING){
        		mControl = FALLEN;
        	}
            return (true);
        }
        return super.onKeyDown(keyCode, msg);
    }
    
    public void setTextView(TextView newView){
    	mStatusText = newView;
    }
    
    public void setInfoTextView(TextView newView){
    	mInfoText = newView;
    }
    
    public void setMode(int newMode){
    	int oldMode = mMode;
    	mMode = newMode;
        if (newMode == RUNNING & oldMode != RUNNING) {
            mStatusText.setVisibility(View.INVISIBLE);
            return;
        }

        Resources res = getContext().getResources();
        CharSequence str = "";
        if (newMode == PAUSE) {
            str = res.getText(R.string.mode_pause);
        }
        if (newMode == READY) {
            str = res.getText(R.string.mode_ready);
        }
        if (newMode == LOSE) {
            str = res.getString(R.string.mode_lose_prefix) + mScore
                  + res.getString(R.string.mode_lose_suffix);
        }

        mStatusText.setText(str);
        mStatusText.setVisibility(View.VISIBLE);
    }
        
    public void update(){
    	if(mMode == RUNNING){
            long now = System.currentTimeMillis();
            if (now - mLastMove > mMoveDelay) {
            	updateShape();
        		updateInfo();
            }
    	}
    	if(mScore > 5000){
    		mMoveDelay = 100;
    		mlevel = 2;
    	}
    	else if(mScore > 2000){
    		mMoveDelay = 200;
    		mlevel = 3;
    	}
        mRedrawHandler.sleep(mMoveDelay);
    }

    private boolean tryRotate(Shape shape){
    	int temp;
    	Shape tempShape= new Shape(shape);
    	tempShape.Rotate();
    	//check for mask
    	for(int i=0;i<4;i++){
    		if(checkTile(tempShape.vertex[i].x, tempShape.vertex[i].y)>0)
    			return false;
    	}
    	//check for left boundary
		temp = tempShape.vertex[0].x;
		for(int i=1; i<4; i++){
			if(tempShape.vertex[i].x<temp)
				temp = tempShape.vertex[i].x;
		}
		if(temp<0)
			return false;
    	//check for right boundary
		temp = tempShape.vertex[0].x;
		for(int i=1; i<4; i++){
			if(tempShape.vertex[i].x>temp)
				temp = tempShape.vertex[i].x;
		}
		if(temp>mXTileCount-1)
			return false;		
		//check for bottom boundary
		temp = tempShape.vertex[0].y;
		for(int i=1; i<4; i++){
			if(tempShape.vertex[i].y>temp)
				temp = tempShape.vertex[i].y;
		}
		if(temp>mYTileCount-1)
			return false;
		
		return true;
    }
    
	private boolean tryDown(Shape shape){
		int temp;
    	Shape tempShape= new Shape(shape);
    	tempShape.MoveDown();
    	//check for mask
    	for(int i=0;i<4;i++){
    		if(checkTile(tempShape.vertex[i].x, tempShape.vertex[i].y)>0)
    			return false;
    	}
    	//check for bottom boundary
		temp = tempShape.vertex[0].y;
		for(int i=1; i<4; i++){
			if(tempShape.vertex[i].y>temp)
				temp = tempShape.vertex[i].y;
		}
		if(temp>mYTileCount-1)
			return false;

		return true;
	}
	
	private boolean tryLeft(Shape shape){
		int temp;
    	Shape tempShape= new Shape(shape);
    	tempShape.MoveLeft();
    	//check for mask
    	for(int i=0;i<4;i++){
    		if(checkTile(tempShape.vertex[i].x, tempShape.vertex[i].y)>0)
    			return false;
    	}
    	//check for left boundary
		temp = tempShape.vertex[0].x;
		for(int i=1; i<4; i++){
			if(tempShape.vertex[i].x<temp)
				temp = tempShape.vertex[i].x;
		}
		if(temp<0)
			return false;

		return true;
	}
    
	private boolean tryRight(Shape shape){
		int temp;
    	Shape tempShape= new Shape(shape);
    	tempShape.MoveRight();
    	//check for mask
    	for(int i=0;i<4;i++){
    		if(checkTile(tempShape.vertex[i].x, tempShape.vertex[i].y)>0)
    			return false;
    	}
    	//check for left boundary
		temp = tempShape.vertex[0].x;
		for(int i=1; i<4; i++){
			if(tempShape.vertex[i].x>temp)
				temp = tempShape.vertex[i].x;
		}
		if(temp>mXTileCount-1)
			return false;

		return true;
	}
	
    private void clearShape(){
		for(int i=0;i<4;i++){
			setTile(0, mShape.vertex[i].x, mShape.vertex[i].y);
		}
    }
	
    private void drawShape(){
		for(int i=0;i<4;i++){
			setTile(STAR, mShape.vertex[i].x, mShape.vertex[i].y);
		}
    }
    
    private void updateInfo(){
    	String str="score:";
    	str = str + mScore;
    	str = str + "     level:";
    	str = str + mlevel;
    	mInfoText.setText(str);
        mInfoText.setVisibility(View.VISIBLE);
    } 
    
    private void updateShape(){
    	clearShape();
    	switch(mControl){
    	case GOLEFT:
    		if(tryLeft(mShape)){
        		mShape.MoveLeft();    			
    		}
    		mControl = AUTODOWN;
    		break;
    	case GORIGHT:
    		if(tryRight(mShape)){
    			mShape.MoveRight();	
    		}
			mControl = AUTODOWN;
    		break;	
    	case ROTATE:
    		if(tryRotate(mShape)){
    			mShape.Rotate();
    		}
   			mControl = AUTODOWN;
    		break;
    	case FALLEN:
    		while(tryDown(mShape)){
    			mShape.MoveDown();
    		}
    		drawShape();
			mScore  += caculScore(destroyRow());
			mShape = new Shape(mXTileCount/2-1,1,RNG.nextInt(7));
			if(checkLose()){
				setMode(LOSE);
			}
			mControl = AUTODOWN;
			break;
    	default:
    		if(tryDown(mShape)){
        		mShape.MoveDown();
    		}else{
    			drawShape();
    			mScore  += caculScore(destroyRow());
    			mShape = new Shape(mXTileCount/2-1,1,RNG.nextInt(7));
    			if(checkLose()){
    				setMode(LOSE);
    			}
    			mControl = AUTODOWN;
    		}
    		break;
    	}
		drawShape();
    }
  
    private boolean checkLose(){
    	for(int i=0; i<4; i++){
    		if(checkTile(mShape.vertex[i].x, mShape.vertex[i].y)>0)
    			return true;
    	}
    	return false;
    }
    
    private long caculScore(int lines){
    	long s = (long)Math.pow(2, lines-1);
    	return s * 100;
    }
    
} 

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
福利电影一区二区| 欧美丝袜第三区| 日韩欧美不卡在线观看视频| 亚洲在线视频网站| 欧美日韩中文一区| 亚洲国产精品一区二区尤物区| 在线免费观看不卡av| 亚洲一区中文日韩| 欧美精品在线视频| 蜜桃免费网站一区二区三区| 精品久久久久久最新网址| 激情欧美一区二区| 欧美经典三级视频一区二区三区| 成人免费看片app下载| 国产精品欧美一区二区三区| 91亚洲国产成人精品一区二三| 亚洲精品国产精华液| 欧美综合天天夜夜久久| 香蕉久久夜色精品国产使用方法| 欧美一级理论片| 国产盗摄女厕一区二区三区| 中文字幕在线观看一区| 欧美调教femdomvk| 久久99精品视频| 国产精品久久毛片| 欧洲视频一区二区| 免费在线看成人av| 欧美激情综合五月色丁香小说| 丁香婷婷综合激情五月色| 亚洲视频精选在线| 欧美精品第1页| 成人在线一区二区三区| 亚洲免费观看高清在线观看| 3d动漫精品啪啪| 成人在线视频一区二区| 亚洲mv大片欧洲mv大片精品| 久久精品一级爱片| 欧美日韩国产不卡| 成人黄色av电影| 日本伊人色综合网| 一区在线中文字幕| 26uuu亚洲婷婷狠狠天堂| 91免费视频大全| 久久91精品国产91久久小草| 亚洲精品视频一区| 久久久久青草大香线综合精品| 色吊一区二区三区| 国产sm精品调教视频网站| 亚洲大片一区二区三区| 国产精品久久夜| 亚洲精品一区二区三区香蕉| 在线亚洲精品福利网址导航| 国产精品一区二区久久不卡 | 日韩精品91亚洲二区在线观看| 国产欧美一区二区三区鸳鸯浴 | 欧美四级电影在线观看| 国产呦萝稀缺另类资源| 亚洲二区视频在线| 综合激情成人伊人| 欧美国产乱子伦| 国产日本亚洲高清| 欧美日韩美女一区二区| 一本色道久久综合亚洲91| 国产一区二区导航在线播放| 蜜桃av噜噜一区二区三区小说| 一区二区三区美女视频| 国产精品久久777777| 国产日韩欧美综合在线| 精品国产露脸精彩对白| 日韩欧美美女一区二区三区| 欧美午夜一区二区| 色综合久久中文字幕| 成人亚洲精品久久久久软件| 国内欧美视频一区二区| 久久精品国产77777蜜臀| 奇米影视一区二区三区小说| 亚洲国产美女搞黄色| 亚洲在线观看免费| 一区二区三区四区不卡在线| 亚洲精品中文在线| 亚洲精品免费在线观看| 亚洲精品免费播放| 亚洲免费成人av| 亚洲精品欧美激情| 亚洲一区二区三区中文字幕在线| 亚洲色图欧美在线| 亚洲精品老司机| 一区二区三区四区激情| 亚洲午夜av在线| 秋霞午夜av一区二区三区| 蜜桃视频在线观看一区二区| 久久精品国产久精国产| 国模大尺度一区二区三区| 国产在线视频精品一区| 国产精品自拍网站| 成人午夜视频网站| 99麻豆久久久国产精品免费| 99久久久久免费精品国产| 色综合色狠狠天天综合色| 日本高清免费不卡视频| 精品视频免费在线| 日韩欧美国产综合| 国产偷v国产偷v亚洲高清 | 中文字幕一区视频| 亚洲乱码中文字幕综合| 亚洲成人精品影院| 久久精品99国产精品日本| 国产精品99久久久久久久女警| 成人的网站免费观看| 欧美在线观看视频一区二区| 欧美精品 国产精品| 久久久久久99精品| 亚洲色图制服诱惑 | 福利一区在线观看| 色先锋资源久久综合| 欧美一区二区私人影院日本| 国产肉丝袜一区二区| 亚洲成a人在线观看| 午夜av一区二区| 高清不卡在线观看| 欧美日本高清视频在线观看| 久久精品欧美一区二区三区麻豆| 亚洲视频免费观看| 久久国产精品99精品国产| 成人97人人超碰人人99| 666欧美在线视频| 国产欧美一区视频| 日韩高清不卡一区二区| 国产91丝袜在线观看| 欧美精品一二三区| 中文字幕亚洲成人| 久久精品72免费观看| 91美女在线观看| 欧美大胆一级视频| 亚洲免费av在线| 国产成人高清在线| 欧美一区二区在线观看| 亚洲精品大片www| 极品销魂美女一区二区三区| 欧美在线影院一区二区| 国产欧美日韩麻豆91| 蜜桃精品视频在线| 欧美日韩中字一区| 国产精品福利影院| 国产专区欧美精品| 欧美一卡在线观看| 亚洲一区精品在线| 99精品偷自拍| 中文字幕乱码亚洲精品一区| 九九在线精品视频| 欧美高清性hdvideosex| 亚洲伦理在线免费看| 国产凹凸在线观看一区二区| 日韩午夜在线影院| 午夜电影一区二区| 欧美性受xxxx黑人xyx性爽| 综合中文字幕亚洲| 成人av中文字幕| 国产精品私人影院| 国产精品一级在线| 久久久久久久久蜜桃| 麻豆成人久久精品二区三区红| 欧美视频一区二区三区| 一区二区三区在线免费视频| 91原创在线视频| 亚洲天堂精品在线观看| 99热99精品| 综合色天天鬼久久鬼色| 97se亚洲国产综合在线| 国产精品私人影院| 成人av电影在线观看| 国产精品麻豆99久久久久久| 成人黄色网址在线观看| 中文字幕中文字幕在线一区| 99久久99久久精品免费看蜜桃| 国产精品看片你懂得| 91在线观看下载| 亚洲欧美一区二区三区极速播放 | 国产精品国产自产拍高清av| 国产超碰在线一区| 国产精品每日更新在线播放网址| 成人av在线观| 伊人性伊人情综合网| 在线观看国产一区二区| 午夜精品123| 日韩欧美国产三级| 国产成人亚洲精品青草天美| 亚洲国产精品成人综合| av不卡在线播放| 一区二区三区在线免费播放| 欧美日韩高清在线| 久久99国产精品久久99果冻传媒| 久久久久国产精品麻豆ai换脸| 成人精品一区二区三区中文字幕| 亚洲欧美aⅴ...| 这里是久久伊人| 国产伦理精品不卡| 亚洲美女视频在线观看| 91精品国产91久久久久久最新毛片| 国产一区二区在线免费观看|