安卓應(yīng)用-實現(xiàn)簡易打地鼠游戲_第1頁
安卓應(yīng)用-實現(xiàn)簡易打地鼠游戲_第2頁
安卓應(yīng)用-實現(xiàn)簡易打地鼠游戲_第3頁
安卓應(yīng)用-實現(xiàn)簡易打地鼠游戲_第4頁
安卓應(yīng)用-實現(xiàn)簡易打地鼠游戲_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

實 習(xí) 筆 記學(xué) 院 計算機科學(xué)與工程學(xué)院 班 級 專 業(yè) 計算機科學(xué)與技術(shù) 姓 名 于志 學(xué) 號 指導(dǎo)教師 唐培麗 實習(xí)時間 2016.06.202016.06.24 實習(xí)地點 學(xué)院綜合實驗中心 一內(nèi)容提要本程序?qū)崿F(xiàn)了一個安卓APP的簡易打地鼠游戲,地鼠會在屏幕上隨機顯示,觸摸地鼠后,該地鼠將不顯示,同時在屏幕上通過消息提示框顯示達(dá)到了幾只地鼠,地鼠出現(xiàn)的時間也是隨機產(chǎn)生的。運行環(huán)境采用eclipse,java JDK,Android SDK,ATD插件來完成對本次實驗的運行。目錄題目-4時間-4功能設(shè)計-4數(shù)據(jù)結(jié)構(gòu)的設(shè)計-5算法的設(shè)計-7關(guān)鍵代碼-8參考資料-13教學(xué)實習(xí)總結(jié)報告-13 一題目本程序?qū)崿F(xiàn)了一個安卓APP的簡易打地鼠游戲。二時間2016.06.202016.06.24三功能設(shè)計本實驗應(yīng)用了線程的相關(guān)知識來實現(xiàn)打地鼠的相關(guān)功能,首先從網(wǎng)絡(luò)上下載相關(guān)圖片來實現(xiàn)頁面的布局,然后綁定主Activity,聲明相關(guān)變量,創(chuàng)建線程,再利用java所提供的Random()方法獲取隨機位置與隨機時間,傳遞此消息,再利用消息處理類handler中的handleMessage()方法接收消息,并在屏幕上顯示。再為地鼠圖片設(shè)置監(jiān)視事件監(jiān)聽器來使其打到地鼠有反應(yīng)并用消息提示框顯示打中地鼠個數(shù)。1.設(shè)置地鼠出現(xiàn)位置和出現(xiàn)時間的相關(guān)功能點:創(chuàng)建并開啟一個新線程,在重寫的run()方法中,創(chuàng)建一個記錄地鼠位置的索引值的變量,并實現(xiàn)一個循環(huán),在該循環(huán)中,首先生成一個隨機數(shù),來表示地鼠出現(xiàn)的位置,并獲取一個Message對象,然后將生成的隨機數(shù)作為地鼠的位置的索引值保存到Message對象中,再為該Message設(shè)置一個消息標(biāo)識并發(fā)送消息,最后讓線程休眠一段時間(該時間隨機產(chǎn)生作為地鼠出現(xiàn)的時間)。2.設(shè)置地鼠出現(xiàn)的相關(guān)功能點:創(chuàng)建一個Handler對象,在重寫的handleMessage()方法中,首先定義一個記錄地鼠位置索引值的變量,然后使用if語句根據(jù)消息標(biāo)識判斷是否為指定的消息,如果是,則獲取消息中保存的地鼠位置索引值,并設(shè)置地鼠在指定位置顯示。3.來統(tǒng)計打中地鼠個數(shù)的相關(guān)功能點:獲取布局管理器中添加的ImageView組件,并為該組件添加觸摸監(jiān)聽器,在重寫的onTouch()方法中,首先設(shè)置地鼠不顯示,然后成功打中地鼠后,將i的值加1,再通過消息提示框提示打中了幾個地鼠。四數(shù)據(jù)結(jié)構(gòu)的設(shè)計1.創(chuàng)建并開啟一個新線程,在重寫的run()方法中,利用了一個while循環(huán),當(dāng)線程沒有被終止時執(zhí)行循環(huán),首先定義index并初始化賦值為0,然后利用Random()方法產(chǎn)生0數(shù)組長度之間的隨機數(shù),并賦值給index,然后把這個消息發(fā)送給handler對象,利用handler中的handlemessage()方法接受消息,最后用trycatch()語句捕獲異常,并把線程的休眠時間利用Random()方法設(shè)置為隨機時間,用于地鼠隨機出現(xiàn)的時間。代碼如下:Thread t = new Thread(new Runnable() Overridepublic void run() int index = 0;while (!Thread.currentThread().isInterrupted() index = new Random().nextInt(position.length-1)+0;Message m = handler.obtainMessage();m.what = 0x101;m.arg1 = index; handler.sendMessage(m); try Thread.sleep(new Random().nextInt(500) + 500); catch (InterruptedException e) e.printStackTrace(); );t.start();2.獲取布局管理器中添加的ImageView組件,并為該組件添加觸摸監(jiān)聽器,在重寫的onTouch()方法中,首先設(shè)置地鼠不顯示,然后利用i+語句實現(xiàn)對打中的地鼠數(shù)加一,并顯示消息提示框,提示打中多少只地鼠。代碼如下: mouse = (ImageView) findViewById(R.id.imageView1); / 獲取ImageView對象mouse.setOnTouchListener(new OnTouchListener() Overridepublic boolean onTouch(View v, MotionEvent event) v.setVisibility(View.GONE); / 設(shè)置地鼠不顯示i+;Toast.makeText(MainActivity.this, 打到 + i + 只地鼠!,Toast.LENGTH_SHORT).show(); / 顯示消息提示框return false;);五算法的設(shè)計(一).首先在MainActivity中,聲明程序中所需要的成員變量,具體算法如下:1定義private變量I,mouse,handler;2定義存儲地鼠位置的二維數(shù)組position并為其初始化;(二)創(chuàng)建并開啟一個新線程,讓時間隨機產(chǎn)生,用于地鼠隨機出現(xiàn),具體算法如下:1 創(chuàng)建一個新線程,重寫run()方法,定義index為0;2 寫while()循環(huán),條件是當(dāng)線程沒終止時執(zhí)行循環(huán);3 獲取隨機位置坐標(biāo)并傳遞這個坐標(biāo);4 設(shè)置時間是隨機的,并用trycatch語句捕獲異常;(三).創(chuàng)建一個handler()對象,設(shè)置地鼠在指定位置顯示,具體算法如下:1創(chuàng)建handleMessage()方法接收消息;2當(dāng)消息標(biāo)示與上述傳遞的消息標(biāo)識一致時接收消息;3獲取消息的索引值并設(shè)置地鼠出現(xiàn)的隨機位置,讓其顯示。(四).首先重寫onCreat(),顯示消息提示框提示打中地鼠的個數(shù)。算法如下:1 獲取布局中的圖像視圖組件;2 為圖像視圖添加事件監(jiān)聽器,設(shè)置點到地鼠,地鼠消失;3 當(dāng)打中地鼠時i加1,顯示消息提示框,提示打中地鼠的個數(shù)。六關(guān)鍵代碼1.頁面布局所用代碼:2.實現(xiàn)打地鼠主要功能模塊代碼:public class MainActivity extends Activity private int i = 0; / 記錄其打到了幾只地鼠private ImageView mouse; / 聲明一個ImageView對象private Handler handler; / 聲明一個Handler對象public int position = new int 603,532,535,624, 231, 325 , 424, 349 , 521, 256 , 543, 296 , 719, 245 , 832, 292 , 772, 358 ; / 創(chuàng)建一個表示地鼠位置的數(shù)組Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.main);mouse = (ImageView) findViewById(R.id.imageView1); / 獲取ImageView對象mouse.setOnTouchListener(new OnTouchListener() Overridepublic boolean onTouch(View v, MotionEvent event) v.setVisibility(View.GONE); / 設(shè)置地鼠不顯示i+;Toast.makeText(MainActivity.this, 打到 + i + 只地鼠!,Toast.LENGTH_SHORT).show(); / 顯示消息提示框return false;);handler = new Handler() Overridepublic void handleMessage(Message msg) int index = 0;if (msg.what = 0x101) index = msg.arg1; / 獲取位置索引值mouse.setX(positionindex0); / 設(shè)置X軸位置mouse.setY(positionindex1); / 設(shè)置Y軸位置Log.i(222:, positionindex0+ +positionindex1);mouse.setVisibility(View.VISIBLE); / 設(shè)置地鼠顯示super.handleMessage(msg);Thread t = new Thread(new Runnable() Overridepublic void run() int index = 0; / 創(chuàng)建一個記錄地鼠位置的索引值while (!Thread.currentThread().isInterrupted() index = new Random().nextInt(position.length-1)+0; / 產(chǎn)生一個隨機數(shù)Log.i(:, index+);Message m = handler.obtainMessage(); / 獲取一個Messagem.what = 0x101; / 設(shè)置消息標(biāo)識m.arg1 = index; / 保存地鼠標(biāo)位置的索引值handler.sendMessage(m); / 發(fā)送消息try Thread.sleep(new Random().nextInt(500) + 500); / 休眠一段時間 catch (InterruptedException e) e.printStackTrace(););t.start(); / 開啟線程相關(guān)截圖如下:七參考資料明日科技編著.Android從入門到精通(第一版).清華大學(xué)出版社,2012年9月明日科技編著. JAVA從入門到精通(第一版).清華大學(xué)出版社,2012年9月CSDN論壇:/八教學(xué)實習(xí)總結(jié)報告通過本次的實習(xí),讓我學(xué)會了如何利用安卓線程的知識來控制相關(guān)耗時操作,讓我更加了解了如何創(chuàng)建新線程,開啟線程,線程的休眠,線程的中斷,利用handler類和Message類的相關(guān)方法來控制對線程的操作,進(jìn)而控制相關(guān)UI界面的操作。在編寫該程序的過程中,出現(xiàn)了許多小的邏輯錯誤,例如地鼠出現(xiàn)的時間過長,地鼠不顯示等問題,都是由于自己對知識的理解不到位和自己的大意疏忽導(dǎo)致的,使我認(rèn)識到自己編程技術(shù)還有些欠缺,對知識的理解還不

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論