freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)論文-基于android平臺(tái)的手機(jī)五子棋游戲的設(shè)計(jì)-資料下載頁

2025-01-16 20:39本頁面
  

【正文】 有就啟動(dòng)它,而且一個(gè)適當(dāng)?shù)慕M件實(shí)例可用,如果沒有就創(chuàng)建。5 程序的設(shè)計(jì)與實(shí)現(xiàn) 本章節(jié)主要介紹一下此論文中用到了的 Android 的布局文件,可視化控件以及它們的具體實(shí)現(xiàn)。 23 程序的算法研究: 本游戲是以五子棋為背景的游戲,游戲的畫面按照 9*9 的畫面進(jìn)行匯總,內(nèi)容的算法則是根據(jù) JAVA 的基本循環(huán)語句進(jìn)行定義,棋盤的繪制尤為重要,它是整個(gè)游戲的關(guān)鍵,因?yàn)樗钦麄€(gè)游戲的主界面,利用 surface 可得到 9*9 的游戲棋盤坐標(biāo)畫面。 在游戲中,落子定義也十分重要,因?yàn)槲遄悠逵螒蛑?,只要黑白任意一方在任何方向?5 個(gè)連續(xù)落子連成一線,便獲得了勝利。算法便是在坐標(biāo)定義上進(jìn)行++的方式。 棋盤布局的數(shù)據(jù)結(jié)構(gòu) 首先要先獲得整個(gè)棋盤的高度,以及其他一些寬度的參數(shù),因?yàn)槔玫氖?surface 的重繪,所以對(duì)此類棋盤高度寬度進(jìn)行定義,部分代碼如下:public void setGameState(int newState) {mGameState = newState。switch (mGameState) {case GS_GAME: mGameMap = new int[CHESS_HEIGHT][CHESS_WIDTH]。 mMapHeightLengh = 。 mMapWidthLengh = mGameMap[0].length。 mCampTurn = CAMP_HERO。 break。 關(guān)于盤面情況的表示,首先得到屏幕的大小,然后根據(jù)所畫棋子的大小來確定下一條棋盤的畫線。 整個(gè)棋盤是利用 superface 進(jìn)行重繪, superface 是安卓系統(tǒng)繪制列陣最普通的一種 在 android 中,對(duì) view 及其子類,都是畫在 surface 上的。每個(gè) window 對(duì)應(yīng)一個(gè) surface,各 surface 對(duì)象通過 surfaceflinger 合成到 framebuffer,每個(gè) surface 都是雙緩沖,它有一個(gè) back buffer 和一個(gè) front buffer。back buffer 就是畫畫的地方,front buffer 是用來合成。surface 創(chuàng)建 Canvas 對(duì)象(用來管理 surface 繪圖操作) , Canvas 對(duì)應(yīng) bitmap(存儲(chǔ) surface 內(nèi)容)。當(dāng)調(diào)用 unlockCanvas()后, back buffer 開始變?yōu)榭捎?,就開始顯示了。有一套機(jī)制實(shí)現(xiàn) back buffer 和 front buffer 的互換,當(dāng)要更新時(shí),back buffer 與 front buffer 互換,back buffer 變成 front buffer。代碼如下:for (i = 0。 i mMapHeightLengh。 i++) { for (j = 0。 j mMapWidthLengh。 j++) {int CampID = mGameMap[i][j]。 24 float x = (j * mTitleSpace) + mTitleIndex_x。float y = (i * mTitleSpace) + mTitleHeight + mTitleIndex_y。if (CampID == CAMP_HERO) { DrawImage(mBlack, x, y, ALIGN_VCENTER | ALIGN_HCENTER)。} else if (CampID == CAMP_ENEMY) { DrawImage(mWhite, x, y, ALIGN_VCENTER | ALIGN_HCENTER)。} setGameState(GS_GAME)。根據(jù) res 中棋盤圖像的坐標(biāo),進(jìn)行定義。Res 中存放的是調(diào)用定義的圖片,將 main 中繪制好的大類在 res 中進(jìn)行整合。圖 52在 res 中如圖 52,在其中進(jìn)行圖像的定義,之后根據(jù)定義對(duì)其經(jīng)行調(diào)用如上述代碼實(shí)現(xiàn)。 行棋坐標(biāo)判定 實(shí)際上,是根據(jù)當(dāng)前最后一個(gè)落子的情況來判斷勝負(fù)的。實(shí)際上需要從四個(gè)位置判斷,以該子為出發(fā)點(diǎn)的水平,分別是豎直和水平以及傾斜型。在獲得橫軸和數(shù)軸坐標(biāo)時(shí),該子落下,即可獲得該子落下的坐標(biāo)。因?yàn)槲遄悠逵袡M豎左右,斜邊等全方位的落子方式,所以在定義的時(shí)候就要進(jìn)行多方位的考慮,以保持五子棋的規(guī)則不被破壞。對(duì)于各個(gè)方向的算法都要對(duì)整個(gè)棋盤有一個(gè)清晰的定義。部分如下代碼:// 橫向for (int i = 0。 i CALU_ALL_COUNT。 i++) { int index = mMapIndexX CALU_SINGLE_COUNT + i。 if (index 0 || index = mMapWidthLengh) {if (MeetCount == CALU_SINGLE_COUNT) { return true。}MeetCount = 0。continue。 } if (mGameMap[mMapIndexY][index] == Camp) {MeetCount++。 25 if (MeetCount == CALU_SINGLE_COUNT) { return true。} } else {MeetCount = 0。 }}// 縱向MeetCount = 0。for (int i = 0。 i CALU_ALL_COUNT。 i++) { int index = mMapIndexY CALU_SINGLE_COUNT + i。 if (index 0 || index = mMapHeightLengh) {if (MeetCount == CALU_SINGLE_COUNT) { return true。}MeetCount = 0。continue。 } if (mGameMap[index][mMapIndexX] == Camp) {MeetCount++。if (MeetCount == CALU_SINGLE_COUNT) { return true。} } else {MeetCount = 0。 如上述語句為橫向落子的算法。橫向的落子算法,根據(jù)棋盤進(jìn)行坐標(biāo)的定位。游戲的策劃是游戲開發(fā)過和中的最重要的一個(gè)開發(fā)環(huán)節(jié),只有寫好了游戲策劃才能繼續(xù)游戲開發(fā),游戲策劃是游戲開發(fā)的一個(gè)流程,把策劃寫好了就可以近照策劃一步步進(jìn)行開發(fā),可見策劃的重要性。 勝負(fù)的判定 游戲中,游戲的結(jié)束意味著勝負(fù)的出現(xiàn),在棋類對(duì)戰(zhàn)中最終的勝負(fù)就是黑方或者白方的勝利。所以對(duì)于此類定義十分重要。 五子棋的規(guī)則就是任意方向上能夠連續(xù)連成5個(gè),便獲得勝利,以此根據(jù)這個(gè)規(guī)則對(duì)勝負(fù)判定進(jìn)行匯總和定義。部分代碼如下:if (x 0 amp。amp。 y mTitleHeight) {mMapIndexX = (int) (x / mTitleSpace)。mMapIndexY = (int) ((y mTitleHeight) / mTitleSpace)。if (mMapIndexX mMapWidthLengh) { 26 mMapIndexX = mMapWidthLengh。}if (mMapIndexX 0) { mMapIndexX = 0。}if (mMapIndexY mMapHeightLengh) { mMapIndexY = mMapHeightLengh。}if (mMapIndexY 0) { mMapIndexY = 0。}if (mGameMap[mMapIndexY][mMapIndexX] == CAMP_DEFAULT) { 流程設(shè)計(jì) 游戲的設(shè)計(jì)是一個(gè)很簡(jiǎn)單的 2D 人人對(duì)戰(zhàn)五子棋,它的游戲運(yùn)行方式一目了然,由于簡(jiǎn)單的設(shè)計(jì)和實(shí)現(xiàn),可以很清晰很直觀地看到整個(gè)運(yùn)行的過程。當(dāng)設(shè)計(jì)這個(gè)游戲時(shí),首先要用一個(gè)很好的游戲界面,進(jìn)入游戲界面,可直接進(jìn)行人人對(duì)戰(zhàn)。如圖61:直接進(jìn)入游戲進(jìn)行人人對(duì)戰(zhàn)判定勝負(fù)進(jìn)入獲勝界面并按任意鍵重新開始游戲圖 61 功能模塊 27 游戲的實(shí)現(xiàn):如圖 58 運(yùn)行程序進(jìn)入開機(jī)動(dòng)畫界面,也就是游戲歡迎頁面 然后就直接進(jìn)入了游戲畫面,便讓人知道這是一個(gè)五子棋游戲 ,挑戰(zhàn)自己,集中你的智慧,來享受博弈的樂趣,會(huì)勾起人們想下棋的欲望,被五子棋游戲吸引,而且在火車上休閑時(shí)可以與別人進(jìn)行博弈,特別能切磋兩人之間的棋藝, ??梢宰屓嗽谌魏螘r(shí)間任何地點(diǎn)都可以下棋放松、休閑。而且簡(jiǎn)單的人人呢對(duì)戰(zhàn)可以讓自己在任何時(shí)候也可以自己與自己博弈,自我研究行棋套路,這也是這個(gè)游戲產(chǎn)生的初衷。整個(gè)界面的設(shè)計(jì)師根據(jù)傳統(tǒng) 9*9 棋盤模式進(jìn)行的重繪,利用第五章中的 superface 重繪可得到 9*9棋盤模式。具體的游戲?qū)崿F(xiàn)如圖 62 游戲主界面 這時(shí)直接進(jìn)入游戲,游戲界面 GameView 該類是整個(gè)程序最主要的類,是主游戲的界面該界面繼承自 SurfaceView 并實(shí)現(xiàn)了 接口。圖 62 游戲主界面如圖 510 是開始游戲界面,就可以開始對(duì)弈了,黑白雙方都是玩家,用鼠標(biāo)點(diǎn)擊方式進(jìn)下棋,然后考慮下一步對(duì)方如何進(jìn)行走位。然后可以直接根據(jù)對(duì)手的走位選擇自己合適的走法來擊敗對(duì)手。 28 圖 63當(dāng)有任意顏色的棋子勝利時(shí)即游戲結(jié)束,它會(huì)有一個(gè)操作提示:“白(黑)方勝利 點(diǎn)擊繼續(xù)游戲。 ”當(dāng)我們按下任意鍵時(shí)就會(huì)繼續(xù)進(jìn)行游戲。當(dāng)游戲結(jié)束是又會(huì)一個(gè)相同的提示。然后又是一個(gè)操作提示重新進(jìn)行新的游戲的開始。如圖 63。在程序的設(shè)計(jì)用利用代碼的實(shí)現(xiàn)可以得到上述畫面,部分代碼如下:case GS_GAME: DrawRect(, 0, 0, mScreenWidth, mScreenHeight)。 RenderMap()。 break。 case GS_END: DrawRect(, 0, 0, mScreenWidth, mScreenHeight)。 DrawString(, (mCampWinner) + 勝利 點(diǎn)擊繼續(xù)游戲, 50, 50)。 break。當(dāng)黑方或者白方勝利時(shí),游戲就會(huì)自動(dòng)跳至如圖 63.,這時(shí)游戲已經(jīng)結(jié)束。 29 改進(jìn)與優(yōu)化陣營(yíng)選擇:一種更人性化的設(shè)計(jì)是正式進(jìn)入游戲之前,讓玩家選擇此次游戲顏色的選擇,即選擇紅方或者黑方棋子。對(duì)戰(zhàn)的方式:若該游戲能實(shí)現(xiàn)人機(jī)交互對(duì)戰(zhàn),可以完全提升整個(gè)游戲的可玩性。成績(jī)的儲(chǔ)存與排行:該游戲中如果能夠加上游戲的排行與儲(chǔ)存將更人性化,可以根據(jù)前面介紹的存儲(chǔ)技術(shù)實(shí)現(xiàn)成績(jī)的儲(chǔ)存技術(shù),提高游戲的完整性。背景音樂:該游戲若能加上落子的音效,更加能夠提升游戲的可玩性。作為結(jié)合了最具活力的 Linux 一與 Java 兩大開發(fā)語言優(yōu)點(diǎn)于一身的 Android,雖然中長(zhǎng)期擁有光明的前景,但短期內(nèi)依然存在諸多開發(fā)的挑戰(zhàn),特別是與傳統(tǒng)的 Linux 與 Java 開發(fā)的兼容性還很欠缺,并且在程序安全性和多任務(wù)處理方面還存在不足,這對(duì)從業(yè)者來說需要引起足夠的重視,力爭(zhēng)先評(píng)估自己的開發(fā)應(yīng)用需求,再衡量 Android 的優(yōu)勢(shì)和不足,然后根據(jù)自己的實(shí)際需要揚(yáng)長(zhǎng)避短。不管如何,Android 作為一款開放性嵌入式操作系統(tǒng),具有較強(qiáng)的自主開發(fā)延伸性,無論是硬件廠商還是軟件廠商或是系統(tǒng)集成商,都可以根據(jù)自身需要進(jìn)行特色鮮明的產(chǎn)品開發(fā),并確保自己開發(fā)結(jié)果的唯一性,這恰恰適合正在不斷從中國(guó)制造向中國(guó)創(chuàng)造轉(zhuǎn)型中的中國(guó)電子產(chǎn)業(yè),因此,如何學(xué)好并利用好 Android 這樣一款面向龐大終端消費(fèi)市場(chǎng)的操作系統(tǒng)就顯得極為重要。 30 總結(jié)在本次游戲的設(shè)計(jì)中,將游戲設(shè)計(jì)成人人對(duì)戰(zhàn)的模式。而非人機(jī)對(duì)戰(zhàn)的模式,目的是可以讓玩家更加快速地對(duì)戰(zhàn)。在設(shè)計(jì)中,會(huì)有坐標(biāo)未對(duì)齊的問題??梢栽谄灞P的設(shè)計(jì)中進(jìn)行修改。背景也可適用于自己喜歡的情況下任意修改。在設(shè)計(jì)的過程中會(huì)出現(xiàn)因?yàn)榘姹镜牟煌霈F(xiàn)棋盤棋子不能對(duì)準(zhǔn)棋盤坐標(biāo)的問題。由于版本的不兼容,導(dǎo)致主界面分辨率高度等出現(xiàn)不協(xié)調(diào)的現(xiàn)象。解決的方法就是改回兼容的版本。本游戲的兼容版本是安卓 ,如果改成安卓 就會(huì)出現(xiàn)上述的現(xiàn)象。在整個(gè)功能實(shí)現(xiàn)中,所有的功能都是在 game
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1