影音先锋男人资源在线观看,精品国产日韩亚洲一区91,中文字幕日韩国产,2018av男人天堂,青青伊人精品,久久久久久久综合日本亚洲,国产日韩欧美一区二区三区在线

基于android環(huán)境的俄羅斯方塊畢業(yè)設(shè)計

上傳人:仙*** 文檔編號:26941107 上傳時間:2021-08-14 格式:DOC 頁數(shù):52 大?。?74.50KB
收藏 版權(quán)申訴 舉報 下載
基于android環(huán)境的俄羅斯方塊畢業(yè)設(shè)計_第1頁
第1頁 / 共52頁
基于android環(huán)境的俄羅斯方塊畢業(yè)設(shè)計_第2頁
第2頁 / 共52頁
基于android環(huán)境的俄羅斯方塊畢業(yè)設(shè)計_第3頁
第3頁 / 共52頁

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《基于android環(huán)境的俄羅斯方塊畢業(yè)設(shè)計》由會員分享,可在線閱讀,更多相關(guān)《基于android環(huán)境的俄羅斯方塊畢業(yè)設(shè)計(52頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、基于android環(huán)境的俄羅斯方塊 一、 緒論 1.1. 項目背景 本題目將設(shè)計一個俄羅斯方塊(Tetris, 俄文:Тетрис)。它是一款風(fēng)靡全球的電視游戲機和掌上游戲機游戲,由俄羅斯人阿列克謝帕基特諾夫發(fā)明,故得此名。俄羅斯方塊的基本規(guī)則是移動、旋轉(zhuǎn)和擺放游戲自動輸出的各種方塊,使之排列成完整的一行或多行并且消除得分。由于上手簡單、老少皆宜,從而家喻戶曉,風(fēng)靡世界。 1.2. 開發(fā)平臺 此項目基于android 環(huán)境進行開發(fā),使用的編程工具為eclipse,它是以android語言作為其基本語言的一種可視化編程工具。 Android 是Google開發(fā)的基于Lin

2、ux平臺的開源手機操作系統(tǒng). Android四大基本組件分別是Activity,Service服務(wù),Content Provider內(nèi)容提供者,BroadcastReceiver廣播接收器。 應(yīng)用程序中,一個Activity通常就是一個單獨的屏幕,它上面可以顯示一些控件也可以監(jiān)聽并處理用戶的事件做出響應(yīng)。Activity之間通過Intent進行通信。 你的應(yīng)用可以使用它對外部事件進行過濾只對感興趣的外部事件(如當(dāng)電話呼入時,或者數(shù)據(jù)網(wǎng)絡(luò)可用時)進行接收并做出響應(yīng)。廣播接收器沒有用戶界面。然而,它們可以啟動一個activity或serice 來響應(yīng)它們收到的信息,或者用Notificatio

3、nManager 來通知用戶。 一個Service 是一段長生命周期的,沒有用戶界面的程序,可以用來開發(fā)如監(jiān)控類程序。 android平臺提供了Content Provider使一個應(yīng)用程序的指定數(shù)據(jù)集提供給其他應(yīng)用程序。 注:Activity生命周期 二、 項目規(guī)則及設(shè)計思路 1. 2. 2.1. 項目規(guī)則 玩家通過點觸虛擬鍵盤,左右控制方塊左右移動,按上代表旋轉(zhuǎn),按下代表加速向下移動,每滿一行消除,獲得相應(yīng)積分100,積分每增長2000,等級加1,游戲速度加快 2.2. 實現(xiàn)思路 1. 2. 2.1. 2.2. 2.2.1. 界面設(shè)計

4、 游戲菜單界面 游戲結(jié)束界面 游戲運行界面 排行榜 界面 幫助界面 注:游戲界面中,利用二維數(shù)組進行保存,其值為1代表該點有方塊占用,值為0代表空白,根據(jù)值繪制整張游戲窗口。 2.2.2. 功能設(shè)計 從游戲的基本玩法出發(fā),主要算法在于俄羅斯方塊的形狀和旋轉(zhuǎn)。在游戲設(shè)計中,方塊采用最基本的7種造型,包括長條型,正方型,正S型,反S型,正7型,反7型,T型,每種造型又可以通過逆時針旋轉(zhuǎn)變化出4種形狀,因此利用三維數(shù)組保存28種方塊形狀,并且編號為K~K+3(K=0,1…7)的四個形狀為一組。方塊采用4*4的二維數(shù)組的數(shù)據(jù)結(jié)構(gòu),以

5、此在界面中根據(jù)其數(shù)組對應(yīng)值進行方塊繪制。在旋轉(zhuǎn)過程進行之前,先判斷在該位置能否進行旋轉(zhuǎn),若能,則將其在三維數(shù)組中的編號K,編號為K+(K+1)%4的形狀即為旋轉(zhuǎn)結(jié)果。 游戲過程中,利用隨機函數(shù)在一個預(yù)覽窗體中提前展示形狀供用戶參考,然后將展示的形狀復(fù)制到游戲窗體中進行擺放,在游戲窗體中用戶就可以使用鍵盤的方向鍵來控制方塊的運動,然后對每一行進行判斷,如果有某行的方塊是滿的,則消除這行的方塊,并且使上面的方塊自由下落,其中,方塊向下的速度通過調(diào)用函數(shù)進行控制。同時用戶也可以使用向下鍵加快下落速度,定義一個變量,對消除的行數(shù)進行記錄,最后得出用戶的分數(shù),用條件語句對分數(shù)進行判斷,達到一定

6、的積分就可以升級到下一個等級。 三、 程序流程圖 1. 2. 3. 3.1. 總流程 到達底部部 到底游戲結(jié)束 到達底部部 結(jié)束 銷行操作 生成下一個下墜物 將新生的下墜物代替舊的“下一 個下墜物“ 將舊的“下一個下墜物”用作當(dāng)前 下墜物 銷行操作 游戲結(jié)束處理 下降一個單位 開始 3.2. 底部到達的判斷與銷行的實現(xiàn): 是 否 堆積方塊,判斷接觸面狀態(tài)及是否得分 2.統(tǒng)計分數(shù) 判斷是否過關(guān) 關(guān)數(shù)增加,游戲速度將變快。開始新的一關(guān),繼續(xù)游戲 游戲窗口重繪 1.判斷行滿、處理銷行、堆積方塊向下移動

7、 將新的下墜物放置到游戲區(qū)域中去,這時可能出現(xiàn)馬上到達底部的情況,因此需要對它進行判斷,如果是到達底部,則進行銷行處理,并且修改相應(yīng)的數(shù)據(jù)狀態(tài)。而判斷是否已經(jīng)到達了底部,可以通過當(dāng)前下墜物件所對應(yīng)的接觸面的方塊位置為被占用狀態(tài)來確定。 統(tǒng)計分數(shù):在消行處理里面有一個專門用來統(tǒng)計消行數(shù)的變量,然后根據(jù)變量的值決定分數(shù)的多少。如果總分數(shù)達到過關(guān)條件就過關(guān),改變游戲速度,開啟新的一關(guān),然后再加載方塊。沒有達到過關(guān)分數(shù)或者沒有滿行,則加載下一個方塊繼續(xù)游戲。 是 否 是 否 否 是 是 否 接上圖1點 底行 判斷當(dāng)前行是否為空 判斷當(dāng)前行是否為

8、滿 判斷是否有滿行 判斷移動行方塊是否為空 當(dāng)前行向上推動一行 將要移動行所有數(shù)據(jù)移至當(dāng)前行 將當(dāng)前行的所有數(shù)據(jù)初始化 統(tǒng)計連續(xù)幾行為滿 如果有銷行,則刷新游戲區(qū)域。接上圖2點 4. 5. 5.1. 5.2. 5.3. 隨機方塊的產(chǎn)生 是 否 7 6 5 4 3 2 1 隨機抽取一個數(shù) 隨機數(shù) 一字形 田字形 L 形 J 形 T 形 S 形 Z字形 型 游戲是否結(jié)束 保存當(dāng)前方塊坐標 顯示方塊于屏幕上 游戲結(jié)束 保存信息 關(guān)數(shù)初始化 返回開始界面 四、 部分截圖 5.1初始界面

9、 5.2游戲界面 5.3幫助界面 5.4排行界面 1. 2. 3. 4. 5. 五、 關(guān)鍵代碼 1. 2. 3. 4. 5. 6. 6.1. ActivityGame.java package com.HDU.tetris; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.AlertDialog.Builder; import android.c

10、ontent.Intent; import android.os.Bundle; import android.util.Log; import android.view.Window; public class ActivityGame extends Activity { //總游戲窗口 private static final String TAG = "ActivityGame"; TetrisView mTetrisView = null; //處理游戲進程的類 public void onCreate(Bundle saved) //創(chuàng)建活動

11、{ super.onCreate(saved); //啟動窗體的拓展特性 requestWindowFeature(Window.FEATURE_NO_TITLE); init(); } private void init() { mTetrisView = new TetrisView(this); Intent intent = getIntent(); //得到當(dāng)前的intent //獲取額外信息——等級 int level = intent.getIntExtra(ActivityMain.LEVEL,1); mT

12、etrisView.setLevel(level); //設(shè)置等級 int flag = intent.getFlags(); //得到當(dāng)前intent的標記符 if(flag == ActivityMain.FLAG_CONTINUE_LAST_GAME) {//當(dāng)遇到繼續(xù)上次游戲事件 mTetrisView.restoreGame(); //恢復(fù)上次游戲 } //得到當(dāng)前聲音設(shè)置 boolean isVoice = intent.getBooleanExtra(ActivityMain.VOICE,true); mTetris

13、View.setVoice(isVoice); //設(shè)置聲音 setContentView(mTetrisView); //設(shè)定當(dāng)前使用的視圖 } public void onPause() //暫?;顒? { mTetrisView.onPause(); super.onPause(); } public void onResume()//執(zhí)行活動 { super.onResume(); mTetrisView.onResume(); } public void onStop() //停止活動

14、{ super.onStop(); mTetrisView.saveGame(); //保存游戲 mTetrisView.freeResources(); //釋放游戲占用的資源 } } 6.2. ActivityHelp.java package com.HDU.tetris; import android.app.Activity; import android.os.Bundle; public class ActivityHelp extends Activity { //幫助窗口 public void onCreate

15、(Bundle saved) //開始 { super.onCreate(saved); setContentView(R.layout.help); //初始化幫助窗口的界面 } } 6.3. ActivityMain.java package com.HDU.tetris; // Author: HDU // 2010.3 import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; impo

16、rt android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.CheckBox; import android.widget.TextView; public class ActivityMain extends Activity { public static final int FLAG_NEW_GAME = 0; //開始新游戲 public static final int FLAG_CONTINUE_LAST_GAME

17、 = 1; //繼續(xù)上一次的游戲 public static final String FILENAME = "settingInfo"; //文件名 public static final String LEVEL = "level"; //游戲級別 public static final String VOICE = "voice"; //游戲聲音 private int mLevel = 1; //當(dāng)前游戲等級 private Button btNewgame = null; //新游戲按鈕 private Button btCont

18、inue = null; //繼續(xù)游戲按鈕 private Button btHelp = null; //幫助按鈕 private Button btRank = null; //排名按鈕 private Button btPre = null; //等級下降按鈕 private Button btNext = null; //等級上升按鈕 private Button btExit = null; //退出按鈕 private TextView tvLevel = null; //等級編輯框 private CheckBox cbVoice =

19、null; //聲音選項 /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { //創(chuàng)建,程序執(zhí)行時的第一步 super.onCreate(savedInstanceState); setContentView(R.layout.menu); //設(shè)置開始界面的菜單 btNewgame = (Button)findView

20、ById(R.id.bt_new); //通過ID查找新游戲按鈕在VIEW子控件 btContinue = (Button)findViewById(R.id.bt_continue);//繼續(xù)游戲按鈕控件 btHelp = (Button)findViewById(R.id.bt_help); //幫助按鈕控件 btRank = (Button)findViewById(R.id.bt_rank); //排名按鈕控件 btPre = (Button)findViewById(R.id.bt_pre); //等級下

21、降按鈕控件 btNext = (Button)findViewById(R.id.bt_next); //等級上升 按鈕控件 btExit = (Button)findViewById(R.id.bt_exit); //退出按鈕控件 tvLevel = (TextView)findViewById(R.id.tv_speed);//等級編輯框控件 cbVoice = (CheckBox)findViewById(R.id.cb_voice);//聲音選項框控件

22、 btNewgame.setOnClickListener(buttonListener); // 在新游戲按鈕上設(shè)置點擊監(jiān)聽器 btContinue.setOnClickListener(buttonListener);// 在繼續(xù)游戲按鈕上設(shè)置點擊監(jiān)聽器 btHelp.setOnClickListener(buttonListener); // 在幫助按鈕上設(shè)置點擊監(jiān)聽器 btRank.setOnClickListener(buttonListener); // 在排名按鈕上設(shè)置點擊監(jiān)聽器 btPre.

23、setOnClickListener(buttonListener); // 在等級下降按鈕設(shè)置點擊監(jiān)聽器 btNext.setOnClickListener(buttonListener); // 在等級上升按鈕上設(shè)置點擊監(jiān)聽器 btExit.setOnClickListener(buttonListener); // 在退出按鈕上設(shè)置點擊監(jiān)聽器 restoreSettings(); //恢復(fù)初始設(shè)置 } private Button.OnClickListener buttonListener = new

24、 Button.OnClickListener() { //按鈕上的點擊監(jiān)聽器類 @Override public void onClick(View v) { //按鈕點擊時的處理程序 if(v == btNewgame) //當(dāng)被點擊的按鈕為新游戲按鈕時 { Intent intent = new Intent(ActivityMain.this,ActivityGame.class);//在兩個Activity類之間傳輸數(shù)據(jù) intent.setFlags(FLAG_NEW_GAME); //設(shè)置標記符 intent

25、.putExtra(VOICE,cbVoice.isChecked()); //添加聲音的附加信息 intent.putExtra(LEVEL,mLevel); //添加等級的附加信息 startActivity(intent); //將此intent類傳入相應(yīng)的Activity中 return; } if(v == btContinue) //繼續(xù)游戲按鈕處理程序 { Intent intent = new Intent(ActivityMain.this,ActivityGame.class);//建立intent類

26、 intent.setFlags(FLAG_CONTINUE_LAST_GAME); //設(shè)置標記符 intent.putExtra(VOICE,cbVoice.isChecked()); //添加聲音選項的附加信息 startActivity(intent); //將此intent類傳入相應(yīng)的Activity中 return; } if(v == btHelp) //幫助按鈕的處理程序 { Intent intent = new Intent(ActivityMain.this,ActivityHelp.class);//建

27、立intent類 startActivity(intent); //將此intent類傳入相應(yīng)的Activity中 return; } if(v == btRank) //排名按鈕的處理程序 { Intent intent = new Intent(ActivityMain.this,ActivityRank.class);//建立intent類 startActivity(intent); //將此intent類傳入相應(yīng)的Activity中 return; } if(v == btPre) //等級下降

28、按鈕的才護理程序 { btPre.setBackgroundColor(0xffc0c0c0); //設(shè)置背景顏色 String s = tvLevel.getText().toString(); //從等級編輯框中獲取信息,傳入字符串中 int level = Integer.parseInt(s); //將獲取的字符串轉(zhuǎn)化為數(shù)字 --level; //等級減1 level = (level-1+TetrisView.MAX_LEVEL) % TetrisView.MAX_LEVEL;//避免等級益處標準范圍,形成循環(huán)設(shè)置

29、 ++level;//等級加1,從0~5 改為標準的1~6 s = String.valueOf(level); //將數(shù)字轉(zhuǎn)化為字符串,傳回 tvLevel.setText(s); //等級編輯框的內(nèi)容顯示為新的等級數(shù) mLevel = level; //當(dāng)前等級改為設(shè)置的等級 btPre.setBackgroundColor(0x80cfcfcf); //設(shè)置背景顏色 return; } if(v == btNext) //等級上升按鈕的處理程序 { btNext.setBackgroundColor(0

30、xffc0c0c0); //設(shè)置背景顏色 String s = tvLevel.getText().toString(); //從等級編輯框中獲取信息,傳入字符串中 int level = Integer.parseInt(s); //將獲取的字符串轉(zhuǎn)化為數(shù)字 --level;//等級減1 level = (level+1) % TetrisView.MAX_LEVEL; //避免等級益處標準范圍,形成循環(huán)設(shè)置 ++level;//等級加1,從0~5 改為標準的1~6 s = String.valueOf(level); //將數(shù)字

31、轉(zhuǎn)化為字符串,傳回 tvLevel.setText(s); //等級編輯框的內(nèi)容顯示為新的等級數(shù) mLevel = level; //當(dāng)前等級改為設(shè)置的等級 btNext.setBackgroundColor(0x80cfcfcf); //設(shè)置背景顏色 return; } if(v == btExit) //退出按鈕的處理程序 { ActivityMain.this.finish(); //結(jié)束該活動 } } }; private void saveSettings()

32、//保存設(shè)置方法 { //SharedPreferences是輕量級的存儲類,主要是保存一些常用的配置 SharedPreferences settings = getSharedPreferences(FILENAME,0);//得到當(dāng)前設(shè)置信息 settings.edit() .putInt(LEVEL,mLevel) .putBoolean(VOICE,cbVoice.isChecked()) .commit(); //將各種信息保存如settings中,完成更新設(shè)置 } p

33、rivate void restoreSettings() //恢復(fù)初始設(shè)置 { SharedPreferences settings = getSharedPreferences(FILENAME,0);//得到當(dāng)前設(shè)置信息 mLevel = settings.getInt(LEVEL,1); //等級恢復(fù)為1 boolean hasVoice = settings.getBoolean(VOICE,true); tvLevel.setText(String.valueOf(mLevel)); // 顯示初始等級到等級編輯框中

34、 cbVoice.setChecked(hasVoice); // 聲音設(shè)置為開啟 } public void onStop() //活動停止方法 { super.onStop(); saveSettings(); //保存當(dāng)前設(shè)置 } } 6.4. ActivityRank.java package com.HDU.tetris; import android.app.Activity; import android.os.Bundle; import android.widget.List

35、View; import android.widget.SimpleAdapter; import android.widget.SimpleCursorAdapter; public class ActivityRank extends Activity { //排名窗口 private RankDatabase mDatabase = null; //數(shù)據(jù)庫信息 //通過ListView控件,可將項目組成帶有或不帶有列標頭的列,并顯示伴隨的圖標和文本。 private ListView mListView = null; public void onCr

36、eate(Bundle saved) //創(chuàng)建該活動 { super.onCreate(saved); setTitle("排行榜"); //顯示標題 setContentView(R.layout.rank); //設(shè)置窗口初始化信息 } } 6.5. Court.java package com.HDU.tetris; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.

37、graphics.Paint; public class Court { //游戲窗口 public final static int COURT_WIDTH = 11; //窗口的寬度 public final static int COURT_HEIGHT = 23+4; //窗口的高度 public final static int BLOCK_WIDTH = 20; //每個格子的寬度 public final static int BLOCK_HEIGHT = 20; //每個格子的高度 public final static int AB

38、OVE_VISIBLE_TOP = 4; //允許顯示的最高點 public final static int BEGIN_DRAW_X = 0; //開始畫圖的坐標 public final static int BEGIN_DRAW_Y = TetrisView.SCREEN_HEIGHT - Court.BLOCK_WIDTH * Court.COURT_HEIGHT; private int[][] mCourt = new int[COURT_WIDTH][COURT_HEIGHT]; //保存窗口信息的數(shù)組 private Context mContex

39、t = null; //context的作用,就是android應(yīng)用連接service的橋梁。 private ResourceStore mRs = null; //應(yīng)用環(huán)境中的資源信息 public Court(Context context) { mContext = context; //保存應(yīng)用環(huán)境全局信息 mRs = new ResourceStore(context); //獲取應(yīng)用環(huán)境中的資源信息 clearCourt(); //清空游戲窗口 } public void clearCourt() //清除窗口信息

40、 { int i,j; for(i=0;i

41、] != 0) return true; } return false; } public boolean isSpace(int posX,int posY) //判斷該點是否為空 { if (posX < 0 || posX >= COURT_WIDTH) //超出行邊界線出錯 return false; if (posY < 0 || posY >= COURT_HEIGHT) //超出列邊界線出錯 return false; if(0 == mCourt[posX][posY]) //對應(yīng)數(shù)組的值為0

42、,即為空 return true; return false; } public boolean availableForTile(int[][] tile,int x,int y) //判斷該格子能否放方塊 { for (int i = 0; i < 4; i++) {//遍歷所有點 for (int j = 0; j < 4; j++) { if (tile[i][j] != 0) { if (!isSpace(x + i, y + j)) { //該點已經(jīng)有方塊占據(jù) return false;

43、 } } } } return true; } public void placeTile(TileView tile) //放置方塊 { int i,j; for (i = 0; i < 4; i++) { for (j = 0; j < 4; j++) { if (tile.mTile[i][j] != 0) //沒有被占據(jù) {//窗口中該點的位置放置相應(yīng)的方塊 mCourt[tile.getOffsetX() + i][tile.getOffsetY() + j] = ti

