Android海贼王连连看源代码.docx
- 文档编号:10278562
- 上传时间:2023-02-09
- 格式:DOCX
- 页数:26
- 大小:317.83KB
Android海贼王连连看源代码.docx
《Android海贼王连连看源代码.docx》由会员分享,可在线阅读,更多相关《Android海贼王连连看源代码.docx(26页珍藏版)》请在冰豆网上搜索。
Android海贼王连连看源代码
Android海贼王连连看游戏源代码
一个海贼王连连看的安卓游戏源码
项目组织结构如图所示:
layout布局文件
main.xml
xmlversion="1.0"encoding="utf-8"?
>
android:
orientation="vertical"android:
layout_width="fill_parent"
android:
layout_height="fill_parent">
android:
layout_width="fill_parent"android:
layout_height="wrap_content">
id="@+id/pb"android: layout_width="fill_parent" android: layout_height="wrap_content"style="? android: attr/progressBarStyleHorizontal" android: layout_weight="9"/> layout_height="wrap_content"android: layout_width="wrap_content" android: text="@string/remain_time"android: layout_weight="1"/> layout_height="wrap_content"android: layout_width="wrap_content" android: id="@+id/show_remainTime"android: layout_weight="1"/> android: layout_width="fill_parent"android: layout_height="fill_parent"/> values文件夹 color.xml xmlversion="1.0"encoding="utf-8"? > strings.xml xmlversion="1.0"encoding="utf-8"? > 图片放在了drawable文件夹下 AndroidManifest.xml xmlversion="1.0"encoding="utf-8"? > android: versionCode="1" android: versionName="1.0"> icon="@drawable/icon"android: label="@string/app_name"> name=".OnePieceGame" android: label="@string/app_name"> minSdkVersion="3"/> Class文件(Java文件) CtrlView.java publicclassCtrlViewextendsGameView{ publicfinalintGAMETIME=300; publicfinalintUPTIME=1; publicintPROCESS_VALUE=300; publicstaticbooleanCURRENT_CH=false; publicintCURRENT_TYPE=0; privatePointC_POINT; privatePointP_POINT; LinkedList publicCtrlView(Contextcontext,AttributeSetattrs){ super(context,attrs); initType(); initGrid(); much=(row-2)*(col-2); } publicCtrlView(Contextcontext,AttributeSetattrs,intdefStyle){ super(context,attrs,defStyle); initType(); initGrid(); much=(row-2)*(col-2); } publicbooleanonTouchEvent(MotionEventevent){ if(event.getAction()! =MotionEvent.ACTION_DOWN) returnsuper.onTouchEvent(event); intselX=(int)(event.getX()/width); intselY=(int)(event.getY()/height); if(grid[selX][selY]==0) returntrue; else{ if(CURRENT_CH==false){ select(selX,selY); CURRENT_CH=true; P_POINT=newPoint(selX,selY); }else{ C_POINT=newPoint(selX,selY); lineType=0; if(checkLink(P_POINT,C_POINT)){ isLine=true; much=much-2; if(0 &&(PROCESS_VALUE+UPTIME) PROCESS_VALUE=PROCESS_VALUE+UPTIME; } invalidate(); mRedrawHandler.sleep(300); } CURRENT_CH=false; } } returntrue; } publicvoidreset(){ CURRENT_CH=false; CURRENT_TYPE=0; C_POINT=null; P_POINT=null; lineType=0; isLine=false; Point[]p=null; initType(); initGrid(); much=(row-2)*(col-2); invalidate(); } publicvoidrearrange(){ CURRENT_CH=false; CURRENT_TYPE=0; C_POINT=null; P_POINT=null; lineType=0; isLine=false; Point[]p=null; List for(inti=0;i for(intj=0;j if(grid[i][j]! =0){ temp.add(grid[i][j]); } } } type.clear(); Randomad=newRandom(); for(inti=0;i type.add(temp.get(i)); } temp.clear(); temp=null; for(inti=0;i for(intj=0;j if(grid[i][j]! =0){ intindex=ad.nextInt(type.size()); grid[i][j]=type.get(index); type.remove(index); } } } invalidate(); } privateRefreshHandlermRedrawHandler=newRefreshHandler(); classRefreshHandlerextendsHandler{ @Override publicvoidhandleMessage(Messagemsg){ isLine=false; grid[P_POINT.x][P_POINT.y]=0; grid[C_POINT.x][C_POINT.y]=0; } publicvoidsleep(longdelayMillis){ this.removeMessages(0);//移除信息队列中最顶部的信息(从顶部取出信息) sendMessageDelayed(obtainMessage(0),delayMillis);//获得顶部信息并延时发送 } }; publicclassPoint{ publicintx; publicinty; publicPoint(intnewx,intnewy){ this.x=newx; this.y=newy; } publicbooleanequals(Pointp){ if(p.x==x&&p.y==y) returntrue; else returnfalse; } } privatebooleanhorizon(Pointa,Pointb){ if(a.x==b.x&&a.y==b.y) returnfalse; intx_start=a.y<=b.y? a.y: b.y; intx_end=a.y<=b.y? b.y: a.y; for(intx=x_start+1;x if(grid[a.x][x]! =0){ returnfalse; } p=newPoint[]{a,b}; lineType=H_LINE; returntrue; } privatebooleanvertical(Pointa,Pointb){ if(a.x==b.x&&a.y==b.y) returnfalse; inty_start=a.x<=b.x? a.x: b.x; inty_end=a.x<=b.x? b.x: a.x; for(inty=y_start+1;y if(grid[y][a.y]! =0) returnfalse; p=newPoint[]{a,b}; lineType=V_LINE; returntrue; } privatebooleanoneCorner(Pointa,Pointb){ Pointc=newPoint(a.x,b.y); Pointd=newPoint(b.x,a.y); if(grid[c.x][c.y]==0){ booleanmethod1=horizon(a,c)&&vertical(b,c); p=newPoint[]{a,newPoint(c.x,c.y),b}; lineType=ONE_C_LINE; returnmethod1; } if(grid[d.x][d.y]==0){ booleanmethod2=vertical(a,d)&&horizon(b,d); p=newPoint[]{a,newPoint(d.x,d.y),b}; lineType=ONE_C_LINE; returnmethod2; }else{ returnfalse; } } classLine{ publicPointa; publicPointb; publicintdirect; publicLine(){ } publicLine(intdirect,Pointa,Pointb){ this.direct=direct; this.a=a; this.b=b; } } privateLinkedList li=newLinkedList for(inty=a.y;y>=0;y--) if(grid[a.x][y]==0&&grid[b.x][y]==0 &&vertical(newPoint(a.x,y),newPoint(b.x,y))) li.add(newLine(0,newPoint(a.x,y),newPoint(b.x,y))); for(inty=a.y;y if(grid[a.x][y]==0&&grid[b.x][y]==0 &&vertical(newPoint(a.x,y),newPoint(b.x,y))) li.add(newLine(0,newPoint(a.x,y),newPoint(b.x,y))); for(intx=a.x;x>=0;x--) if(grid[x][a.y]==0&&grid[x][b.y]==0 &&horizon(newPoint(x,a.y),newPoint(x,b.y))) li.add(newLine(1,newPoint(x,a.y),newPoint(x,b.y))); for(intx=a.x;x if(grid[x][a.y]==0&&grid[x][b.y]==0 &&horizon(newPoint(x,a.y),newPoint(x,b.y))) li.add(newLine(1,newPoint(x,a.y),newPoint(x,b.y))); returnli; } privatebooleantwoCorner(Pointa,Pointb){ li=scan(a,b); if(li.isEmpty()) returnfalse; for(intindex=0;index Lineline=(Line)li.get(index); if(line.direct==1){ if(vertical(a,line.a)&&vertical(b,line.b)){ p=newPoint[]{a,line.a,line.b,b}; lineType=TWO_C_LINE; returntrue; } }elseif(horizon(a,line.a)&&horizon(b,line.b)){ p=newPoint[]{a,line.a,line.b,b}; lineType=TWO_C_LINE; returntrue; } } returnfalse; } publicbooleancheckLink(Pointa,Pointb){ if(grid[a.x][a.y]! =grid[b.x][b.y])//如果图案不同,直接为false returnfalse; if(a.x==b.x&&horizon(a,b)) returntrue; if(a.y==b.y&&vertical(a,b)) returntrue; if(oneCorner(a,b)) returntrue; else returntwoCorner(a,b); } } GameView.java //画出网格,并对应的画上分布好的图像 publicclassGameViewextendsView{ publicfinalintrow=10; publicfinalintcol=10; publicfloatwidth; publicfloatheight; privateintselY; privateintselX; publicbooleanisLine=false; publicintgrid[][]=newint[row][col]; privateRectselRect=newRect(); publicintlineType=0; publicfinalintV_LINE=1; publicfinalintH_LINE=1; publicfinalintONE_C_LINE=2; publicfinalintTWO_C_LINE=3; publicintmuch=0; Point[]p; publicBitmap[]image; publicList publicGameView(Contextcontext,AttributeSetattrs){ super(context,attrs); this.setFocusable(true); this.setFocusableInTouchMode(true); } publicGameView(Contextcontext,AttributeSetattrs,intdefStyle){ super(context,attrs,defStyle); this.setFocusable(true); this.setFocusableInTouchMode(true); } publicvoidreset(){ } publicvoidfillImage(Contextcontext){ intlth=imageType.length; image=newBitmap[lth]; for(inti=0;i Bitmapbitmap=Bitmap.createBitmap((int)width,(int)height, Drawabledrw; Canvascan
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 海贼 连连 源代码