(里面有六张绿豆蛙的图片)

1、选中会有红色框

2、可以直线连(横竖相邻或是横竖间隔空格)

3、可以拐一次弯连接

4、可以拐两次弯连接

5、连接时会有线显示

6、绿色代表进度条,蓝色代表时间条

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory; public class Getpic {
public static Bitmap createBitmap(Context context,int resId){
Bitmap map = BitmapFactory.decodeResource(context.getResources(),resId);
return map;
}
}
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.Window;
import android.view.WindowManager; public class MainActivity extends Activity { private Wall pic;
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);//全屏显示
super.onCreate(savedInstanceState);
int width =getWindowManager().getDefaultDisplay().getWidth();//获得屏幕宽度
int height = getWindowManager().getDefaultDisplay().getHeight();//获得屏幕高度
pic = new Wall(this,width,height);
setContentView(pic);
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} }
import java.util.Random;

import android.R.integer;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.text.format.Time;
import android.util.Log;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnTouchListener; public class Wall extends SurfaceView implements Callback,OnTouchListener{ private Context context;
private SurfaceHolder holder;
private int screenw;//传递屏幕宽度
private int screenh;//传递屏幕高度
private static int HH = 40;//获得pic的高度,设置为全局变量
private static int WW = 40;//获得pic的宽度,设置为全局变量
private static int Xroad = 0;//X轴的格数
private static int Yroad = 0;//Y轴的格数
private static int score = 0;//总分数
private static int[][] ranpoint;//坐标数组
private static int psy1 = 0;
private static int psy2 = 0;
private static int psy3 = 0;
private static int psy4 = 0;
private static int psy5 = 0;
private static int psy6 = 0;
private static int[] hoo=new int [6];
private static int mm=0;
private static int lastpointx = 0;//上一次点击的x坐标,初始化为0
private static int lastpointy = 0;//上一次点击的y坐标,初始化为0
private static int nowpointx = 0;//当前点击的x坐标,初始化为0
private static int nowpointy = 0;//当前点击的y坐标,初始化为0
private static long sleeptime = 10;
private static float inch = 0;//进度条的单位进度/减度
private static float bbc = 0;//时间条的单位进度/减度
private static long btime = 0;//时间条的初始时间
private static long ctime = 0;//进度条的当前时间
private static int [][] app = new int[2][2];
private static int [][] corner = new int[2][2];
public Wall(Context context,int screenwidth,int screenheight) {
super(context);
this.context = context;
this.screenh = screenheight;
this.screenw = screenwidth;
holder = this.getHolder();
holder.addCallback(this);
setOnTouchListener(this);
getset();//获取高、宽、进度单位等
setzero();//直接初始化二位数组ranpoint[][]为0
setcountzero();//直接初始化一维数组hoo[]为0
setpoint();//随即产生成双数的图案
checknum();//检查实际图案的分配
}
private void draw(){//绘制初始化
Canvas canvas = holder.lockCanvas();
drawline(canvas);//绘制网格线
// drawgrid(canvas);//绘制分割线
drawpic(canvas);//绘制图片
Log.i("state","nowpointx:"+nowpointx+"nowpointy:"+nowpointy);
drawtime(canvas);
drawsquare(canvas, nowpointx, nowpointy);
if(nearline(canvas)){//相邻图像一致判断
ranpoint[nowpointx][nowpointy]=0;
ranpoint[lastpointx][lastpointy]=0;
lastpointx = 0;
lastpointy = 0;
nowpointx = 0;
nowpointy = 0;
score++;
}else if(nearnotline(canvas)){//空格图像一致判断
ranpoint[nowpointx][nowpointy]=0;
ranpoint[lastpointx][lastpointy]=0;
lastpointx = 0;
lastpointy = 0;
nowpointx = 0;
nowpointy = 0;
score++;
}else if(besure()){//两次转角
drawtwocorner(canvas);//绘制两次转角线
ranpoint[nowpointx][nowpointy]=0;
ranpoint[lastpointx][lastpointy]=0;
lastpointx = 0;
lastpointy = 0;
nowpointx = 0;
nowpointy = 0;
score++;
}
drawgrid(canvas);//绘制分割线、文字、分数
// try {
// Thread.sleep(sleeptime);
// } catch (Exception e) {
// // TODO: handle exception
// }
// nearby(canvas);
// blanketjudge(canvas);
// drawsquare(canvas,3,4);
// Bitmap map1 = Getpic.createBitmap(context, R.drawable.pic1);
// canvas.drawBitmap(map1, 1*WW, 1*HH, null);
holder.unlockCanvasAndPost(canvas);
}
// public void drawonce(){
// Canvas canvas = holder.lockCanvas();
// drawline(canvas);//绘制网格线
//// drawgrid(canvas);//绘制分割线
// drawpic(canvas);//绘制图片
// holder.unlockCanvasAndPost(canvas);
// }
public void drawline(Canvas canvas){
super.onDraw(canvas);
Paint paint = new Paint();
paint.setColor(Color.GREEN);
canvas.drawColor(Color.WHITE);
for(int x=0;x<=Xroad-2;x++){//绘制纵轴线
canvas.drawLine(x*WW, 0, x*WW, (Yroad-2)*HH, paint);
}
for(int y=0;y<=Yroad-2;y++){//绘制横轴线
canvas.drawLine(0, y*HH, (Xroad-2)*WW, y*HH, paint);
}
}
public void getset(){//获得图片的高和宽
Bitmap standard = Getpic.createBitmap(context, R.drawable.pic1);
WW = standard.getWidth();
HH = standard.getHeight();
Log.i("Widthstandard", "标准pic宽度"+WW);
Log.i("Heightstandard", "标准pic高度"+HH);
Xroad = screenw/WW;
Yroad = screenh/HH;
Log.i("Width", "宽度格数"+(Xroad-2));
Log.i("Height", "高度格数"+(Yroad-2));
ranpoint = new int[Xroad-2][Yroad-2];
// inch = (Yroad-2)*HH/(((Xroad-2)*(Yroad-2))/2);
inch = HH*2/(Xroad-2);//化简后
btime = java.lang.System.currentTimeMillis();
bbc = (Yroad-2)*HH/600;
}
public void drawsquare(Canvas canvas,int x,int y){//绘制点击正方形
super.onDraw(canvas);
Paint paintline = new Paint();
paintline.setColor(Color.RED);
paintline.setTextSize(550);
if(x<Xroad-2&&y<Yroad-2){
canvas.drawLine(x*WW, y*HH, (x+1)*WW, y*HH, paintline);//上横线
canvas.drawLine(x*WW, (y+1)*HH, (x+1)*WW, (y+1)*HH, paintline);//下横线
canvas.drawLine(x*WW, y*HH, x*WW, (y+1)*HH, paintline);//左竖线
canvas.drawLine((x+1)*WW, y*HH, (x+1)*WW, (y+1)*HH, paintline);//右竖线
}
}
public void drawgrid(Canvas canvas){//绘制网格标识
super.onDraw(canvas);
Paint paintline = new Paint();
paintline.setColor(Color.GRAY);
paintline.setTextSize(80);
Paint paint = new Paint();
paint.setColor(Color.RED);
paint.setTextSize(30);
canvas.drawLine((Xroad-2)*WW, (Yroad-2)*HH, screenw, (Yroad-2)*HH, paintline);//剩余区间分块划线之横轴
canvas.drawLine((Xroad-2)*WW, (Yroad-2)*HH, (Xroad-2)*WW, screenh, paintline);//剩余区间分块划线之纵轴
canvas.drawText("网格", (Xroad-2)*WW,(Yroad-2)*HH+30, paint);//确定绘制网格标识位置
canvas.drawText("绿豆蛙版连连看", 0,(Yroad-2)*HH+30, paint);//确定绘制标题位置
canvas.drawText((Xroad-2)+"x"+(Yroad-2), (Xroad-2)*WW,(Yroad-2)*HH+70, paint);//确定绘制网格标识位置
canvas.drawText("最后得分:"+score, 0,(Yroad-2)*HH+70, paint);//确定绘制分数
}
public void drawtime(Canvas canvas){//绘制进度条和时间条
super.onDraw(canvas);
Paint paint = new Paint();
// paint.setStyle(Style.FILL);
paint.setStyle(Style.STROKE);
paint.setColor(Color.BLACK);
paint.setTextSize(100);
canvas.drawRect((Xroad-2)*WW, 0, (Xroad-1)*WW, (Yroad-2)*HH, paint);//绘制进度条外框
canvas.drawRect((Xroad-1)*WW+10, 0, screenw, (Yroad-2)*HH, paint);//绘制时间条外框
Paint paintin = new Paint();
paintin.setStyle(Style.FILL);
paintin.setColor(Color.GREEN);
canvas.drawRect((Xroad-2)*WW, score*inch, (Xroad-1)*WW, (Yroad-2)*HH, paintin);//绘制进度条外框
Paint paintti = new Paint();
paintti.setStyle(Style.FILL);
paintti.setColor(Color.BLUE);
ctime = java.lang.System.currentTimeMillis();
long abb = (ctime-btime)/1000;
canvas.drawRect((Xroad-1)*WW+10, (Yroad-2)*HH-abb*bbc, screenw, (Yroad-2)*HH, paintti);//绘制时间条外框
}
public void setzero(){//二位数组初始化为0
for(int i=0;i<ranpoint.length;i++){
for(int j=0;j<ranpoint[0].length;j++){
ranpoint[i][j]=0;
}
}
}
public void setcountzero(){//一维数组初始化为0
for(int i=0;i<hoo.length;i++){
hoo[i]=0;
}
}
public boolean nearline(Canvas canvas){//相邻的两个图案是一样的
super.onDraw(canvas);
Paint paint = new Paint();
paint.setColor(Color.BLACK);
paint.setTextSize(550);
//当前点击图片在上一次点击的上面/下面
if(ranpoint[nowpointx][nowpointy]==ranpoint[lastpointx][lastpointy]&&ranpoint[nowpointx][nowpointy]!=0&&lastpointx==nowpointx&&Math.abs(lastpointy-nowpointy)>=1){
// ranpoint[nowpointx][nowpointy]=0;
// ranpoint[lastpointx][lastpointy]=0;
if(judgezeroy(nowpointx, lastpointy, nowpointy)){
canvas.drawLine(lastpointx*WW+WW/2, lastpointy*HH+HH/2, nowpointx*WW+WW/2, nowpointy*HH+HH/2, paint);
return true;
}
}
//当前点击图片在上一次点击的左面/右面
if(ranpoint[nowpointx][nowpointy]==ranpoint[lastpointx][lastpointy]&&ranpoint[nowpointx][nowpointy]!=0&&lastpointy==nowpointy&&Math.abs(lastpointx-nowpointx)>=1){
// ranpoint[nowpointx][nowpointy]=0;
// ranpoint[lastpointx][lastpointy]=0;
if(judgezerox(lastpointx, nowpointx, nowpointy)){
canvas.drawLine(lastpointx*WW+WW/2, lastpointy*HH+HH/2, nowpointx*WW+WW/2, nowpointy*HH+HH/2, paint);
return true;
}
}
// try {
// Thread.sleep(sleeptime);
// } catch (Exception e) {
// // TODO: handle exception
// }
// ranpoint[nowpointx][nowpointy]=0;
// ranpoint[lastpointx][lastpointy]=0;
return false;
}
public boolean nearnotline(Canvas canvas){//中间至少隔一个空格是一样的两个空格
super.onDraw(canvas);
Paint paint = new Paint();
paint.setColor(Color.BLACK);
paint.setTextSize(550);
if (difpoint(lastpointx, nowpointx, lastpointy, nowpointy)) {
if(judgezerox(nowpointx, lastpointx,nowpointy)){
if(judgezeroy(lastpointx, nowpointy, lastpointy)&&ranpoint[lastpointx][nowpointy]==0&&ranpoint[nowpointx][nowpointy]==ranpoint[lastpointx][lastpointy]&&ranpoint[nowpointx][nowpointy]!=0){
canvas.drawLine(lastpointx*WW+WW/2, lastpointy*HH+HH/2, lastpointx*WW+WW/2, nowpointy*HH+HH/2, paint);
canvas.drawLine(lastpointx*WW+WW/2, nowpointy*HH+HH/2, nowpointx*WW+WW/2, nowpointy*HH+HH/2, paint);
// ranpoint[nowpointx][nowpointy]=0;
// ranpoint[lastpointx][lastpointy]=0;
return true;
}
}else if (judgezeroy(nowpointx, nowpointy, lastpointy)) {
if (judgezerox(nowpointx, lastpointx, lastpointy)&&ranpoint[nowpointx][lastpointy]==0&&ranpoint[nowpointx][nowpointy]==ranpoint[lastpointx][lastpointy]&&ranpoint[nowpointx][nowpointy]!=0) {
canvas.drawLine(lastpointx*WW+WW/2, lastpointy*HH+HH/2, nowpointx*WW+WW/2, lastpointy*HH+HH/2, paint);
canvas.drawLine(nowpointx*WW+WW/2, lastpointy*HH+HH/2, nowpointx*WW+WW/2, nowpointy*HH+HH/2, paint);
// ranpoint[nowpointx][nowpointy]=0;
// ranpoint[lastpointx][lastpointy]=0;
return true;
}
}
}
// try {
// Thread.sleep(sleeptime);
// } catch (Exception e) {
// // TODO: handle exception
// }
// ranpoint[nowpointx][nowpointy]=0;
// ranpoint[lastpointx][lastpointy]=0;
return false;
}
public boolean difpoint(int x1,int x2,int y1,int y2){
if(x1!=x2){
return true;
}else if (y1!=y2) {
return true;
}
return false;
}
public boolean judgezeroy(int x,int y1,int y2){//(x,y1)到(x,y2),竖直方向,中间有不为0的返回false,否者返回true
if(y1<y2){
for(int i=y1+1;i<y2;i++){
if(ranpoint[x][i]!=0){
Log.i("judgezeroy", "false");
return false;
}
}
}else if(y1>y2){
for(int i=y1-1;i>y2;i--){
if(ranpoint[x][i]!=0){
Log.i("judgezeroy", "false");
return false;
}
}
}
Log.i("judgezeroy", "true");
return true;
}
public boolean judgezerox(int x1,int x2,int y){//(x1,y)到(x2,y),横直方向,中间有不为0的返回false,否者返回true
if(x1<x2){
for(int i=x1+1;i<x2;i++){
if(ranpoint[i][y]!=0){
Log.i("judgezerox", "false");
return false;
}
}
}else if(x1>x2){
for(int i=x1-1;i>x2;i--){
if(ranpoint[i][y]!=0){
Log.i("judgezerox", "false");
return false;
}
}
}
Log.i("judgezerox", "true");
return true;
}
public int[][] selectpoint( int x1,int y1,int x2 ,int y2){//交换两个点的位置,左上右下原则
int amd[][] = new int [2][2];
if (x1<x2||y1<y2) {
amd[0][0]=x1;
amd[01][1]=y1;
amd[1][0]=x2;
amd[1][1]=y2;
}else if (x1>x2||y1>y2) {
amd[0][0]=x2;
amd[01][1]=y2;
amd[1][0]=x1;
amd[1][1]=y1;
}
return amd;
}
public boolean besure(){//判断两个乖点能否联通
// app = selectpoint(lastpointx, lastpointy, nowpointx, nowpointy);
// Log.i("交换两点位置", app[0][0]+" "+app[0][1]+" "+app[1][0]+" "+app[1][1]);
if (lastpointx==nowpointx&&lastpointy==nowpointy) {//两次的点位置一样则不记录
return false;
}
for (int i = 0; i < Xroad-2; i++) {//先判走断竖直方向
if (judgezeroy(i, lastpointy, nowpointy)) {//判断竖直方向有无通路
Log.i("竖直方向有无通路", "有");
if (judgezerox(i, lastpointx,lastpointy)&&judgezerox(i, nowpointx, nowpointy)&&ranpoint[lastpointx][lastpointy]==ranpoint[nowpointx][nowpointy]
&&ranpoint[i][lastpointy]==0&&ranpoint[i][nowpointy]==0) {//竖直前提下横向的通路
corner[0][0]=i;
corner[0][1]=lastpointy;
corner[1][0]=i;
corner[1][1]=nowpointy;
Log.i("竖直前提下横向的通路", "有");
return true;
}
}
}
for (int j = 0; j < Yroad-2; j++) {//先判断横直方向
if (judgezerox(lastpointx, nowpointx, j)) {//判断横直方向有无通路
Log.i("横直方向有无通路", "有");
if (judgezeroy(lastpointx, lastpointy, j)&&judgezeroy(nowpointx, nowpointy, j)&&ranpoint[lastpointx][lastpointy]==ranpoint[nowpointx][nowpointy]
&&ranpoint[lastpointx][j]==0&&ranpoint[nowpointx][j]==0) {//横向前提下的竖直通路
corner[0][0]=lastpointx;
corner[01][1]=j;
corner[1][0]=nowpointx;
corner[1][1]=j;
Log.i("横直前提下竖直方向有无通路", "有");
return true;
}
}
}
return false;
}
public void drawtwocorner(Canvas canvas){//绘制两个拐点的线路
super.onDraw(canvas);
Paint paint = new Paint();
paint.setColor(Color.BLACK);
paint.setTextSize(550);
// int [][] pop1 = new int[2][2];
// int [][] pop2 = new int[2][2];
// int [][] pop3 = new int[2][2];
// pop1 = selectpoint(lastpointx, lastpointy, corner[0][0], corner[0][1]);
// pop2 = selectpoint(corner[0][0], corner[0][1], corner[1][0], corner[1][1]);
// pop3 = selectpoint(corner[1][0], corner[1][1], nowpointx, nowpointy);
// if (pop1[0][1]==pop1[1][1]) {
// canvas.drawLine(p, startY, stopX, stopY, paint)
// }
canvas.drawLine(lastpointx*WW+WW/2, lastpointy*HH+HH/2, corner[0][0]*WW+WW/2, corner[0][1]*HH+HH/2, paint);
canvas.drawLine(corner[0][0]*WW+WW/2, corner[0][1]*HH+HH/2, corner[1][0]*WW+WW/2, corner[1][1]*HH+HH/2, paint);
canvas.drawLine(corner[1][0]*WW+WW/2, corner[1][1]*HH+HH/2, nowpointx*WW+WW/2,nowpointy*HH+HH/2, paint);
}
public void setpoint(){//分配坐标
Random ranpic = new Random();
// Random ranx = new Random();
// Random rany = new Random();
// int x1,x2,y1,y2;
// do{
// int pic = ranpic.nextInt(6)+1;
// do{
// x1 = ranx.nextInt(10);
// y1 = rany.nextInt(18);
// }while(ranpoint[x1][y1]!=0);
// do{
// x2 = ranx.nextInt(10);
// y2 = rany.nextInt(18);
// }while(ranpoint[x2][y2]!=0);
// ranpoint[x1][y1]=pic;
// ranpoint[x2][y2]=pic;
// }while(getright(ranpoint));
for(int i=0;i<ranpoint.length;i++){
for(int j=0;j<ranpoint[0].length;j++){
int pic = ranpic.nextInt(6)+1;
switch (pic) {
case 1:
psy1++;
break;
case 2:
psy2++;
break;
case 3:
psy3++;
break;
case 4:
psy4++;
break;
case 5:
psy5++;
break;
default:
psy6++;
break;
}
ranpoint[i][j]=pic;
}
}
Log.i("初始分配", "psy1:"+psy1+"psy2:"+psy2+"psy3:"+psy3+"psy4:"+psy4+"psy5:"+psy5+"psy6:"+psy6);
sethoo();
smallchange();
// Log.i("调理后分配", "psy1:"+psy1+"psy2:"+psy2+"psy3:"+psy3+"psy4:"+psy4+"psy5:"+psy5+"psy6:"+psy6);
// for(int i=0;i<ranpoint.length;i++){
// for(int j=ranpoint[0].length/2;j<ranpoint[0].length;j++){
// do{
// int pic = ranpic.nextInt(6)+1;
// switch (pic) {
// case 1:
// if (psy1>0) {
// ranpoint[i][j]=pic;
// psy1--;
// }
// break;
// case 2:
// if (psy2>0) {
// ranpoint[i][j]=pic;
// psy2--;
// }
// break;
// case 3:
// if (psy3>0) {
// ranpoint[i][j]=pic;
// psy3--;
// }
// break;
// case 4:
// if (psy4>0) {
// ranpoint[i][j]=pic;
// psy4--;
// }
// break;
// case 5:
// if (psy5>0) {
// ranpoint[i][j]=pic;
// psy5--;
// }
// break;
// default:
// if (psy6>0) {
// ranpoint[i][j]=pic;
// psy6--;
// }
// break;
// }
// }while(ranpoint[i][j]>0);
// }
// }
// Log.i("YYY", "psy1:"+psy1+"psy2:"+psy2+"psy3:"+psy3+"psy4:"+psy4+"psy5:"+psy5+"psy6:"+psy6);
}
public void sethoo(){//配置hoo[]数组
if(psy1%2==1){
hoo[mm]=1;
Log.i("hoo["+mm+"]有记录", ""+hoo[mm]);
mm++;
}
if(psy2%2==1){
hoo[mm]=2;
Log.i("hoo["+mm+"]有记录", ""+hoo[mm]);
mm++;
}
if(psy3%2==1){
hoo[mm]=3;
Log.i("hoo["+mm+"]有记录", ""+hoo[mm]);
mm++;
}
if(psy4%2==1){
hoo[mm]=4;
Log.i("hoo["+mm+"]有记录", ""+hoo[mm]);
mm++;
}
if(psy5%2==1){
hoo[mm]=5;
Log.i("hoo["+mm+"]有记录", ""+hoo[mm]);
mm++;
}
if(psy6%2==1){
hoo[mm]=6;
Log.i("hoo["+mm+"]有记录", ""+hoo[mm]);
mm++;
}
Log.i("hoo[]数组有数字的个数", ""+mm);
}
public void smallchange(){//调整数组,使得几个图案的个数成偶数个出现
for (int i = -1; i < mm;) {
// for (int i = -1; i < mm;i+=2) {//用这个会直接跳过有两队数据的时候跳出
// int llx,lly;
int num1=0,num2=0;
i++;
num1 = hoo[i];
num2 = hoo[++i];
for (int m = 0; m < ranpoint.length; m++) {
for (int n = 0; n < ranpoint[0].length; n++) {
if(ranpoint[m][n]==num2){
ranpoint[m][n]=num1;
m=ranpoint.length;//设置跳出外层循环
n=ranpoint[0].length;//设置跳出内层循环
}
}
}
// while (ranpoint[llx][lly]==num2) {//这个直接不起作用
// llx++;
// lly++;
// }
// ranpoint[llx][lly]=num1;
}
}
public void checknum(){
int pic1num=0;
int pic2num=0;
int pic3num=0;
int pic4num=0;
int pic5num=0;
int pic6num=0;
for (int i = 0; i < ranpoint.length; i++) {
for (int j = 0; j < ranpoint[0].length; j++) {
switch (ranpoint[i][j]) {
case 1:
pic1num++;
break;
case 2:
pic2num++;
break;
case 3:
pic3num++;
break;
case 4:
pic4num++;
break;
case 5:
pic5num++;
break;
default:
pic6num++;
break;
}
}
}
Log.i("检测图案个数:", "psy1:"+pic1num+""+"psy2:"+pic2num+"psy3:"+pic3num+"psy4:"+pic4num+"psy5:"+pic5num+"psy6:"+pic6num);
}
public void getchangepoint(){//交换坐标
lastpointx = nowpointx;
lastpointy = nowpointy;
if(ranpoint[lastpointx][lastpointy]==0){
lastpointx=0;
lastpointy=0;
}
}
public boolean getright(int a[][]){//判断二位数组是否所有元素都等于0,全部是0返回true,否者返回false
for(int i=0;i<a.length;i++){
for(int j=0;j<a[0].length;j++){
if(a[i][j]!=0){
Log.i("ooo", "含有非0元素");
return false;
}
}
}
Log.i("ooo", "全部为0元素");
return true;
}
public void drawpic(Canvas canvas){//绘制所有图片
super.onDraw(canvas);
for(int i=0;i<ranpoint.length;i++){
for(int j=0;j<ranpoint[0].length;j++){
switch (ranpoint[i][j]) {
case 0:
//为0就什么都不绘制
break;
case 1:
Bitmap map1 = Getpic.createBitmap(context, R.drawable.pic1);
canvas.drawBitmap(map1, i*WW, j*HH, null);
break;
case 2:
Bitmap map2 = Getpic.createBitmap(context, R.drawable.pic2);
canvas.drawBitmap(map2, i*WW, j*HH, null);
break;
case 3:
Bitmap map3 = Getpic.createBitmap(context, R.drawable.pic3);
canvas.drawBitmap(map3, i*WW, j*HH, null);
break;
case 4:
Bitmap map4 = Getpic.createBitmap(context, R.drawable.pic4);
canvas.drawBitmap(map4, i*WW, j*HH, null);
break;
case 5:
Bitmap map5 = Getpic.createBitmap(context, R.drawable.pic5);
canvas.drawBitmap(map5, i*WW, j*HH, null);
break;
default:
Bitmap map6 = Getpic.createBitmap(context, R.drawable.pic6);
canvas.drawBitmap(map6, i*WW, j*HH, null);
break;
}
// if(ranpoint[i][j]==1){
// Bitmap map1 = Getpic.createBitmap(context, R.drawable.pic1);
// canvas.drawBitmap(map1, i*WW, j*HH, null);
// }else if(ranpoint[i][j]==2){
// Bitmap map2 = Getpic.createBitmap(context, R.drawable.pic2);
// canvas.drawBitmap(map2, i*WW, j*HH, null);
// }else if(ranpoint[i][j]==3){
// Bitmap map3 = Getpic.createBitmap(context, R.drawable.pic3);
// canvas.drawBitmap(map3, i*WW, j*HH, null);
// }else if(ranpoint[i][j]==4){
// Bitmap map4 = Getpic.createBitmap(context, R.drawable.pic4);
// canvas.drawBitmap(map4, i*WW, j*HH, null);
// }else if(ranpoint[i][j]==5){
// Bitmap map5 = Getpic.createBitmap(context, R.drawable.pic5);
// canvas.drawBitmap(map5, i*WW, j*HH, null);
// }else if(ranpoint[i][j]==6){
// Bitmap map6 = Getpic.createBitmap(context, R.drawable.pic6);
// canvas.drawBitmap(map6, i*WW, j*HH, null);
// }
}
}
/* try {
Thread.sleep(sleeptime);
} catch (Exception e) {
// TODO: handle exception
}*/
}
@Override
public boolean onTouch(View v, MotionEvent event) {
getchangepoint();//将当前坐标值赋值给上一次的坐标值
// drawonce();
int x,y;
x = (int) (event.getX()/WW);
y = (int) (event.getY()/HH);
nowpointx=x;
nowpointy=y;
Log.i("FFF"," "+x+" "+y);
return false;
}
class drawThread implements Runnable{//创建线程
@Override
public void run() {
// while(getright(ranpoint)){
while(true){
draw();
}
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub }
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
// draw();
// drawonce();
new Thread(new drawThread()).start();
} @Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub } }

