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

正文內(nèi)容

基于android貪吃蛇游戲_本科畢業(yè)設(shè)計(jì)(論文)-資料下載頁

2025-08-16 20:04本頁面

【導(dǎo)讀】的有限,以及客觀條件的限制,本人打算開發(fā)一個(gè)單機(jī)版的游戲。過貪吃蛇的游戲,曾經(jīng)為了和別人比賽,苦苦的玩了好多次,追求高分!這個(gè)小小的游戲是nokia當(dāng)年很成功的一款手機(jī)游戲,許多人都玩過,也很喜歡。這個(gè)游戲還是有很大的市場的。Google公司2020年11月5日發(fā)布的開源的Android. 平臺——一款包括操作系統(tǒng)、中間件和關(guān)鍵應(yīng)用的手機(jī)平臺,宏達(dá)電、高通、摩托羅拉等領(lǐng)軍企業(yè)。于是,我決定利用自己大學(xué)所學(xué)的知識,自。己在指導(dǎo)老師的幫助下,獨(dú)立開發(fā)這個(gè)小游戲。本文首先詳細(xì)介紹了java的一些基。后介紹了一下Android將來的一些前景和發(fā)展。重點(diǎn)說明了這個(gè)貪吃蛇程序所用到。的一些類和控件,包括Drawable,Canvas,Thread,等等。方法,以及本程序是如何使用這些類來進(jìn)行游戲的開發(fā)的。本程序?qū)⒗仙俳砸说慕?jīng)。典作品移植到手機(jī)上來,為更流行的硬件平臺提供應(yīng)用軟件。這些都將能很好的滿。吞吃蛇游戲基于Android平臺編寫,滿足一般手機(jī)。用戶的娛樂需求。

  

