亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于 Android 的“捕魚(yú)達(dá)人游戲”的開(kāi)發(fā)

        2015-05-30 13:59:59李湘一

        李湘一

        摘 要:本文通過(guò)分析實(shí)際運(yùn)行效果,闡述了捕魚(yú)達(dá)人游戲開(kāi)發(fā)的體系結(jié)構(gòu),確定了游戲開(kāi)發(fā)中需要?jiǎng)?chuàng)建哪些類(lèi),如何創(chuàng)建這些類(lèi)。并對(duì)各實(shí)體類(lèi)實(shí)現(xiàn)的功能進(jìn)行了具體的描述。用線(xiàn)程實(shí)現(xiàn)了魚(yú)的游行,子彈的發(fā)射。最后給出了三種關(guān)鍵算法的描述,大炮旋轉(zhuǎn)角度的計(jì)算、子彈的運(yùn)行軌跡的計(jì)算、判斷子彈是否擊中魚(yú)的算法描述。

        關(guān)鍵詞: Android;捕魚(yú)達(dá)人;算法

        中圖分類(lèi)號(hào):TP391 文獻(xiàn)標(biāo)識(shí)號(hào):A 文章編號(hào):2095-2163(2015)06-

        Abstract: Through the analysis of the actual operating results, this paper expounds the system structure of the game development of fishing up game, and determines what kind of game development need to create, and how to create these classes. After that, the function of each entity class is described in detail. The paper also uses threads to achieve the fish's parade, bullets fired. Three key algorithms are described,which respectively are the calculation of the rotation angle of the barrel, the calculation of the trajectory of the bullet, and judging whether the bullet hit the fish.

        Keywords: Android; Fishing Talent; Algorithm

        0引 言

        近幾年來(lái),Android憑借其開(kāi)放性和靈活性成為時(shí)下熱門(mén)的移動(dòng)終端操作系統(tǒng)之一。在Android平臺(tái)上進(jìn)行游戲的開(kāi)發(fā),即已成為一個(gè)揮灑才智并極具魅力潛質(zhì)的創(chuàng)意領(lǐng)域[1]。其中,手機(jī)游戲是Android平臺(tái)上眾多類(lèi)型應(yīng)用程序的一種,覆蓋面積大,傳播速度快。本文選取大眾較為熟知的捕魚(yú)達(dá)人游戲來(lái)進(jìn)行詳細(xì)闡述該游戲開(kāi)發(fā)的思路和具體步驟。

        1捕魚(yú)達(dá)人游戲開(kāi)發(fā)的體系結(jié)構(gòu)

        首先在eclipse中新建一個(gè)android項(xiàng)目名稱(chēng)為fish,在src文件夾下新建com.tarena.fish包,捕魚(yú)達(dá)人游戲中用到的圖片素材全部拷貝到drawable目錄中。游戲最終顯示效果如圖1所示。

        該游戲開(kāi)發(fā)的體系結(jié)構(gòu)如圖2所示。

        2各實(shí)體類(lèi)的功能實(shí)現(xiàn)描述

        該游戲中有多條魚(yú)在池塘中游動(dòng),大炮將發(fā)射子彈進(jìn)行擊中魚(yú)的作用過(guò)程,同時(shí)一并顯示擊中魚(yú)所得的分?jǐn)?shù)。分析該游戲運(yùn)行效果,則需要研發(fā)如下幾種主要實(shí)體類(lèi):

        池塘類(lèi)Pool、魚(yú)類(lèi)Fish、大炮類(lèi)Barrel、子彈類(lèi)Bullet。

        相對(duì)應(yīng)地,研究中即在src文件夾下創(chuàng)建以上實(shí)體類(lèi)Pool.java、Fish.java、Barrel.java、Bullet.java。其后,則給出各類(lèi)重點(diǎn)實(shí)體的功能實(shí)現(xiàn)描述與闡析。

        (1) Fish類(lèi)實(shí)現(xiàn)的功能

        確定魚(yú)的大小、魚(yú)的位置、魚(yú)的步伐、魚(yú)的十個(gè)動(dòng)作,在魚(yú)的構(gòu)造方法中,通過(guò)Random()函數(shù)來(lái)隨機(jī)產(chǎn)生魚(yú)每次游出的位置。魚(yú)類(lèi)繼承了Thread類(lèi),如果魚(yú)被子彈擊中,讓魚(yú)重新游進(jìn)來(lái)。如果魚(yú)重新游進(jìn)來(lái),魚(yú)的位置和步伐都隨之發(fā)生了改變;如果魚(yú)沒(méi)有被子彈擊中,就直線(xiàn)向前游,并在游的過(guò)程中通過(guò)循環(huán)語(yǔ)句依次完成自身的十個(gè)動(dòng)作。十個(gè)動(dòng)作完成后又將重新開(kāi)始循環(huán)。如果魚(yú)已經(jīng)游出了池塘,則讓魚(yú)再重新游進(jìn)來(lái)。

        (2) Barrel類(lèi)實(shí)現(xiàn)的功能

        確定Barrel的位置,Barrel的大小,在Barrel的構(gòu)造方法中初始化這些參數(shù)值。

        (3)Bullet類(lèi)實(shí)現(xiàn)的功能

        定義子彈的坐標(biāo)、大小、子彈的角度、子彈的出發(fā)點(diǎn),子彈運(yùn)行軌跡的橫縱坐標(biāo),子彈是否存活(true表示子彈正常移動(dòng),false表示子彈已經(jīng)擊中fish)。具體地,move()方法實(shí)現(xiàn)子彈移動(dòng)的行為,hint()方法實(shí)現(xiàn)子彈擊中魚(yú)的方法。

        (4)Pool類(lèi)實(shí)現(xiàn)的功能

        在Pool類(lèi)中分別定義上述對(duì)象,并定義彈夾,用來(lái)存放子彈,定義捕魚(yú)的條數(shù),創(chuàng)建fishes數(shù)組用來(lái)存放11條魚(yú),使用循環(huán)向fishes數(shù)組中放入11條魚(yú),并啟動(dòng)魚(yú)的線(xiàn)程。

        在onDraw()方法中將背景bg、所有的魚(yú)、大炮、積分板、子彈都畫(huà)出來(lái)。在onTouchEvent()方法中,鼠標(biāo)彈起時(shí),創(chuàng)建子彈,計(jì)算子彈的橫縱坐標(biāo),并使子彈的中心點(diǎn)和大炮的中心點(diǎn)一致。將子彈放入彈夾中,啟動(dòng)子彈線(xiàn)程。

        (5)MainActivity類(lèi)實(shí)現(xiàn)的功能

        在該類(lèi)中創(chuàng)建一個(gè)池塘Pool對(duì)象,設(shè)置顯示的布局窗口,創(chuàng)建開(kāi)始刷新界面的線(xiàn)程,定義一個(gè)內(nèi)部類(lèi),通過(guò)調(diào)用onDraw()方法以實(shí)現(xiàn)不停地刷新Pool池塘中的內(nèi)容變化。

        3捕魚(yú)達(dá)人關(guān)鍵算法設(shè)計(jì)

        3.1大炮旋轉(zhuǎn)角度的算法描述

        大炮旋轉(zhuǎn)角度如圖3所示。

        從圖3中,大炮中心點(diǎn)的坐標(biāo)為(x,y),大炮左上角點(diǎn)的坐標(biāo)為(barrel.x,barrel.y),鼠標(biāo)點(diǎn)擊屏幕點(diǎn)的坐標(biāo)為(mouseX,mouseY)。

        大炮中心點(diǎn)的坐標(biāo)計(jì)算如下:

        int x=barrel.x+barrel.width/2;

        int y=barrel.y+barrel.height/2;

        其中,barrel.width和barrel.height分別表示大炮的寬度和高度。

        double xx=(double)mouseY-y;//計(jì)算出的結(jié)果為負(fù)數(shù)

        double yy=(double)mouseX-X;

        用反余切來(lái)求出大炮的旋轉(zhuǎn)角度,f就是最后的角度。

        f=Math.round(Math.toDegrees(-Math.atan(yy/xx)));

        3.2子彈移動(dòng)軌跡的算法描述

        子彈運(yùn)行軌跡如圖4所示。

        圖4中,圓心坐標(biāo)為(a,b),圓上任意一點(diǎn)的橫坐標(biāo)x=a+Math.sin(弧度)*半徑,縱坐標(biāo)y=b+Math.cos(弧度)*半徑。

        具體算法如下:

        int distance = p.y - y;// 求的半徑 ,其中p表示子彈的出發(fā)點(diǎn)

        int x = Math.round((float) Math.sin(Math.toRadians(roate)) * distance);

        xx = p.x + x;// 子彈運(yùn)行軌跡的x坐標(biāo)

        int y = Math.round((float) Math.cos(Math.toRadians(roate)) * distance);

        yy = p.y - Math.abs(yy);// 子彈運(yùn)行軌跡的y坐標(biāo)

        }

        }

        3.3子彈擊中魚(yú)的算法描述

        魚(yú)在池塘中游動(dòng),子彈發(fā)射的時(shí)候如何判斷魚(yú)被子彈擊中:如果子彈擊中了魚(yú)以后,彈夾中就會(huì)刪除這顆子彈,判斷魚(yú)是否存活的變量值則變?yōu)閒alse。捕到魚(yú)的變量num加1。下面給出判斷魚(yú)是否被擊中的偽代碼。

        for (int i = 0; i < 池塘中魚(yú)的數(shù)量; i++) {

        if (子彈的橫坐標(biāo) >= 魚(yú)的左上角的頂點(diǎn)橫坐標(biāo) &&

        子彈的橫坐標(biāo) < 魚(yú)左上角頂點(diǎn) 橫坐標(biāo)+ 魚(yú)的寬度 &&

        子彈的縱坐標(biāo) >=魚(yú)的左上角的頂點(diǎn)縱坐標(biāo)&&

        子彈的縱坐標(biāo) <= 魚(yú)的左上角頂點(diǎn)的縱坐標(biāo) + 魚(yú)的高度)

        {

        魚(yú)被擊中;

        刪除彈夾中的這顆子彈;

        isLive=false;

        pool.num++;

        } }

        4結(jié)束語(yǔ)

        本文介紹了基于Android系統(tǒng)捕魚(yú)達(dá)人游戲設(shè)計(jì)的總體流程,并詳細(xì)介紹了各個(gè)實(shí)體類(lèi)實(shí)現(xiàn)的功能,在設(shè)計(jì)開(kāi)發(fā)的同時(shí),對(duì)游戲中用到的關(guān)鍵算法進(jìn)行了詳細(xì)的闡述。但該游戲的模塊相對(duì)來(lái)說(shuō)較為簡(jiǎn)單,子彈擊中魚(yú)的范圍不夠精確等,有待在后期進(jìn)行模塊的拓展和功能的完善。

        參考文獻(xiàn):

        [1] 奚洋,郭健.基于Android的連連看游戲的算法研究[J].無(wú)線(xiàn)互聯(lián)科技, 2012(9):122.

        [2] 劉毅.Android游戲開(kāi)發(fā)課程教學(xué)改革與實(shí)踐[J].現(xiàn)代企業(yè)教育,2014,(16):379.

        [3] 曲蘊(yùn)慧. Android系統(tǒng)下手機(jī)游戲的設(shè)計(jì)與開(kāi)發(fā)[J].電子科技,2013(6):94-95.

        [4] 李嘉誠(chéng). Android應(yīng)用程序開(kāi)發(fā)研究與應(yīng)用[J].軟件導(dǎo)刊,2014(13):64-67.

        [5] 陳淮.基于Android游戲開(kāi)發(fā)常用類(lèi)庫(kù)的設(shè)計(jì)與研究[D].西安電子科技大學(xué),2010.

        [6] 李興華.Android開(kāi)發(fā)實(shí)戰(zhàn)經(jīng)典[M].北京:清華大學(xué)出版社, 2012.

        国产精品成人亚洲一区| 久久久久国产亚洲AV麻豆 | 国精品无码一区二区三区在线 | 精品无吗国产一区二区三区av| 久久久人妻丰满熟妇av蜜臀| 亚洲天堂丰满人妻av| 国产一区二区内射最近更新| 国品精品一区二区在线观看 | 女女同女同一区二区三区| 日本一区二区在线播放| 色妞色综合久久夜夜| 乱人伦人妻中文字幕不卡| 在线观看国产一区二区av| 午夜精品久久久久久久99热| 中文字幕无线码中文字幕| 国产精品制服一区二区| 一级黄色一区二区三区| s级爆乳玩具酱国产vip皮裤| 一出一进一爽一粗一大视频免费的| 精品少妇人妻久久免费| 亚洲乱码av中文一区二区| 欧美精品一区二区蜜臀亚洲| 亚洲香蕉av一区二区三区| 日本精品无码一区二区三区久久久| 久久久男人天堂| 国产大全一区二区三区| 久久久久av综合网成人| 亚洲精品aa片在线观看国产| 四虎影视国产884a精品亚洲| 在线亚洲日本一区二区| 成人特黄a级毛片免费视频| 久久精品国产夜色| 日韩人妖一区二区三区| 亚洲av无码成人精品国产| 天堂影院一区二区三区四区| 久久99精品久久久久久国产人妖| 亚洲成人精品久久久国产精品| 曰欧一片内射vα在线影院| 国产精品久久久久尤物| 一区二区三区在线乱码| 久久国产精品偷任你爽任你|