44、le.getColor(); } } } } public int removeLines() //消除完成了的一整行 { int high = 0; int low = COURT_HEIGHT; // 初始最低點 high = highestFullRowIndex(); //得到可消除的最高行數(shù) low = lowestFullRowIndex(); //得到可消除的最低行數(shù) int lineCount = low - high +1; //可消除的總行數(shù) if(lineCount > 0) //存

45、在可消除的行 { eliminateRows(high,lineCount); //消除找到的可消除的行 return lineCount; //返回消除的行數(shù) } return 0; } private void eliminateRows(int highRow,int rowAmount)//消除已完成的行上的方塊 { int i,j; for(i = highRow+rowAmount-1;i >= rowAmount;i--) { for(j = 0;j < COURT_WIDTH;j++) {/

46、/將待消除行上方的方塊整體向下移動,覆蓋待消除的行 mCourt[j][i] = mCourt[j][i-rowAmount]; } } } private int highestFullRowIndex() //查找已完成行的最高行數(shù) { int result = 0; boolean removeable = true; //標記是否可以消除 int i,j; for(i = 0;i < COURT_HEIGHT;i++) //從上往下遍歷 { removeable = true; for(j = 0;

47、j

48、T-1; //初始最低點 boolean removeable = true; int i,j; for(i = COURT_HEIGHT - 1;i >= 0;i--)//從下往上遍歷 { removeable = true; for(j = 0;j

