




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、長(zhǎng)春大學(xué)課程設(shè)計(jì)紙共11頁(yè)第 #頁(yè)共11頁(yè)第 頁(yè)基于Android系統(tǒng)的連連看1、引言1.1、編寫(xiě)目的本文檔用于說(shuō)明手機(jī)連連看游戲開(kāi)發(fā)的詳細(xì)過(guò)程,使了解軟件的內(nèi)部結(jié)構(gòu),從而對(duì)連連看有更深入的了解,便于后期的維護(hù)和更改工作。1.2、背景說(shuō)明待開(kāi)發(fā)軟件系統(tǒng)的名稱(chēng):基于Android系統(tǒng)的連連看游戲設(shè)計(jì)本項(xiàng)目提出者:長(zhǎng)春大學(xué)軟件學(xué)院開(kāi)發(fā)者:劉博群用戶:暫無(wú)項(xiàng)目開(kāi)發(fā)環(huán)境:eclipse、Android系統(tǒng)平臺(tái)1.3、定義Android連連看詳細(xì)設(shè)計(jì)1.4、參加資料Android開(kāi)發(fā)指南2、程序系統(tǒng)的結(jié)構(gòu)連連看游戲結(jié)構(gòu)如下:連連看菜單設(shè)計(jì)界面設(shè)計(jì)算法設(shè)計(jì)消息響應(yīng)設(shè)計(jì)!訂線繪圖響應(yīng)主要有四大類(lèi):Class
2、GameView/游戲視類(lèi),處理游戲中的情況,包括界面生成,算法,一部分消息響應(yīng)ClassGameActivity/用于處理游戲中的消息提示ClassStartActivity/用于菜單的設(shè)計(jì)ClassSetActivity/用于菜單中游戲難度的設(shè)定3、菜單設(shè)計(jì)說(shuō)明3.1、程序描述主要功能:用于為玩家提供操作提示,便于玩家了解游戲的規(guī)則可擴(kuò)展性:能夠適應(yīng)應(yīng)用要求的變化和修改,遇有靈活的可擴(kuò)展性3.2、功能長(zhǎng)春大學(xué)課程設(shè)計(jì)紙共11頁(yè)第 頁(yè)共11頁(yè)第 #頁(yè)長(zhǎng)春大學(xué)課程設(shè)計(jì)紙共11頁(yè)第 #頁(yè)共11頁(yè)第 #頁(yè)rriii3137pm主要有開(kāi)始游戲,游戲設(shè)置,游戲規(guī)則,關(guān)于游戲,退出游戲等幾個(gè)選項(xiàng)長(zhǎng)春大學(xué)
3、課程設(shè)計(jì)紙共11頁(yè)第 #頁(yè)共11頁(yè)第 #頁(yè)長(zhǎng)春大學(xué)課程設(shè)計(jì)紙共11頁(yè)第 頁(yè)共11頁(yè)第 頁(yè)3.3、性能當(dāng)用戶選擇菜單時(shí),系統(tǒng)能夠快速反應(yīng),以滿足用戶的需求3.4、輸入項(xiàng)用戶點(diǎn)擊按鈕3.5、輸出項(xiàng)五個(gè)菜單選項(xiàng)3.6、算法定義菜單類(lèi),接口為OnClickListener,用于接收用戶的單擊消息PublicclassStartActivityextendsActivityimplementsView.OnClickListener/設(shè)計(jì)5個(gè)按鈕用于接收按鈕消息!privateButtonbtnStart;privateButtonbtnSet;!privateButtonbtnRole;private
4、ButtonbtnAbout;privateButtonbtnExit;:在OnCreate函數(shù)中將它們初始化:/獲取按鈕btnStart=(Button)findViewById(R.id.btnStart);btnSet=(Button)findViewById(R.id.btnSet);btnRole=(Button)findViewById(R.id.btnRole);btnAbout=(Button)findViewById(R.id.btnAbout);btnExit=(Button)findViewById(R.id.btnExit);/注冊(cè)點(diǎn)擊事件btnStart.setOnC
5、lickListener(this);裝btnSet.setOnClickListener(this);IbtnRole.setOnClickListener(this);btnAbout.setOnClickListener(this);IbtnExit.setOnClickListener(this);在OnClick函數(shù)中對(duì)響應(yīng)進(jìn)行處理:setContentView(newGameView(this);/進(jìn)入游戲,游戲在GameView類(lèi)中進(jìn)行了封裝訂/說(shuō)明游戲規(guī)則NewAlertDialog.Builder(this).setMessage(“l(fā).將相同的兩張圖片用三根以內(nèi)的直線連在一
6、起就可以消除n+2.每消除一次圖片,都會(huì)使可用時(shí)間增加n+3.每隔一段時(shí)間,當(dāng)前的界面中的圖片會(huì)進(jìn)行重排列n-+4.在規(guī)定的時(shí)間里,當(dāng)所有的圖片都消除時(shí),即為勝利n-+5.規(guī)定的時(shí)間內(nèi)有圖片未消去,即為失敗n).setPositiveButton(確定,null).show();/結(jié)束游戲結(jié)束游戲線this.finish();/進(jìn)行游戲設(shè)置,設(shè)置游戲的難度,調(diào)用了SetActivity類(lèi)進(jìn)行游戲設(shè)置,進(jìn)行游戲設(shè)置設(shè)置游戲的難度,intent.setClass(this,SetActivity.class);3.7、接口API函數(shù)3.8、限制條件無(wú)明顯限制條件4、界面設(shè)計(jì)說(shuō)明4.1、程序描述主要
7、功能:用于為玩家提供可視化的游戲界面,增加了游戲的可玩性可擴(kuò)展性:能夠適應(yīng)應(yīng)用要求的變化和修改,具有靈活的可擴(kuò)充性4.2、功能生成游戲界面,生成進(jìn)度條。如下圖:hllJ3:39pm4.3、性能e9曾o軻oe6eOiiFF廚oeA8eOOs忖o能夠快速的隨機(jī)生成符合用戶需求的界面4.4、輸入項(xiàng)無(wú)輸入4.5、輸出項(xiàng)游戲界面4.6、算法/定義游戲視圖類(lèi)publicclassGameViewextendsView/存儲(chǔ)素材圖片publicintimageType/保存所有小格子中的圖片publicintgrid=newintrowcol;/初始化加載圖片的類(lèi)型publicvoidinitType()/
8、總共要加載的圖片intsize=(row2)*(col2);/64/每類(lèi)圖片加載的次數(shù)(張數(shù))要為偶數(shù)intcount二size/imageType.length;/imageType.length=16for(inti=0;iimageType.length;i+)for(intj=0;jcount;j+)type.add(imageTypei);/初始化網(wǎng)格的設(shè)計(jì)privatevoidinitGrid()Randomr=newRandom();for(inti=0;irow;i+)for(intj=0;jcol;j+)if(i=0|i=row-1|j=0|j=col-1)gridij=0;
9、/四周不設(shè)置圖片elseIntindex=r.nextInt(type.size();gridij=type.get(index);type.remove(index);丨丨丨丨|/設(shè)置位圖的大小privatevoidititmBitmap(Contextcontext)IinttypeLength二imageType.length;image=newBitmaptypeLength;II/重新繪制for(inti=0;itypeLength;i+)/創(chuàng)建一個(gè)Bitmap的對(duì)象Bitmapbitmap=Bitmap.createBitmap(int)width,(int)height,裝Bit
10、map.Config.ARGB_8888);/對(duì)Bitmap進(jìn)行繪制Canvascanvas=newCanvas(bitmap);Drawabledwr=context.getResources().getDrawable(imageTypei);dwr.setBounds(1,1,30,30);dwr.draw(canvas);訂imagei=bitmap;/在OnDraw函數(shù)中畫(huà)出框格,每次進(jìn)行重繪操作/設(shè)置背景顏色:PaintbackGround=newPaint();線backGround.setColor(Color.WHITE);/畫(huà)一個(gè)矩形canvas.drawRect(0,0,
11、getWidth(),getHeight(),backGround);/設(shè)置網(wǎng)格線條的顏色Painthigth=newPaint();higth.setColor(Color.BLUE);/畫(huà)網(wǎng)格for(inti=0;i10;i+)/畫(huà)橫線、縱線canvas.drawLine(0,height*i,getWidth(),height*i,higth);canvas.drawLine(width*i,0,width*i,getHeight(),higth);/畫(huà)image圖片booleantest=true;/檢測(cè)圖片是否消除完for(inti=0;irow;i+)for(intj=0;j=0&
12、grida.xi=0;i-)aLoc0=i+1;/向下for(i=a.y+1;i=0&gridia.y=0;i-)裝111111111111111111aLoc2=i+1;/向右for(i=a.x+1;icol&gridia.y=0;i+)aLoc3=i-1;訂11111111111111111111returnaLoc;/用于判斷水平方向是否連通privatebooleanhorizon(Pointa,Pointb)if(a.x=b.x&a.y=b.y)/如果點(diǎn)擊的是同一個(gè)圖案,直接返回falsereturnfalse;intx_start=a.x=b.x?a.x:b.x;線11111111
13、11111111111111111111111111111111111111111111intx_end=a.x=b.x?b.x:a.x;for(intx=x_start+1;xx_end;x+)/只要一個(gè)不是T,直接返回falseif(gridxa.y!=0)returnfalse;returntrue;/用于判斷垂直方向是否連通privatebooleanvertical(Pointa,Pointb)if(a.x=b.x&a.y=b.y)returnfalse;inty_start=a.y=b.y?a.y:b.y;inty_end=a.y=b.y?b.y:a.y;for(inty=y_st
14、art+1;yy_end;y+)if(grida.xy!=0)returnfalse;returntrue;/只有一個(gè)拐點(diǎn)的情況長(zhǎng)春大學(xué)課程設(shè)計(jì)紙長(zhǎng)春大學(xué)課程設(shè)計(jì)紙共11頁(yè)第 頁(yè)共11頁(yè)第 頁(yè)privatebooleanoneCorner(Pointa,Pointb)Pointc=newPoint(a.x,b.y);Pointd=newPoint(b.x,a.y);if(gridc.xc.y=0)booleanmethod1=horizon(b,c)&vertical(a,c);if(method1)corner=newPoint(c.x,c.y);Ireturnmethodl;Iif(gri
15、dd.xd.y=0)booleanmethod2=horizon(a,d)&vertical(b,d);if(method2)corner=newPoint(d.x,d.y);TOC o 1-5 h zreturnmethod2;elsereturnfalse;裝/有兩個(gè)拐點(diǎn)的情況privatebooleantwoCorner(Pointa,Pointb)ll=scan(a,b);if(ll.isEmpty()returnfalse;訂for(intindex=0;indexll.size();index+)Lineline=(Line)ll.get(index);if(line.direct
16、=1)if(horizon(a,line.a)&horizon(b,line.b)corner=newPoint(line.a);corner2=newPoint(line.b);線returntrue;elseif(vertical(a,line.a)&vertical(b,line.b)corner=newPoint(line.a);corner2=newPoint(line.b);returntrue;TOC o 1-5 h zreturnfalse;/上面設(shè)計(jì)了一個(gè)類(lèi)來(lái)判斷兩個(gè)拐點(diǎn)的情況/類(lèi)的定義,構(gòu)造函數(shù)如下classLinepublicPointa;publicPointb;pub
17、licintdirect;publicLine()a=newPoint();b=newPoint();publicLine(intdirect,Pointa,Pointb)this.direct=direct;this.a=a;this.b=b;丨丨丨/對(duì)兩個(gè)拐點(diǎn)的情況進(jìn)行掃描,將掃描線放入Line類(lèi)型的數(shù)組中privateLinkedListscan(Pointa,Pointb)Ill=newLinkedListLine();/Pointc=newPoint(a.x,b.y);/Pointd=newPoint(b.x,a.y);for(inty=a.y;y=0;y-)if(grida.xy=
18、0&gridb.xy=0&horizon(newPoint(a.x,y),newPoint(b.x,y)ll.add(newLine(0,newPoint(a.x,y),newPoint(b.x,y);裝for(inty=a.y;yrow;y+)if(grida.xy=0&gridb.xy=0&horizon(newPoint(a.x,y),newPoint(b.x,y)ll.add(newLine(0,newPoint(a.x,y),newPoint(b.x,y);for(intx=a.x;x=0;x-)if(gridxa.y=0&gridxb.y=0&vertical(newPoint(x
19、,訂a.y),newPoint(x,b.y)ll.add(newLine(1,newPoint(x,a.y),newPoint(x,b.y);for(intx=a.x;xcol;x+)if(gridxa.y=0&gridxb.y=0&vertical(newPoint(x,a.y),newPoint(x,b.y)ll.add(newLine(1,newPoint(x,a.y),newPoint(x,b.y);線returnll;/最后做總體判斷,flag表示拐點(diǎn)的數(shù)目publicbooleancheckLink(Pointa,Pointb)if(grida.xa.y!=gridb.xb.y)/
20、如果圖案不同,直接為falsereturnfalse;if(a.y=b.y&horizon(a,b)flag=0;returntrue;TOC o 1-5 h zif(a.x=b.x&vertical(a,b)flag=0;returntrue;if(oneCorner(a,b)flag=1;returntrue;if(twoCorner(a,b)flag=2;returntrue;elsereturnfalse;5.6.2、圖片消除的畫(huà)線根據(jù)flag的值分情況分析:IFlag=0時(shí),從起點(diǎn)到終點(diǎn)畫(huà)一條線即可丨Flag=l時(shí),從起點(diǎn)到拐點(diǎn),從拐點(diǎn)到終點(diǎn)畫(huà)兩條線IFlag=2時(shí),從起點(diǎn)到拐點(diǎn),從
21、拐點(diǎn)到拐點(diǎn),從拐點(diǎn)到終點(diǎn)畫(huà)三條線I在做連接判斷時(shí)就將路徑保存下來(lái)I/畫(huà)線操作寫(xiě)在OnDraw函數(shù)中,corner、corner2保存拐點(diǎn)坐標(biāo)函數(shù)中I/每次都sleep(50)后重繪Iswitch(flag)Icase0:Icanvas.drawLine(width*(former.x+0.5f),height*(former.y+0.5f),Iwidth*(current.x+0.5f),height*(current.y+0.5f),Ip);Iflag=-1;ISystemClock.sleep(50);裝invalidate();Ibreak;Icase1:Icanvas.drawLine
22、(width*(former.x+0.5f),height*(former.y+0.5f),Iwidth*(corner.x+0.5f),height*(corner.y+0.5f),p);Icanvas.drawLine(width*(corner.x+0.5f),height*(corner.y+0.5f),訂width*(current.x+0.5f),height*(current.y+0.5f),p);Iflag=-1;ISystemClock.sleep(50);Iinvalidate();Ibreak;Icase2:線canvas.drawLine(width*(former.x+0.5f),height*(former.y+0.5f),Iwidth*(corner.x+0.5f),height*(corner.y+0.5f),p);Icanvas.drawLine(width*(corner.x+0.5f),height*(corner.y+0.5f),Iwidth*(corner2.x+0.5f),height*(corne
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 自由落體運(yùn)動(dòng)(解析版) -2025新高一暑假學(xué)習(xí)提升計(jì)劃(物理)
- 專(zhuān)項(xiàng)練:區(qū)域發(fā)展戰(zhàn)略(含解析)-湘教版高一地理下冊(cè)必修第二冊(cè)
- 重慶市某中學(xué)2024-2025學(xué)年高二年級(jí)下冊(cè)5月學(xué)習(xí)能力摸底生物試卷(含答案)
- 2025年光伏發(fā)電測(cè)試題及答案
- 小升初專(zhuān)項(xiàng)復(fù)習(xí):平均數(shù)問(wèn)題(含解析)-人教版六年級(jí)數(shù)學(xué)下冊(cè)
- 2025年保安員上崗證初級(jí)保安員模擬考試必考題庫(kù)(附含答案)
- 2025年安徽省巢湖市中級(jí)會(huì)計(jì)職稱(chēng)經(jīng)濟(jì)法預(yù)測(cè)試題含答案
- 高速公路照明系統(tǒng)的智能化控制技術(shù)考核試卷
- 農(nóng)業(yè)科技園區(qū)經(jīng)濟(jì)效益分析考核試卷
- 印刷設(shè)備生產(chǎn)過(guò)程智能化生產(chǎn)設(shè)備智能能源管理系統(tǒng)考核試卷
- 醫(yī)保辦理異地就醫(yī)授權(quán)委托書(shū)
- 個(gè)人征信查詢授權(quán)書(shū)范本
- 2024年莆田轄區(qū)新華書(shū)店招聘筆試參考題庫(kù)附帶答案詳解
- 初中化學(xué)酸堿中和反應(yīng)省公開(kāi)課一等獎(jiǎng)全國(guó)示范課微課金獎(jiǎng)?wù)n件
- JTG-T 3331-04-2023 多年凍土地區(qū)公路設(shè)計(jì)與施工技術(shù)規(guī)范
- 中國(guó)石油開(kāi)采業(yè)發(fā)展現(xiàn)狀與前景分析
- 碩士研究生職業(yè)規(guī)劃書(shū)
- 電子技術(shù)基礎(chǔ)(第5版曾令琴)課件 項(xiàng)目1-4 認(rèn)識(shí)常用電子元器件-邏輯代數(shù)基礎(chǔ)
- 《雞防疫程序》課件
- 2024年河北港口集團(tuán)有限公司招聘筆試參考題庫(kù)含答案解析
- 肉牛牧場(chǎng)項(xiàng)目創(chuàng)業(yè)計(jì)劃書(shū)
評(píng)論
0/150
提交評(píng)論