日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

使用Android studio开发一个数独游戏APP 系列第二讲

發布時間:2024/3/24 Android 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Android studio开发一个数独游戏APP 系列第二讲 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

游戲主界面類名稱:MainActivity.java,負責顯示游戲主操作界面,提供調用其他類的接口。


其中issave變量用于控制是否顯示繼續游戲按鈕,當第一次運行游戲時,不顯示該按鈕,所以設置一個boolean量issave用于控制主界面顯示的Button,當暫停游戲或者退出游戲時,設置issave變量為true,當完成游戲后設置為false。
在onResume()中判斷issave的值通過對數據庫的訪問判斷issave的值,去設置是否顯示繼續游戲的按鈕是否為可見。
其中定義一個廣播接受者用來接收是否已完成數獨。完成的話從當前表中刪除。同時設置butt_backgame不可見。

?

IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction("cn.abel.action.over"); this.registerReceiver(new MyBroadcastReciver(), intentFilter);//創建一廣播類并繼承BroadcastReceiverprivate class MyBroadcastReciver extends BroadcastReceiver { @Overridepublic void onReceive(Context context, Intent intent) {String action = intent.getAction();if(action.equals("cn.abel.action.over")) {String author = intent.getStringExtra("author");issave=false;//設置標記量為假System.out.println("mianzhong jieshoh");Button butt_backgame=(Button) findViewById(R.id.butt_backgame);butt_backgame.setVisibility(View.INVISIBLE);}}}

(1)游戲難度選擇

游戲關卡選擇模塊主要包括游戲難度等級選擇。游戲難度等級選擇如圖4.5所示。

游戲難度選擇通過實例化一個AlertDialog來實現,傳入定義好的難度數組XML,監聽選擇的項,將索引值傳遞給游戲開始類GameActivity.java。

protected Dialog onCreateDialog(int id) {Dialog dialog = null;switch (id) {case LISTDIALOG:Builder builder = new AlertDialog.Builder(this);builder.setTitle("難度選擇");DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialogInterface, int which) {if (which == 4) {Intent intent = new Intent();intent.setClass(MainActivity.this, MyGameActivity.class);startActivity(intent);} else {String Str_nandu = getResources().getStringArray(R.array.hobby)[which];Intent intent = new Intent();intent.putExtra("nandu", String.valueOf(which));intent.setClass(MainActivity.this, GameActivity.class);startActivity(intent);}}};builder.setItems(R.array.hobby, listener);dialog = builder.create();break;}return dialog;}

點擊繼續游戲按鈕,進入繼續游戲模塊。

(1)定義一個廣播接收,接收是否完成游戲。從數據庫獲取當前游戲時間,并開啟線程計時。

DataBaseHelper dbHelper = new DataBaseHelper(BackgameActivity.this, "save_table", null,1);SQLiteDatabase db = dbHelper.getWritableDatabase();Cursor cursor = db.query("save_table", new String[] { "id","sshudu", "mshudu","time"},null,null, null, null, null);while (cursor.moveToNext()) {t = cursor.getString(cursor.getColumnIndex("time"));}int a[]=Timer.getTime(t);h=a[0];m=a[1];s=a[2]; handler.post(HandlerThread); Runnable HandlerThread = new Runnable() {public void run() {if (s < 60){s += 1;} else if (m < 60) {m += 1;s = 1;} else {h += 1;m = 1;s = 1;}handler.postDelayed(HandlerThread, 1000);}};

(2)在onPause()中停止計時,以及判斷是否完成游戲,完成則發送廣播到MainActivity,否則保存數據到數據庫。

protected void onPause() {

???????????? // TODO Auto-generated method stub

???????????? handler.removeCallbacks(HandlerThread);

???????????? if(!is_over){

??????????????????? save();

???????????? }else{

???????????? ??? Intent overintent = new Intent();

???????????? ??? overintent.setAction("cn.abel.action.over");

??????????????????? ?? //要發送的內容

???????????? ??? overintent.putExtra("author", "true");

??????????????????? ?? //發送 一個無序廣播

???????????? ??? BackgameActivity.this.sendBroadcast(overintent);

???????????? }

???????????? super.onPause();

????? }

保存游戲執行save()方法:得到一個可寫的數據save_table用來存儲當前進行的游戲進度及所用時間。插入時先把之前的數據刪除并存入當前數據,關閉數據庫。

public void save(){

???????????? String save_shudu=BackView.tiles;

???????????? String msave_shudu=BackView.newtiles;

???????????? DataBaseHelper dbHelper = new DataBaseHelper(BackgameActivity.this, "save_table", null,1);

???????????? // 得到一個可寫的數據庫

???????????? SQLiteDatabase db = dbHelper.getWritableDatabase();

???????????? String whereClauses = "id=?";

???????????? String[] whereArgs = { String.valueOf(0) };

???????????? // 調用delete方法,刪除數據

???????????? db.delete("save_table", whereClauses, whereArgs);

???????????? System.out.println("刪除ID為0");

???????????? // 生成ContentValues對象 //key:列名,value:想插入的值

???????????? ContentValues cv = new ContentValues();

???????????? // 往ContentValues對象存放數據,鍵-值對模式

???????????? cv.put("id", 0);

???????????? cv.put("sshudu", save_shudu);

???????????? cv.put("mshudu", msave_shudu);

???????????? // 調用insert方法,將數據插入數據庫

???????????? db.insert("save_table", null, cv);

???????????? // 關閉數據庫

???????????? db.close();

????? }

總結

以上是生活随笔為你收集整理的使用Android studio开发一个数独游戏APP 系列第二讲的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。