49、oveable) //可消除,則找到結(jié)果,退出 break; } return result; } private void removeSingleLine(int lineIndex,int time) //消除單行 { int t,i,j; for(t = 0;t 0; i--)//將待消除行上方的方塊全部向下移動一行 { for (j = 0; j < COURT_WIDTH; j++) { mCourt[j][

50、i] = mCourt[j][i - 1];//上一行覆蓋下一行 } } } } public void paintCourt(Canvas canvas) //根據(jù)畫布信息畫游戲窗口 { //Paint 中包含了很多方法對其屬性進行設(shè)置,繪制時所使用的畫筆 Paint paint = new Paint(); paint.setAlpha(0x60); // 設(shè)置Alpha值 //對圖片添加透明效果 canvas.drawBitmap(mRs.getCourtBackground(),0, 0, paint);

51、 paint.setAlpha(0xee); for (int i = 0; i < Court.COURT_WIDTH; i++) { for (int j = 0; j < Court.COURT_HEIGHT; j++) { if (mCourt[i][j] != 0) {//畫出各個小方格 canvas.drawBitmap(mRs.getBlock(mCourt[i][j] - 1), BEGIN_DRAW_X + i * Court.BLOCK_WIDTH, BEGIN_DRAW_Y + j * Cou

52、rt.BLOCK_WIDTH, paint); } } } } public int[][] getMatrix() //得到游戲窗口的數(shù)組 { return mCourt; } } 6.6. DrawTool.java package com.HDU.tetris; import android.graphics.Bitmap; import android.graphics.Canvas; public class DrawTool { public static void paintIma