【正文】 于當(dāng)前任務(wù)堆棧的頂部),它是活躍或運(yùn)行的狀態(tài)。它就是相應(yīng)用戶操作的 activity。 當(dāng)它失去焦點(diǎn)但仍然對用戶可見時(shí),它處于暫停狀態(tài)。即是:在它之上有另外一個(gè) activity。這個(gè) activity 也許是透明的,或者未能完全遮蔽全屏,所以被暫停的activity 仍對用戶可見。暫停的 activity 仍然是存活狀態(tài)(它保留著所有的狀態(tài)和成員信息并連接至窗口管理器),但當(dāng)系統(tǒng)處于極低內(nèi)存的情況下,仍然可以殺死這個(gè)activity。 游戲控制模塊 游戲的移動(dòng)速度功能能 游戲的暫停功能 游戲的重新開始 圖 14 游戲控制模塊框架 16 如果它完全被另一個(gè) activity 覆蓋是,它處于停止?fàn)顟B(tài)。它仍然保留所有的狀態(tài)和成員信息。然而它不在為用戶可見,所以它的窗口將被隱藏,如果其它地方需要內(nèi)存,則系統(tǒng)經(jīng)常會(huì)殺死這個(gè) activity。 如果一個(gè) activity 處于暫?;蛲V?fàn)顟B(tài),系統(tǒng)可以通過要求它結(jié)束(調(diào)用它的 finish() 方法)或直接殺死它的進(jìn)程來將它驅(qū)出內(nèi)存。當(dāng)它再次為用戶可見的時(shí)候,它只能完全重新啟動(dòng)并恢復(fù)至以前的狀態(tài)。 當(dāng)一個(gè) activity 從這個(gè)狀態(tài)轉(zhuǎn)變到另一個(gè)狀態(tài)時(shí),它被以下列 protected 方法所通知 。 void onCreate(Bundle savedInstanceState) 、 void onStart() 、 void onRestart() 、void onResume() 、 void onPause() 、 void onStop() 、 void onDestroy() 2. 實(shí)現(xiàn)蛇的身體 蛇可以看做是一個(gè)個(gè)節(jié)點(diǎn)組成的 ,因此可以用一個(gè)鏈表來存儲(chǔ)蛇身的元素 ,在畫蛇時(shí)遍歷這個(gè)鏈表講里面的元素一一畫出 ,這樣就實(shí)現(xiàn)了一條蛇。 3. 實(shí)現(xiàn)蛇的移動(dòng) 用一個(gè) timer(定時(shí)器 )來不斷地刷新游戲畫面 ,每刷新一次就再蛇頭的前面 (鏈表的尾部 )增加一個(gè)新元 素 ,同時(shí)把蛇尾的一個(gè)元素刪掉 ,這樣從視覺上看起來就實(shí)現(xiàn)了蛇的移動(dòng)。 4. 實(shí)現(xiàn)蛇吃食物 蛇移動(dòng)的過程中如果蛇頭的坐標(biāo)與食物出現(xiàn)的坐標(biāo)重合了 ,那么就在蛇頭的位置增加一個(gè)元素同時(shí)不刪除蛇尾的最后一個(gè)元素 ,這樣蛇每遲到一個(gè)食物 身體就會(huì)變長一截。 游戲控制模塊實(shí)現(xiàn) 1. 實(shí)現(xiàn)操作蛇的移動(dòng)方向 在 Android 系統(tǒng)中,手機(jī)上的每個(gè)按鈕都會(huì)有一個(gè)對應(yīng)的鍵值跟它對應(yīng),所在可以給對應(yīng)的按鈕設(shè)置監(jiān)聽器 OnClickListener,監(jiān)聽器是一個(gè)接口 ,該接口中有一個(gè)方法 onClick(View v) 。當(dāng)按鈕被點(diǎn) 擊的時(shí)候系統(tǒng)會(huì)自動(dòng)調(diào)用該監(jiān)聽器的onClick(View v)方法。所以實(shí)現(xiàn)游戲控制的具體代碼將被寫到該方法中。 因?yàn)楸居螒蛑胁辉试S蛇向與蛇頭相反的方向移動(dòng),所以當(dāng)用戶操作時(shí)需要判斷用戶操作的方向是不是跟規(guī)則沖突,若沖突則無視該操作,若不沖突則響應(yīng)該操作,所以需要用一個(gè)變量來記錄蛇頭的當(dāng)前方向。 2. 實(shí)現(xiàn)游戲暫停 在 Activity 的生命周期中,有一個(gè) onPause()方法 .該方法在 Activity 變得不可見的時(shí)候被系統(tǒng)自動(dòng)調(diào)用 .在玩游戲過程中,如果有來電或是其它事件中斷,這時(shí)應(yīng)該把當(dāng)前狀態(tài)保存。以便返回 時(shí),還可以繼續(xù)玩游戲。這就使用 onSaveInstanceState實(shí)現(xiàn)保存當(dāng)前狀態(tài)。 3. 實(shí)現(xiàn)游戲恢復(fù) Activity 生命周期 的 onResume()方法 .該方法在 Activity 從 不可見的 狀態(tài)下變得 17 可見 時(shí)被系統(tǒng)自動(dòng)調(diào)用 .在用戶接完電話或者在暫停狀態(tài)下觸摸屏幕后可以在該生命周期方法中對游戲進(jìn)行恢復(fù)。 4. 實(shí)現(xiàn)游戲退出 當(dāng)一個(gè) Activity 退出或者被調(diào)用 finish()方法后 ,系統(tǒng)會(huì)調(diào)用其生命周期方法onDestroy().當(dāng)用戶退出游戲時(shí) ,可以在這個(gè)方法中對資源進(jìn)行釋放。 TileView 類的設(shè)計(jì) TileView 是游戲的界限,即蛇頭若觸碰到界限則游戲結(jié)束。因?yàn)榻缦抟残枰滑F(xiàn)實(shí)到屏幕上,所以 TileView 需要繼承 類。 類是描繪塊狀視圖的基類。 View 會(huì)繪制一個(gè)包含 Drawing 是 event 事件的方形塊。View 是所有與用戶交互的組件的 Widgets 的基類 (Buttons, textField 等 ),View 的子類ViewGroup 是 layouts 類的基類, layouts 類可以包含其他的 View/ViewGroup 組件并且定義 展示的屬性。 實(shí)現(xiàn)一個(gè) View,首先需要實(shí)現(xiàn)框架中一些所有 Views 公用的方法。不必重寫所有所有的方法,可以僅僅重寫 onDraw()。 SnakeView 類的設(shè)計(jì) SnakeView 是本游戲的業(yè)務(wù)邏輯類,該類中包含了游戲數(shù)據(jù)和一些處理數(shù)據(jù)的方法以及一些內(nèi)部類。 SnakeView 的方法摘要。 1. 判斷按鍵的方法 在 Android 手機(jī)上,每個(gè)按鍵都會(huì)有一個(gè)唯一的鍵值與它對應(yīng),可以通過獲得鍵值來判斷哪個(gè)鍵被按下了并采取相應(yīng)的動(dòng)作。 2. 設(shè)置提示信息的 方法 通過程序判斷動(dòng)態(tài)地設(shè)置用戶提示信息,如游戲結(jié)束。 3. 在隨機(jī)位置出現(xiàn)食物的方法 通過隨機(jī)數(shù)在屏幕范圍內(nèi)隨機(jī)出現(xiàn)一個(gè)食物,但是不允許同一時(shí)刻有兩個(gè)食物存在。 4. 刷新蛇的當(dāng)前位置的方法 主要用于刷新蛇的當(dāng)前位置。 5. 判斷蛇是否吃到食物的方法 因?yàn)槭澄锖蜕叨紩?huì)有一個(gè)坐標(biāo),所以可以通過判斷蛇頭坐標(biāo)是否跟食物坐標(biāo)相等的方法來判斷蛇是否吃到了食物。 程序主結(jié)構(gòu) 本次所設(shè)計(jì)貪吃蛇游戲的程序主結(jié)構(gòu)如圖 45 所示。 18 程序類圖 該程序由以下五個(gè)類實(shí)現(xiàn),分別為 TileView, Snake, SnakeView。各個(gè)類之間的關(guān)系及所包括的方法如圖 46 所示。 初始化 進(jìn)入事件等待狀態(tài) 初始化失敗 不正常退出 開始請求 相關(guān)事件 返回 暫停請求 退出 正常退出 圖 15貪吃蛇程序主結(jié)構(gòu) 19 圖 16程序類圖 類的詳細(xì)設(shè)計(jì) Snake 類的詳細(xì)設(shè)計(jì) Snake 類是蛇頭以及蛇頭的控制部分,包括判斷 newDirection 和 oldDirection 是否為相反方向,用于選取有效方向。判斷蛇頭是否和蛇身的某個(gè)節(jié)點(diǎn)的坐標(biāo)重合,即蛇是否吃到自己。實(shí)現(xiàn)蛇身沿著蛇頭的軌跡移動(dòng)。根據(jù)方向鍵,改變蛇頭的 x、 y的 值,即改變方向。以及讓蛇不停走動(dòng)。 public void onCreate(Bundle savedInstanceState) { (savedInstanceState)。 // No Title bar requestWindowFeature()。 setContentView()。 mSnakeView = (SnakeView) findViewById()。 ((TextView) findViewById())。 play = (Button)findViewById()。 Snake mSnakeView: SnakeView ICICLE_KEY: String +onCreate() +onPause() +onSaveInstanceState() SnakeView +SnakeView(context: Context, attrs: AttributeSet) +initSnakeView() +initNewGame() +onKeyDown(keyCode: int, msg: KeyEvent): boolean +addRandomApple() +update() +updateSnake() +updateWalls() +updateApples() +coordArrayListToArray(cvec: ArrayListCoordinate): int[] +restoreState(icicl: Bundlee) +setTextView(newView: TextView) TileView mTileSize: int mXTileCount: int mYTileCount: int mXOffset: int mTileArray: Bitmap mYOffset: int +TileView() +onSizeChanged(w: int, h: int, oldw: int, oldh: int) +loadTile(key: int, tile: Drawable) +clearTiles() +onDraw(canvas: Canvas) 20 (PLAY)。 (this)。 ((0, 0, 255, 0))。 left = (ImageButton)findViewById()。 (LEFT)。 (this)。 ((1, 1, 255, 1))。 ()。 right = (ImageButton)findViewById()。 (RIGHT)。 (this)。 ((1, 1, 255, 1))。 ()。 up = (ImageButton)findViewById()。 (UP)。 (this)。 ((1, 1, 255, 1))。 ()。 down = (ImageButton)findViewById()。 (DOWN)。 (this)。 ((1, 1, 255, 1))。 ()。 if (savedInstanceState == null) { // We were just launched set up a new game ()。 } else { // We are being restored Bundle map = (ICICLE_KEY)。 if (map != null) { (map)。 } else { ()。 } } handler = new Handler() { public void handleMessage(Message msg) 21 { switch () { case : ()。 ()。 ()。 ()。 ()。 break。 } (msg)。 } } } TileView 類的詳細(xì)設(shè)計(jì) TileView 是游戲的界限,即蛇頭若觸碰到界限則游戲結(jié)束。因?yàn)榻缦抟残枰滑F(xiàn)實(shí)到屏幕上,所以 TileView 需要繼承 類。 類是描繪塊狀視圖的基類。 View 會(huì)繪制一個(gè)包含 Drawing 是 event 事件的方形塊。View 是所有與用戶交互的組件的 Widgets 的基類 (Buttons, textField 等 ),View 的子類ViewGroup 是 layouts 類的基類, layouts 類可以包含其他的 View/ViewGroup 組件并且定義展示的屬性。 實(shí)現(xiàn)一個(gè) View, 首先需要實(shí)現(xiàn)框架中一些所有 Views 公用的方法。不必重寫所有所有的方法,可以僅僅重寫 。 onDraw() protected void onSizeChanged(int w, int h, int oldw, int oldh) { mXTileCount = (int) (w / mTileSize)。 mYTileCount = (int) (h / mTileSize)。 mXOffset = ((w (mTileSize * mXTileCount)) / 2)。 mYOffset = ((h (mTileSize * mYTileCount)) / 2)。
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1