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

正文內容

射擊類手機游戲的研究與設計畢業(yè)論文-資料下載頁

2024-08-26 14:48本頁面

【導讀】在眾多游戲類型中,飛行射擊游戲是一種很典型的游戲,這種類型的游。息和用戶上次玩游戲的得分和排名等。該游戲具體包含的功能模塊有:游戲開始模塊、關卡。選擇模塊、游戲進行模塊、道具商店模塊和排行榜模塊等。碰撞檢測和游戲人工智能的跟蹤算法等。圖形界面模塊重點實現(xiàn)各個界面的。繪制,其中涉及雙緩沖繪圖技術、游戲界面縱向屏幕滾動技術等。

  

【正文】 游戲成功和失敗界面如下: 南京工程學院畢業(yè)設計說明書(論文) 37 圖 311 成功和失敗界面 開啟和關閉聲音 設計方法和代碼 聲音按鈕的實現(xiàn)方式較為簡單:主要代碼在 IndexActivity 中實現(xiàn)了,代碼如下: if (x = amp。amp。 x = + () amp。amp。 y = 800 amp。amp。 y = 800 + ()) { i++。 if (i % 2 == 0) {//當 i為偶數(shù)時聲音關閉 = ( (), )。 = false。 南京工程學院畢業(yè)設計說明書(論文) 38 (1)。//將數(shù)據(jù)庫中表示聲音的鍵置為 1 ()。//并且聲音暫停 } else { = ( (), )。 //更換圖片 (btnpressed_soundid, 1, 1, 0, 0, 1)。/播放圖標按下的提示音 = true。 (0)。//將數(shù)據(jù)庫中表示聲音的鍵置為 0 ()。//聲音開始播放 } } 兩種狀態(tài)的圖片顯示如下 : 圖 312 開啟聲音和關閉聲音 南京工程學院畢業(yè)設計說明書(論文) 39 排行榜按鈕 設計方法和代碼 游戲排行榜是一個完全依賴于數(shù)據(jù)庫的界面,顯示了你有郵寄的最高分,最多顯示 8 個,從大到小排列,且沒有重復項。 圖 313 排行榜界面 public RankView(Context context) { super(context)。 db = new DButil(context)。//數(shù)據(jù)庫工具類實例化 bg = ((),)。//背景圖片 bi = ((), )。 displayWidth =().getResources().getDisplayMetrics().widthPixels。 displayHeight =().getResources().getDisplayMetrics().heightPixels。 南京工程學院畢業(yè)設計說明書(論文) 40 src = new Rect(0, 0, (), ())。 dst = new Rect(0, 0, displayWidth, displayHeight)。 paint = new Paint()。 ()。 (50)。 sh = ()。 (this)。 } private void drawView() { try { if (sh != null) { c = ()。 (bg, src, dst, null)。 ListInteger li = ()。//存放數(shù)據(jù)的 list int i = 0。 for (Integer integer : li) { (第 + (++i) + 名 : + integer, 220, 250 + i * 100, paint)。 }//輸出 list中的所有的數(shù)據(jù) (bi, ( ()) / 2, 1060, null)。 } } catch (Exception e) { ()。 } finally { if (c != null) { (c)。 } } } @Override public void surfaceCreated(SurfaceHolder arg0) { new Thread(this).start()。//開啟重繪頁面的線程 } @Override public void run() { drawView()。 try { (100)。 //每 100毫秒重繪一次 } catch (InterruptedException e) { ()。 } 南京工程學院畢業(yè)設計說明書(論文) 41 } ...... 第四章 詳細設計 游戲背景的滾動 設計方法 游戲是一個 2d 的豎屏滾動游戲,背景圖其實就是兩張圖片不停的循環(huán),當下方圖片的左上角的 y 軸的坐標大于屏幕的高度則重置這張圖片,讓其 y 軸的坐標成為負的屏幕高度。屏幕上總共 兩張背景圖片交替往下移動,從而制造處飛機向上移動的假象。 實現(xiàn)代碼 實現(xiàn)的方法是將 2 個 dy 自加,超過屏幕高度后重置,核心代碼如下: public void drawBackGround(Canvas canvas) { dy1 += 4。//第一張圖片往下的速率為每次 4 像素 dy2 += 4。//第二章圖片往下的速率為每次 4 像素 (0, dy1, , + dy1)。 //初始化圖像 1 的位置 (0, dy2, , + dy2)。 //初始化圖像 2 的位置 (bitmap, src, dst1, null)。 (bitmap, src, dst2, null)。 if (dy1 = ) { dy1 = 。//重置背景 1 } if (dy2 = ) { 南京工程學院畢業(yè)設計說明書(論文) 42 dy2 = 。//重置背景 2 } } 我方飛機的移動方法 設計方法 只有當手指按在屏幕上且發(fā)生移動時,飛機才會做出相應的移動,并且飛機的圖片不能超出屏幕的移動范圍。可以設置兩個坐標,一個味飛機當時所處的坐標位置,另一個為手機按下時的坐標,計算出兩者之間的橫豎間距,保存此間距的數(shù)據(jù),有效期直到手指離開屏幕。移動手指時,計算手指的坐標減去之前所保存的橫豎間距,即為現(xiàn)在 飛機所應在的位置,且不可讓飛機超出屏幕范圍。 實現(xiàn)代碼 具體的實現(xiàn)代碼如下: if (isRunning amp。amp。 !choiceSuccess amp。amp。 !choiceLoss amp。amp。 () == 0) { mx = (int) () 。//保存兩者之前的橫向間距 my = (int) () 。//保存兩者之間的縱向間距 } // 移動飛機 if (isRunning amp。amp。 !choiceSuccess amp。amp。 !choiceLoss amp。amp。 () == 2) { ((int) (() mx), (int) (() my))。 //把飛機移動到想的位置 } 南京工程學院畢業(yè)設計說明書(論文) 43 實體碰撞判斷 設計方法 兩個在界面中顯示的圖像其實歸根結底可以把他們看做是兩個矩形,當兩個矩形的圖像有相接觸的部分時,即認定兩個物體相碰撞到了。具 體的檢測方法為:設置第一個矩形的左上角坐標為 x1 y1 右下角的坐標為 x2 y2,設置第二個矩形的左上角為 x3 y3,右下角的坐標為 x4 y4,當 x1 = x4 并且 y1 = y4 并且 x2 = x3 并且 y2 = y3,當且僅當這些條件都成立時才能認為兩個物體發(fā)生了碰撞。如下圖所示: 圖 41 碰撞檢測示意圖 實現(xiàn)代碼 具體的實現(xiàn)代碼如下: public static boolean ifRam(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { if (x1 = x4 amp。amp。 y1 = y4 amp。amp。 x2 = x3 amp。amp。 y2 = y3) { return true。 //如果檢測到已經(jīng)碰撞到了 返回 true } 南京工程學院畢業(yè)設計說明書(論文) 44 return false。//沒有碰撞到就返回 false } 安卓數(shù)據(jù)庫的實現(xiàn) 設計方法 安卓使用的是手機自帶的數(shù)據(jù)庫 SQLite,此數(shù)據(jù)庫可針對創(chuàng)建時和更新時分別創(chuàng)建 sql 語句,通過繼承 SQLiteOpenHelper 類來實現(xiàn), 數(shù)據(jù)庫總共要實現(xiàn)兩總功能,一種為排行榜的數(shù)據(jù),另一種為飛機的具體參數(shù),如 :飛機的等級,聲音的狀態(tài),金錢數(shù),超級子彈的數(shù)量,子彈的等級,當前的最大關卡數(shù)等。 實現(xiàn)代碼 具體的實現(xiàn)代碼如下: public class DButil extends SQLiteOpenHelper { private SQLiteDatabase db。 public DButil(Context context) { super(context, plane_zjj, null, 1)。 } @Override//數(shù)據(jù)庫若不存在 會自動創(chuàng)建 public void onCreate(SQLiteDatabase db) { (CREATE TABLE plane(_id INT, maxlevel INT, sound INT, money INT, supernum INT, planelevel INT, bulletlevel INT))。 (CREATE TABLE score(score INT))。 (INSERT INTO plane(_id, maxlevel, sound, money, supernum,planelevel, bulletlevel) VALUES (39。139。, 39。139。, 39。039。, 39。039。, 39。139。, 39。139。, 39。139。))。//插入兩條初始的數(shù)據(jù) } public Cursor selectPlane() { db = getReadableDatabase()。 Cursor cursor = (select * from plane, null)。 return cursor。 }//查詢當前飛機的所有數(shù)據(jù) 南京工程學院畢業(yè)設計說明書(論文) 45 public ListInteger selectScore() { db = getReadableDatabase()。 Cursor cursor = (select * from score order by score desc, null)。 ListInteger li = new ArrayListInteger()。 while(()){ int score = ((score))。 (score)。 } return li。 }//查詢數(shù)據(jù)庫中排行榜的所有數(shù)據(jù) public void closeDB() { ()。 }//關閉數(shù)據(jù)庫連接 public int selectMaxScore() { db = getReadableDatabase()。 Cursor cursor = (select max(score) from score, null)。 while (()) { int maxscore = (1)。 ()。 return maxscore。 } return 0。 }//查詢數(shù)據(jù)庫分數(shù)中的最大分 public int selectMinScore() { db = getReadableDatabase()。 Cursor cursor = (select min(score) from score, null)。 while (()) { int minscore = (1)。 ()。 return minscore。 南京工程學院畢業(yè)設計說明書(論文) 46 } return 0。 }//查詢最小的分數(shù) public int scoreNum(int score) { db = getReadableDatabase()。 Cursor cursor = (select count(*) from score where score = + score, null)。 while (()) { int scoreNum = (1)。 ()。 return scoreNum。 } return 0。 }//查詢欲插入的數(shù)據(jù)是否在數(shù)據(jù)庫中已經(jīng)存在了 public int scoreTableNum() { db = getReadableDatabase()。 Cursor cursor = (select count(*) from score, null)。 while (()) { int scoreTableNum = (
點擊復制文檔內容
高考資料相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1