Android连连看源代码.docx
- 文档编号:11337213
- 上传时间:2023-02-27
- 格式:DOCX
- 页数:51
- 大小:167.28KB
Android连连看源代码.docx
《Android连连看源代码.docx》由会员分享,可在线阅读,更多相关《Android连连看源代码.docx(51页珍藏版)》请在冰豆网上搜索。
Android连连看源代码
运行出来效果如下:
MainActivity:
packagegames.llk;
importandroid.app.Activity;
importandroid.os.Bundle;
publicclassMainextendsActivity{
/**Calledwhentheactivityisfirstcreated.*/
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
//setContentView(R.layout.main);
setContentView(newGameView(this));
}
}
GameView:
packagegames.llk;
importjava.util.Random;
importandroid.content.Context;
importandroid.content.res.Resources;
importandroid.graphics.Bitmap;
importandroid.graphics.BitmapFactory;
importandroid.graphics.Canvas;
importandroid.graphics.Paint;
importandroid.graphics.Point;
importandroid.graphics.Rect;
importandroid.graphics.Bitmap.Config;
importandroid.os.Handler;
importandroid.view.MotionEvent;
importandroid.view.View;
publicclassGameViewextendsView{
privateintm_w;
privateintm_h;
privateinttop_client;
privateintright_client;
privateintbottom_client;
privateintleft_client;
privateRectclient_r;
privatePaintp_client_r;
privatebooleandisplay_moreInfo;
privatebooleanisInited;
privatePaintp;
privatePaintp_line;
privatePaintp_line_2;
privatePaintp_text;
privatePaintp_pross_b;
privatePaintp_pross;
privateintpoint_w;
privateintpoint_h;
privateRectbtn_r_1;
privateRectbtn_r_2;
privateRectbtn_r_close;
privateBitmapbmp_btn;
privateRectpross_r;
privateRectpross_r_2;
privateRectt_r;
privateRectt_r_2;
privatebooleanispause=false;
privatebooleanisstart=false;
privateStrings_pause="暂停中。
";
privateBitmapbuff;
privateBitmapbmp_point;
privateBitmapbmp_hint;
privateCanvasbuff_Canvas;
privateintflevel;
privateintffen=0;
privateinttimecount=0;
privateinttimecountper_l=480;
privatebooleanisdrawing=false;
privateRandomrandom=newRandom();
privateResourcesres;
privatePoint[]pointlist_tmp;
privateintpointlist_tmp_count=0;
privateRefreshHandlermRedrawHandler=newRefreshHandler();
privatePointmousept;
privatePointlastpt;
privatePointhintpt_1;
privatePointhintpt_2;
privatebooleanisontimering=false;
privatebooleanisonmousedown=false;
privateintontimercount=0;
classRefreshHandlerextendsHandler
{
@Override
publicvoidhandleMessage(android.os.Messagemsg)
{
GameView.this.ontimer();
nexttimer(240);
}
publicvoidnexttimer(longdelayMillis)
{
this.removeMessages(0);
sendMessageDelayed(obtainMessage(0),delayMillis);
}
};
privatePointlistfpointlist=newPointlist();
classPointlist
{
privateintfxcount;
privateintfycount;
privateint[]l1;
privateint[]l2;
privatePointData[][]fpointreclist;
classPointData
{
publicintx;
publicinty;
publicbooleanvalue;
publicObjectdata;
publicRectrect;
publicintstat;
publicintimgidx;
}
privatePoint[]plist_1;
privateintplist_1_len;
privatePoint[]plist_2;
privateintplist_2_len;
privatePoint[]pathlist;
publicintpcount=0;
publicvoidinit(intxcount,intycount)
{
fxcount=xcount;
fycount=ycount;
fpointreclist=newPointData[fxcount+2][fycount+2];
for(intx_i=0;x_i { for(inty_i=0;y_i { fpointreclist[x_i][y_i]=newPointData(); 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=newRect(0,0,0,0); fpointreclist[x_i][y_i].stat=-1; fpointreclist[x_i][y_i].imgidx=-1; } } plist_1=newPoint[(fxcount+fycount+2)*4]; for(inti=0;i { plist_1[i]=newPoint(0,0); } plist_1_len=0; plist_2=newPoint[(fxcount+fycount+2)*4]; for(inti=0;i { plist_2[i]=newPoint(0,0); } plist_2_len=0; pathlist=newPoint[2]; for(inti=0;i { pathlist[i]=newPoint(0,0); } l1=newint[fxcount*2]; l2=newint[fxcount*2]; } publicvoidsetValue(intx,inty,Booleanvalue) { fpointreclist[x][y].value=value; } publicbooleangetValue(intx,inty) { returnfpointreclist[x][y].value; } publicvoidsetData(intx,inty,Objectdata) { fpointreclist[x][y].data=data; } publicvoidsetrect(intx,inty,Rectr) { 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; } publicRectgetrect(intx,inty) { returnfpointreclist[x][y].rect; } publicvoidsetstat(intx,inty,intv) { fpointreclist[x][y].stat=v; } publicintgetstat(intx,inty) { returnfpointreclist[x][y].stat; } publicvoidsetimgidx(intx,inty,intv) { fpointreclist[x][y].imgidx=v; } publicintgetimgidx(intx,inty) { returnfpointreclist[x][y].imgidx; } publicbooleancheckpp(Pointp1,Pointp2) { booleanresult=false; if((p1.x==p2.x)&&(p1.y==p2.y)) { returntrue; } if(p1.y==p2.y) { intx1=p1.x p1.x: p2.x; intx2=p1.x>p2.x? p1.x: p2.x; for(inti=x1+1;i<=x2-1;i++) { if(fpointreclist[i][p1.y].value) { returnfalse; } } result=true; } if(p1.x==p2.x) { inty1=p1.y p1.y: p2.y; inty2=p1.y>p2.y? p1.y: p2.y; for(inti=y1+1;i<=y2-1;i++) { if(fpointreclist[p1.x][i].value) { returnfalse; } } result=true; } returnresult; } publicvoidmousetoxy(intx,inty,Pointpt) { for(intx_i=1;x_i<=fxcount;x_i++) { for(inty_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; } publicbooleanisallok() { for(intx_i=1;x_i<=fxcount;x_i++) { for(inty_i=1;y_i<=fycount;y_i++) { if(fpointreclist[x_i][y_i].stat>=0){ returnfalse; } } } returntrue; } publicvoidchangeplace(intv) { intidx=0; if((v==2)||(v==6)) { for(inti=1;i<=fxcount;i++) { idx=0; for(intj=1;j<=fycount;j++) { if(getstat(i,j)>=0) { idx=idx+1; l1[idx]=getimgidx(i,j); l2[idx]=getstat(i,j); } } for(intj=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(inti=1;i<=fxcount;i++) { idx=fycount+1; for(intj=fycount;j>=1;j--) { if(getstat(i,j)>=0) { idx=idx-1; l1[idx]=getimgidx(i,j); l2[idx]=getstat(i,j); } } for(intj=fycount;j>=1;j--) { if(j { 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(intj=1;j<=fycount;j++) { idx=0; for(inti=1;i<=fxcount;i++) { if(getstat(i,j)>=0) { idx=idx+1; l1[idx]=getimgidx(i,j); l2[idx]=getstat(i,j); } } for(inti=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(intj=1;j<=fycount;j++) { idx=fxcount+1; for(inti=fxcount;i>=1;i--) { if(getstat(i,j)>=0) { idx=idx-1; l1[idx]=getimgidx(i,j); l2[idx]=getstat(i,j); } } for(inti=fxcount;i>=1;i--) { if(i { 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); } } } } } publicvoidfindstat(intv,Pointpt) { for(intx_i=0;x_i { for(inty_i=0;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; } publicbooleangetpath(intx1,inty1,intx2,inty2) { booleanresult=false; pcount=0; if((x1==x2)&&(y1==y2)) { returnfalse; } 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; intx; inty; for(inti=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(inti=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(inti=x1-1;i>=0;i--) { x=i; y
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 连连 源代码
![提示](https://static.bdocx.com/images/bang_tan.gif)