地址:http://download.csdn.net/detail/u011566000/5860991

Android 绿豆蛙版连连看(简陋版)的更多相关文章

  1. android贪吃蛇(超级简陋版)

    public class body { public int ax;//代表X周变量 public int ay;//代表Y轴变量 public int getAx() { return ax; } ...

  2. [转]Android 学习资料分享(2015 版)

    转 Android 学习资料分享(2015 版) 原文地址:http://www.jianshu.com/p/874ff12a4c01 目录[-] 我是如何自学Android,资料分享(2015 版) ...

  3. flask 第七章 简陋版智能玩具 +MongoDB初识和基本操作

    1.简陋版web智能玩具 FAQ.py文件 import os from aip import AipSpeech, AipNlp from uuid import uuid4 "" ...

  4. 【Android】家庭记账本手机版开发报告四

    一.说在前面 昨天 对界面显示和逻辑结构进行完善 今天 1.添加菜单(查询.清除所有等) 2.使用滑动删除 问题 1.在做查询时获取SearchView时引 入包错误经过长时间的尝试后才修正 2.滑动 ...

  5. Android编程权威指南第三版 第32章

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_35564145/article/de ...

  6. 本人第一个android游戏《新连连看》上架

    经过艰苦奋战了几天,本人的第一个android游戏<新连连看>最终完毕了第一个版本号,比較简陋.另一部分功能保留没有开放.等第二个版本号再上.用的libgdx框架.可能不是非常出名,可是本 ...

  7. 微软发布 Windows Server 2016 预览版第三版,开发者要重点关注Nano Server

    微软已经发布 Windows Server 2016 和 System Center 2016 第三个技术预览版,已经提供下载.Windows Server 2016 技术预览版第三版也是首个包括了容 ...

  8. 【BZOJ3036】绿豆蛙的归宿 概率与期望

    最水的概率期望,推荐算法合集之<浅析竞赛中一类数学期望问题的解决方法> #include <iostream> #include <cstdio> using na ...

  9. 使用VNET-to-VNET连接Microsoft Azure国际版和中国版

    Microsoft Azure的VNET-to-VNET功能可以实现跨虚拟网络的VPN连接,通过VNET-to-VNET互联的两个虚拟网络可以在同一个订阅下或者隶属不同的订阅,而且可以跨数据中心.这实 ...

随机推荐

  1. Qt5程序参数包含中文GBK编码的问题

    1.背景 Qt5程序(WeekReport.exe)的main函数里有如下代码: //only for test int main(int argc, char *argv[]) { QCoreApp ...

  2. 使用 greenDao 框架 操作数据库

    0.效果图

  3. apache svn subversion安装和配置(使用源码安装包方式)

    环境:虚拟机下centos7 1.下载安装包:http://subversion.apache.org/download.cgi 2.上传到指定文件夹并解压 3.安装依赖包 apr apr-utils ...

  4. eclipse开启断言

    断言在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制.一般来说,断言用于保证程序最基本.关键的正确性.断言检查通常在开发和测试时开启. 为了保证程序的执行效率,在软件发布后断言检查通常是 ...

  5. 亚马逊EC2 ubuntu下安装mysql远程无法连接问题o

    无法远程的原因有很多,我今天遇到的问题是通过navicat无法远程连接我在EC2上创建的实例. 1.通过命令" netstat -an|grep 3306 "检查一下3306端口对 ...

  6. [ASM C/C++] C makefile:2: *** missing separator. Stop. 问题

    在利用make编译代码时,makefile文件的目标代码前面要用tab而不能用空格来代替. 要不然就会提示: makefile:2: *** missing separator.  Stop. 要注意 ...

  7. epoll实现压测工具

    代码: /* * g++ -o stress_test ./stress_test.cpp */ #include <stdlib.h> #include <stdio.h> ...

  8. mac攻略(一) -- git使用

    1.首先在官网下载 https://git-scm.com/download/mac   2.然后安装git(mac自带git)   3设置Git的user name和email:   $ git c ...

  9. 我的android学习经历35

    这几天又把android的基础知识全部复习了一遍,没有第一次那么难,感觉简单了好多,也发现了许多细节问题,发现了自己在网络编程方面的不足. 下面列举一些小的细节问题: 1.String,StringB ...

  10. StudyFoxCMS-6

    1.phpstrom中安装emmet File=>Settings=>Plugins=>右侧搜索框搜索“emmet”=>点击下方中间按钮“Browse repositories ...