53、ge(Canvas canvas,Bitmap bitmap,int x,int y) { canvas.drawBitmap(bitmap,x,y,null); //在指定位置繪制圖象 } } 6.7. MusicPlayer.java package com.HDU.tetris; import android.content.Context; import android.media.MediaPlayer; public class MusicPlayer { private MediaPlayer mMoveVoice = nul

54、l; //創(chuàng)建移動時的聲音類 private MediaPlayer mBombVoice = null; //創(chuàng)建炸毀時的聲音類 private boolean mIsMute = false; public MusicPlayer(Context context) { mMoveVoice = MediaPlayer.create(context,R.raw.move); //指定相應(yīng)的音樂 mBombVoice = MediaPlayer.create(context,R.raw.bomb); } public void playM

55、oveVoice() { if(mIsMute) return; mMoveVoice.start();//開始播放音樂 } public void playBombVoice() { if(mIsMute) { return; } mBombVoice.start(); //開始播放音樂 } public void setMute(boolean b) //設(shè)置變量的值 { mIsMute = b; } public void free() //釋放 { mMoveVoi

56、ce.release(); //結(jié)束該類的生命周期 mBombVoice.release(); } } 6.8. RankDatabase.java package com.HDU.tetris; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.data

57、base.sqlite.SQLiteDatabase.CursorFactory; public class RankDatabase { private static final String TAG = "RankDatabase"; //標記 private static final String DB_NAME = "rank.db"; //數(shù)據(jù)庫名 private static final String DB_TABLE = "table1"; //數(shù)據(jù)庫表格 private static final int DB_VERSION = 1; //

58、數(shù)據(jù)庫視圖 private static final String KEY_ID = "_id"; //id public static final String KEY_RANK = "rank"; //排名 public static final String KEY_SCORE = "score"; //成績 public static final String KEY_NAME = "name"; //用戶名字 private static final String DB_CREATE = "CREATE TABLE " + DB_TABLE +

59、 " (" + KEY_ID + " INTEGER PRIMARY_KEY," + KEY_RANK + " INTEGER," + KEY_SCORE + " INTEGER" + KEY_NAME + " TEXT)"; //數(shù)據(jù)庫查詢語句 private Context mContext = null; //應(yīng)用環(huán)境全局信息 private SQLiteDatabase mDatabase = null; ////用于管理和操作SQLite數(shù)據(jù)庫 private DatabaseHelper mHelper = null; //數(shù)據(jù)庫連

60、接字符串 public void RankDatabase(Context context) { mContext = context; //保存應(yīng)用環(huán)境 } private static class DatabaseHelper extends SQLiteOpenHelper { public DatabaseHelper(Context context)//管理相應(yīng)的數(shù)據(jù)庫 { super(context, DB_NAME, null, DB_VERSION); } @Override public vo

61、id onCreate(SQLiteDatabase db) //創(chuàng)建活動 { db.execSQL(DB_CREATE); //執(zhí)行數(shù)據(jù)庫語句 } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)//數(shù)據(jù)庫升級 { } } public void open() //打開數(shù)據(jù)庫 { mHelper = new DatabaseHelper(mContext);//建立數(shù)據(jù)庫管理 mDatab

62、ase = mHelper.getWritableDatabase();//得到可寫數(shù)據(jù)庫 } public void close() //關(guān)閉數(shù)據(jù)庫 { mHelper.close();//關(guān)閉數(shù)據(jù)庫管理 } } 6.9. RefreshHandle.java package com.HDU.tetris; import android.os.Handler; import android.os.Message; import android.util.Log; class RefreshHandler extends Handler

63、{ final static int MESSAGE_REFRESH = 0xeeeeeeee; final static int DELAY_MILLIS = 100; //延遲時間 TetrisView mV = null; //游戲視圖 boolean mIsPaused = false; //暫停標記 public RefreshHandler(TetrisView v) //構(gòu)造函數(shù) { super(); mV = v; } public void handleMessage(Message ms) //信息處理 {

64、 if( !mIsPaused ) //不是暫停狀態(tài) { if(ms.what == MESSAGE_REFRESH) //消息編碼更新時 { mV.logic(); // mV.invalidate(); //重繪游戲窗口 } } } public void pause() //暫?;顒? { mIsPaused = true; //標記為暫停 } public void resume() //恢復(fù)運行 { mIsPaused = false; //改變暫停標記 }

65、} 6.10. ResourceStore.java package com.HDU.tetris; import android.content.Context; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; // Resou

66、rceStore是一個Singleton public class ResourceStore { private static Bitmap mBackground = null; //背景圖片 private static Bitmap[] mBlocks = null; //方塊圖片 private static Bitmap mMenuBackground = null; //菜單背景圖片 private static Bitmap mMenu = null; //菜單圖片 private static Bitmap mSpeed = null; //速度 private static Bitmap mLine = null; // private static Bitmap mScore = null; //分數(shù) private static Bitmap mGameover = null; //游戲結(jié)束 private Context mContext = null; //應(yīng)用環(huán)境全局信息 private R

展開閱讀全文
溫馨提示:
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)容負責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!