收藏 分销(赏)

Android连连看源代码.doc

上传人:人****来 文档编号:4316131 上传时间:2024-09-05 格式:DOC 页数:32 大小:181.23KB 下载积分:12 金币
下载 相关 举报
Android连连看源代码.doc_第1页
第1页 / 共32页
Android连连看源代码.doc_第2页
第2页 / 共32页


点击查看更多>>
资源描述
运行出来效果如下: MainActivity: package games.llk; import android.app.Activity; import android.os.Bundle; public class Main extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.main); setContentView(new GameView(this)); } } GameView: package games.llk; import java.util.Random; import android.content.Context; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Point; import android.graphics.Rect; import android.graphics.Bitmap.Config; import android.os.Handler; import android.view.MotionEvent; import android.view.View; public class GameView extends View { private int m_w; private int m_h; private int top_client; private int right_client; private int bottom_client; private int left_client; private Rect client_r; private Paint p_client_r; private boolean display_moreInfo; private boolean isInited; private Paint p; private Paint p_line; private Paint p_line_2; private Paint p_text; private Paint p_pross_b; private Paint p_pross; private int point_w; private int point_h; private Rect btn_r_1; private Rect btn_r_2; private Rect btn_r_close; private Bitmap bmp_btn; private Rect pross_r; private Rect pross_r_2; private Rect t_r; private Rect t_r_2; private boolean ispause=false; private boolean isstart=false; private String s_pause="暂停中。"; private Bitmap buff; private Bitmap bmp_point; private Bitmap bmp_hint; private Canvas buff_Canvas; private int flevel ; private int ffen =0; private int timecount=0; private int timecountper_l = 480; private boolean isdrawing=false ; private Random random=new Random(); private Resources res; private Point[] pointlist_tmp ; private int pointlist_tmp_count=0; private RefreshHandler mRedrawHandler = new RefreshHandler(); private Point mousept ; private Point lastpt ; private Point hintpt_1 ; private Point hintpt_2 ; private boolean isontimering=false; private boolean isonmousedown=false; private int ontimercount=0; class RefreshHandler extends Handler { @Override public void handleMessage(android.os.Message msg) { GameView.this.ontimer(); nexttimer(240); } public void nexttimer( long delayMillis) { this.removeMessages(0); sendMessageDelayed(obtainMessage(0), delayMillis); } }; private Pointlist fpointlist =new Pointlist(); class Pointlist { private int fxcount; private int fycount; private int [] l1; private int [] l2; private PointData [][] fpointreclist; class PointData { public int x; public int y; public boolean value; public Object data; public Rect rect; public int stat; public int imgidx; } private Point [] plist_1; private int plist_1_len; private Point [] plist_2; private int plist_2_len; private Point [] pathlist; public int pcount =0; public void init(int xcount, int ycount) { fxcount=xcount; fycount=ycount; fpointreclist=new PointData[fxcount+2][fycount+2]; for (int x_i = 0; x_i < fpointreclist.length; x_i++) { for (int y_i = 0; y_i < fpointreclist[x_i].length; y_i++) { fpointreclist[x_i][y_i]=new PointData(); fpointreclist[x_i][y_i].x=x_i; fpointreclist[x_i][y_i].y=y_i; fpointreclist[x_i][y_i].value=false; fpointreclist[x_i][y_i].data=null; fpointreclist[x_i][y_i].rect=new Rect(0,0,0,0); fpointreclist[x_i][y_i].stat=-1; fpointreclist[x_i][y_i].imgidx=-1; } } plist_1=new Point[(fxcount+fycount+2)*4]; for (int i = 0; i < plist_1.length; i++) { plist_1[i]=new Point(0,0); } plist_1_len=0; plist_2=new Point[(fxcount+fycount+2)*4]; for (int i = 0; i < plist_2.length; i++) { plist_2[i]=new Point(0,0); } plist_2_len=0; pathlist=new Point[2]; for (int i = 0; i < pathlist.length; i++) { pathlist[i]=new Point(0,0); } l1=new int[fxcount*2]; l2=new int[fxcount*2]; } public void setValue(int x,int y,Boolean value) { fpointreclist[x][y].value = value; } public boolean getValue(int x,int y) { return fpointreclist[x][y].value ; } public void setData(int x,int y,Object data) { fpointreclist[x][y].data = data; } public void setrect(int x,int y,Rect r) { fpointreclist[x][y].rect.left = r.left; fpointreclist[x][y].rect.top = r.top; fpointreclist[x][y].rect.right = r.right; fpointreclist[x][y].rect.bottom = r.bottom; } public Rect getrect(int x,int y) { return fpointreclist[x][y].rect; } public void setstat(int x,int y,int v) { fpointreclist[x][y].stat=v; } public int getstat(int x,int y) { return fpointreclist[x][y].stat; } public void setimgidx(int x,int y,int v) { fpointreclist[x][y].imgidx=v; } public int getimgidx(int x,int y) { return fpointreclist[x][y].imgidx; } public boolean checkpp(Point p1,Point p2) { boolean result=false; if ((p1.x == p2.x) && (p1.y == p2.y)) { return true; } if (p1.y == p2.y) { int x1 = p1.x < p2.x?p1.x:p2.x; int x2 = p1.x > p2.x?p1.x:p2.x; for (int i=x1+1 ;i<=x2-1;i++) { if (fpointreclist[i][p1.y].value ) { return false; } } result = true; } if (p1.x == p2.x) { int y1 = p1.y < p2.y?p1.y:p2.y; int y2 = p1.y > p2.y?p1.y:p2.y; for (int i=y1+1 ;i<=y2-1;i++) { if (fpointreclist[p1.x][i].value ) { return false; } } result = true; } return result; } public void mousetoxy(int x,int y ,Point pt) { for (int x_i = 1; x_i <= fxcount; x_i++) { for (int y_i = 1; y_i <= fycount; y_i++) { if (fpointreclist[x_i][y_i].rect.contains(x,y)){ pt.x=x_i; pt.y=y_i; return; } } } pt.x=-1; pt.y=-1; } public boolean isallok() { for (int x_i = 1; x_i <= fxcount; x_i++) { for (int y_i = 1; y_i <= fycount; y_i++) { if (fpointreclist[x_i][y_i].stat>=0){ return false; } } } return true; } public void changeplace(int v) { int idx=0; if ( (v == 2)|| (v == 6)) { for (int i = 1 ;i<=fxcount;i++ ) { idx = 0; for (int j = 1 ;j<= fycount ;j++) { if (getstat(i, j) >= 0 ) { idx=idx+1; l1[idx] = getimgidx(i, j); l2[idx] = getstat(i, j); } } for (int j = 1 ;j<=fycount;j++) { if (j > idx) { setimgidx(i, j, -1); setstat(i, j, -1); setValue(i, j, false); } else { setimgidx(i, j, l1[j]); setstat(i, j, l2[j]); setValue(i, j, true); } } } } if ( (v == 3)|| (v == 7)) { for (int i = 1 ;i<=fxcount;i++ ) { idx = fycount+1; for (int j = fycount ;j>=1 ;j--) { if (getstat(i, j) >= 0 ) { idx=idx-1; l1[idx] = getimgidx(i, j); l2[idx] = getstat(i, j); } } for (int j = fycount ;j>=1;j--) { if (j < idx) { setimgidx(i, j, -1); setstat(i, j, -1); setValue(i, j, false); } else { setimgidx(i, j, l1[j]); setstat(i, j, l2[j]); setValue(i, j, true); } } } } if( (v == 4)|| (v == 8)) { for (int j = 1 ;j<= fycount ;j++) { idx = 0; for (int i = 1 ;i<=fxcount;i++ ) { if (getstat(i, j) >= 0 ) { idx=idx+1; l1[idx] = getimgidx(i, j); l2[idx] = getstat(i, j); } } for (int i = 1 ;i<=fxcount;i++ ) { if (i > idx) { setimgidx(i, j, -1); setstat(i, j, -1); setValue(i, j, false); } else { setimgidx(i, j, l1[i]); setstat(i, j, l2[i]); setValue(i, j, true); } } } } if ( (v == 5)|| (v == 9)) { for (int j = 1 ;j<= fycount ;j++) { idx = fxcount+1; for (int i = fxcount ;i>=1;i-- ) { if (getstat(i, j) >= 0 ) { idx=idx-1; l1[idx] = getimgidx(i, j); l2[idx] = getstat(i, j); } } for (int i = fxcount ;i>=1;i-- ) { if (i < idx) { setimgidx(i, j, -1); setstat(i, j, -1); setValue(i, j, false); } else { setimgidx(i, j, l1[i]); setstat(i, j, l2[i]); setValue(i, j, true); } } } } } public void findstat(int v ,Point pt) { for (int x_i = 0; x_i < fpointreclist.length; x_i++) { for (int y_i = 0; y_i < fpointreclist[x_i].length; y_i++) { if (fpointreclist[x_i][y_i].stat==v){ pt.x=x_i; pt.y=y_i; return; } } } pt.x=-1; pt.y=-1; } public boolean getpath(int x1,int y1, int x2,int y2) { boolean result=false; pcount=0; if ((x1 == x2) && (y1 == y2)) { return false; } plist_1[0].x=x1; plist_1[0].y=y1; plist_1_len=1; plist_2[0].x=x2; plist_2[0].y=y2; plist_2_len=1; int x; int y; for (int i = y1 - 1;i>=0;i--) { x = x1; y = i; if (fpointreclist[x][y].value) { break; } else { plist_1[plist_1_len].x = x; plist_1[plist_1_len].y = y; plist_1_len=plist_1_len+1; } } for (int i = y1 + 1;i<=fycount + 1;i++) { x = x1; y = i; if( fpointreclist[x][y].value ) { break; } else { plist_1[plist_1_len].x = x; plist_1[plist_1_len].y = y; plist_1_len=plist_1_len+1; } } for (int i = x1 - 1;i>=0;i--) { x = i; y = y1; if (fpointreclist[x][y].value ) { break; } else { plist_1[plist_1_len].x = x; plist_1[plist_1_len].y = y; plist_1_len=plist_1_len+1; } } for (int i = x1 + 1 ;i<= fxcount + 1;i++) { x = i; y = y1; if ( fpointreclist[x][y].value) { break; } else { plist_1[plist_1_len].x = x; plist_1[plist_1_len].y = y; plist_1_len=plist_1_len+1; } } for (int i = y2 - 1;i>= 0;i-- ) { x = x2; y = i; if (fpointreclist[x][y].value ) { break; } else { plist_2[plist_2_len].x = x; plist_2[plist_2_len].y = y; plist_2_len=plist_2_len+1; } } for( int i = y2 + 1 ;i<= fycount + 1 ;i++) { x = x2; y = i; if (fpointreclist[x][y].value ) { break; } else { plist_2[plist_2_len].x = x; plist_2[plist_2_len].y = y; plist_2_len=plist_2_len+1; } } for (int i = x2 - 1 ;i>= 0 ;i--) { x = i; y = y2; if (fpointreclist[x][y].value ) { break; } else { plist_2[plist_2_len].x = x; plist_2[plist_2_len].y = y; plist_2_len=plist_2_len+1; } } for (int i = x2 + 1 ;i<= fxcount + 1;i++) { x = i; y = y2; if (fpointreclist[x][y].value) { break; } else { plist_2[plist_2_len].x = x; plist_2[plist_2_len].y = y; plist_2_len=plist_2_len+1; } } pcount = 0; for (int i = 0 ;i< plist_1_len;i++) { for (int j = 0 ;j< plist_2_len;j++) { if (checkpp(plist_1[i], plist_2[j])) { result = true; if (i > 0) { pathlist[pcount].x = plist_1[i].x; pathlist[pcount].y = plist_1[i].y; pcount=pcount+1; } if (j > 0) {
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服