⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tileview.java

📁 主要是一个手机版的游戏
💻 JAVA
字号:
package com.google.andriod.tetris;

import android.content.Context;
import android.content.Resources;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.View;

import java.util.Map;

public class TileView extends View{
	
	protected static int mTileSize;
	protected static int mXTileCount;
	protected static int mYTileCount;
	
	private static int mXOffset;
	private static int mYOffset;
	
	private Bitmap mTileImage;
	
	private int[][] mTileGrid;
	
	private final Paint mPaint = new Paint();
	
	public TileView(Context context, AttributeSet attrs, Map inflateParams, 
			int defStyle){
		super(context, attrs, inflateParams, defStyle);
		
		Resources.StyledAttributes a = context.obtainStyledAttributes(attrs,
				R.styleable.TileView);
		mTileSize = a.getInt(R.styleable.TileView_tileSize, 16);
	}
	
	public TileView(Context context, AttributeSet attrs, Map inflateParams){
		super(context, attrs, inflateParams);
		
		Resources.StyledAttributes a = context.obtainStyledAttributes(attrs,
				R.styleable.TileView);
		
		mTileSize = a.getInt(R.styleable.TileView_tileSize,16);
	}
	
	@Override
	protected void onSizeChanged(int w, int h, int oldw, int oldh){
		mXTileCount = (int)Math.floor(w / mTileSize);
		mYTileCount = (int)Math.floor(h / mTileSize);
		
		mXOffset = ((w - (mTileSize * mXTileCount)) / 2);
		mYOffset = ((h - (mTileSize * mYTileCount)) / 2);
		
		mTileGrid = new int[mXTileCount][mYTileCount];
		clearTiles();
	}
	
	public void loadTile(Drawable tile){
		Bitmap bitmap = Bitmap.createBitmap(mTileSize, mTileSize, true);
		Canvas canvas = new Canvas(bitmap);
		tile.setBounds(0, 0, mTileSize, mTileSize);
		tile.draw(canvas);
		
		mTileImage = bitmap;
	}
	
	public void clearTiles(){
		for(int x = 0; x < mXTileCount; x++){
			for(int y=0; y < mYTileCount; y++){
				setTile(0, x, y);
			}
		}
	}
	
	public void setTile(int tileindex, int x, int y){
		mTileGrid[x][y] = tileindex;
	}
	
	public int checkTile(int x, int y){
		if(x>=0 && x<mXTileCount && y>=0 && y<mYTileCount)
			return  mTileGrid[x][y];
		else
			return -1;
	}

	public int destroyRow(){
		int full=1;
		int lines = 0;
		for(int j=0; j<mYTileCount; j++){
			for(int i=0; i<mXTileCount; i++){
				if(0==mTileGrid[i][j]){
					full=0;
					break;
				}
			}
			if(1==full){
				lines++;
				mTileGrid[0][j] = -1;
			}
			full = 1;
		}
		
		for(int j= mYTileCount-1; j>0; j--){
			if(-1==mTileGrid[0][j]){
				for(int k=j; k>0; k--){
					for(int i=0; i<mXTileCount-1; i++){
						mTileGrid[i][k] = mTileGrid[i][k-1];
					}
				}
				j++;
			}
		}
		return lines;
	}
		
	@Override
	public void onDraw(Canvas canvas){
		super.onDraw(canvas);
		for(int x = 0; x < mXTileCount; x++){
			for(int y=0; y < mYTileCount; y++){
				if(mTileGrid[x][y] > 0){
					canvas.drawBitmap(mTileImage, 
							mXOffset + x * mTileSize, 
							mYOffset + y * mTileSize, 
							mPaint);
				}
			}
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -