Android小程式-樂學成語遊戲(四)

來源:互聯網
上載者:User

標籤:

目標效果:

  

 

遊戲頁面有幾個小遊戲,因為時間原因只做了第一個猜成語,是用的選擇題方式,十道題以內答對六題算闖關成功。


1.建立GameActivity.java頁面和activity_game.xml頁面,activity_game.xml作為顯示遊戲目錄頁面:

activity_game.xml頁面:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="@drawable/bg_ling"    android:orientation="vertical"    tools:context=".GameActivity" >    <TextView        android:id="@+id/tvGameGuess"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center"        android:layout_marginTop="50dp"        android:clickable="true"        android:onClick="gamePlay"        android:text="@string/tvGameGuess"        android:textColor="#000000"        android:textSize="23sp" />    <TextView        android:id="@+id/tvGameWrite"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center"        android:layout_marginTop="30dp"        android:clickable="true"        android:onClick="gamePlay"        android:text="@string/tvGameWrite"        android:textColor="#000000"        android:textSize="23sp" />    <TextView        android:id="@+id/tvGameConn"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center"        android:layout_marginTop="30dp"        android:clickable="true"        android:onClick="gamePlay"        android:text="@string/tvGameConn"        android:textColor="#000000"        android:textSize="23sp" /></LinearLayout>


2.建立GameGuessActivity.java頁面和activity_game_guess.xml頁面,activity_game_guess.xml頁面顯示猜成語遊戲規則。activity_game_guess.xml頁面:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="@drawable/bg_animal"    android:orientation="vertical" >    <TextView        android:id="@+id/tvGuessHelp"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center"        android:layout_marginTop="60dp"        android:text="@string/tvGuessHelp"        android:textColor="#000000"        android:textSize="25sp" />    <!-- android:background="#00ffffff"去掉邊緣 -->    <ImageButton        android:id="@+id/ibStartGame"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginLeft="150dp"        android:layout_marginTop="300dp"        android:background="#00ffffff"        android:onClick="startGame"        android:src="@drawable/btnstart" /></LinearLayout>


3.建立PlayGuessActivity.java頁面和activity_play_guess.xml頁面,activity_play_guess.xml頁面作為猜成語遊戲介面。activity_play_guess.xml頁面:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="@drawable/bg_animal"    android:orientation="vertical" >    <!-- 始終使TextView顯示在中間 -->    <TextView        android:id="@+id/tvExplain"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center"        android:layout_marginTop="50dp"        android:text="TextView"        android:textColor="#000000"        android:textSize="22sp" />    <TextView        android:id="@+id/tvRightOrWrong"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center"        android:layout_marginTop="70dp"        android:text=" "        android:textColor="#08c50d"        android:textSize="22sp" />    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_marginBottom="60dp"        android:orientation="vertical" >        <RadioGroup            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:orientation="vertical" >            <RadioButton                android:id="@+id/rbPhraseOne"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_marginLeft="120dp"                android:textColor="#000000"                android:textSize="20sp" />            <RadioButton                android:id="@+id/rbPhraseTwo"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_marginLeft="120dp"                android:textColor="#000000"                android:textSize="20sp" />            <RadioButton                android:id="@+id/rbPhraseThree"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_marginLeft="120dp"                android:textColor="#000000"                android:textSize="20sp" />            <RadioButton                android:id="@+id/rbPhraseFour"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_marginLeft="120dp"                android:textColor="#000000"                android:textSize="20sp" />        </RadioGroup>    </LinearLayout>    <LinearLayout        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center"        android:layout_marginBottom="30dp"        android:orientation="horizontal" >        <ImageButton            android:id="@+id/ibSubmit"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:background="#00ffffff"            android:onClick="AnswerSubmit"            android:src="@drawable/btnsubmit" />        <ImageButton            android:id="@+id/ibNext"            android:layout_marginLeft="70dp"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:background="#00ffffff"            android:onClick="AnswerSubmit"            android:src="@drawable/btnnext" />    </LinearLayout></LinearLayout>


4.GameActivity.java頁面跳轉每一個遊戲頁面。GameActivity.java頁面:
package cn.edu.bztc.happyidion.activity;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.view.Menu;import android.view.View;import android.widget.TextView;public class GameActivity extends Activity {private Intent intent;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_game);}public void gamePlay(View view) {switch (view.getId()) {case R.id.tvGameGuess:intent=new Intent(this,GameGuessActivity.class);startActivity(intent);break;case R.id.tvGameConn:break;default:break;}}}


5.GameGuessActivity.java頁面點擊編寫開始遊戲點擊事件。GameGuessActivity.java頁面:
package cn.edu.bztc.happyidion.activity;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.view.Menu;import android.view.View;public class GameGuessActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_game_guess);}public void startGame(View view){switch (view.getId()) {case R.id.ibStartGame:Intent intent=new Intent(this,PlayGuessActivity.class);startActivity(intent);finish();break;default:break;}}}


6.GameDao.java頁面定義遊戲中對成語表的查詢方法。GameDao.java頁面:
package cn.edu.bztc.happyidiom.dao;import java.util.ArrayList;import java.util.List;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.util.Log;import cn.edu.bztc.happyidiom.db.DBOpenHelper;import cn.edu.bztc.happyidiom.db.MyDatabaseHelper;import cn.edu.bztc.happyidiom.entity.Animal;public class GameDao {private static GameDao gameDao;private SQLiteDatabase db;public GameDao(Context context){DBOpenHelper dbHelper=new DBOpenHelper(context);db=dbHelper.openDatabase();}public synchronized static GameDao getInstance(Context context){if(gameDao==null){gameDao=new GameDao(context);}return gameDao;}/*根據id擷取成語資訊*/public Animal getPhrase(String id){Animal animal = null;Cursor cursor=db.query("animal",null,"_id=?",new String[]{id},null,null,null);if(cursor.moveToFirst()){animal=new Animal();animal.setId(cursor.getInt(cursor.getColumnIndex("_id")));animal.setName(cursor.getString(cursor.getColumnIndex("name")));animal.setPronounce(cursor.getString(cursor.getColumnIndex("pronounce")));animal.setAntonym(cursor.getString(cursor.getColumnIndex("antonym")));animal.setHomoionym(cursor.getString(cursor.getColumnIndex("homoionym")));animal.setDerivation(cursor.getString(cursor.getColumnIndex("derivation")));animal.setExamples(cursor.getString(cursor.getColumnIndex("examples")));animal.setExplain(cursor.getString(cursor.getColumnIndex("explain")));}cursor.close();return animal;}}


7.PlayGuessActivity.java頁面為遊戲介面。PlayGuessActivity.java頁面:
package cn.edu.bztc.happyidion.activity;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Random;import cn.edu.bztc.happyidiom.dao.AnimalDao;import cn.edu.bztc.happyidiom.dao.GameDao;import cn.edu.bztc.happyidiom.entity.Animal;import android.R.color;import android.os.Bundle;import android.os.IBinder;import android.app.Activity;import android.content.SharedPreferences;import android.content.SharedPreferences.Editor;import android.graphics.Color;import android.util.Log;import android.view.Menu;import android.view.View;import android.widget.ImageButton;import android.widget.RadioButton;import android.widget.TextView;public class PlayGuessActivity extends Activity {int score=0;// 總成績int number=1;// 題目數目private TextView tvRightOrWrong;private ImageButton ibNext,ibSubmit;private Random random;// 隨機數private AnimalDao animalDao;private GameDao gameDao;private List<Animal> animalList;private Animal animal, animalTwo, animalThree, animalFour;// 隨機產生的成語對象private SharedPreferences pref;private Editor editor;private int[] array = { 5, 5, 5, 5 };// 整形數組,用於產生隨機順序顯示選項private String answer;// 選擇的答案private TextView tvExplain;private RadioButton rbPhraseOne, rbPhraseTwo, rbPhraseThree, rbPhraseFour;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_play_guess);tvExplain = (TextView) findViewById(R.id.tvExplain);rbPhraseOne = (RadioButton) findViewById(R.id.rbPhraseOne);rbPhraseTwo = (RadioButton) findViewById(R.id.rbPhraseTwo);rbPhraseThree = (RadioButton) findViewById(R.id.rbPhraseThree);rbPhraseFour = (RadioButton) findViewById(R.id.rbPhraseFour);tvRightOrWrong = (TextView) findViewById(R.id.tvRightOrWrong);ibSubmit=(ImageButton) findViewById(R.id.ibSubmit);ibNext=(ImageButton) findViewById(R.id.ibNext);pref = getSharedPreferences("FourPhrase", MODE_PRIVATE);// 將正確成語和隨機產生的三個成語儲存到文檔editor = pref.edit();// 擷取SharedPreferences.Editor對象/* 擷取隨機值對應的成語解釋 */getNumber();/* 顯示解釋到TextView */showPhrase();/* 擷取三個隨機成語和一個正確成語的選項 */getFourPhrase();/* 顯示到RadioButton */showRadiButton();}/* 擷取隨機值對應的成語 */private void getNumber() {animalList = new ArrayList<Animal>();animalDao = AnimalDao.getInstance(this);animalList = animalDao.getAllAnimals();random = new Random();String id = Integer.toString(random.nextInt(animalList.size()));gameDao = GameDao.getInstance(this);animal = gameDao.getPhrase(id);animalList = new ArrayList<Animal>();animalDao = AnimalDao.getInstance(this);animalList = animalDao.getAllAnimals();}/* 顯示解釋到頁面 */private void showPhrase() {tvExplain.setText(animal.getExplain());}/* 擷取四個成語選項 */private void getFourPhrase() {random = new Random();String two = null, three = null, four = null;two = Integer.toString(random.nextInt(animalList.size()));three = Integer.toString(random.nextInt(animalList.size()));four = Integer.toString(random.nextInt(animalList.size()));gameDao = GameDao.getInstance(this);animalTwo = gameDao.getPhrase(two); // 擷取隨機產生值對應的成語animalThree = gameDao.getPhrase(three);animalFour = gameDao.getPhrase(four);editor.putString("0", animal.getName());// 將四個成語存入文檔editor.putString("1", animalTwo.getName());editor.putString("2", animalThree.getName());editor.putString("3", animalFour.getName());editor.commit();int no;for (int i = 0; i < array.length; i++) { // 隨機產生四個不重複的值作為顯示順序no = random.nextInt(4);int j;for (j = 0; j <= i; j++) {if (no == array[j]) {i--;break;}}if (j == i + 1) {array[i] = no;}}Log.i("MainActivity", "0:" + array[0] + "1:" + array[1] + "2:"+ array[2] + "3:" + array[3]);}/* 顯示到RadioButton */private void showRadiButton() {rbPhraseOne.setText(pref.getString(Integer.toString(array[0]), ""));rbPhraseTwo.setText(pref.getString(Integer.toString(array[1]), ""));rbPhraseThree.setText(pref.getString(Integer.toString(array[2]), ""));rbPhraseFour.setText(pref.getString(Integer.toString(array[3]), ""));}/* 提交答案 */public void AnswerSubmit(View view) {switch (view.getId()) {case R.id.ibSubmit:if (rbPhraseOne.isChecked())answer = rbPhraseOne.getText().toString();else if (rbPhraseTwo.isChecked())answer = rbPhraseTwo.getText().toString();else if (rbPhraseThree.isChecked())answer = rbPhraseThree.getText().toString();elseanswer = rbPhraseFour.getText().toString();if (answer == animal.getName()) {tvRightOrWrong.setText("真棒,回答正確");tvRightOrWrong.setTextColor(Color.rgb(7, 200, 12));ibSubmit.setClickable(false);      //回答正確或錯誤,提交按鈕不能被點擊,防止一個一個嘗試擷取答案加分score+=10;} else {tvRightOrWrong.setText("啊偶,回答錯了");tvRightOrWrong.setTextColor(Color.rgb(255, 00, 00));ibSubmit.setClickable(false);}if(score==60&&number<=10){tvRightOrWrong.setText("恭喜,闖關成功");tvRightOrWrong.setTextColor(Color.rgb(7, 200, 12));ibNext.setClickable(false);      //闖關成功或失敗,下一道題的按鈕不能被點擊}else if(score<=60&&number>=10){tvRightOrWrong.setText("抱歉,闖關失敗");tvRightOrWrong.setTextColor(Color.rgb(255, 00, 00));ibNext.setClickable(false);}break;case R.id.ibNext:   //產生下一道題clearPhrase();//清空TextView和RadioButton屬性getNumber();    showPhrase();getFourPhrase();showRadiButton();number+=1;  //題目數目加一break;}}public void clearPhrase(){     //跳到下一道題,刪除之前控制項的屬性tvRightOrWrong.setText(" ");      //清空提示ibSubmit.setClickable(true);    //提交按鈕可以點擊rbPhraseOne.setChecked(false);    //選項按鈕都不被選中rbPhraseTwo.setChecked(false);rbPhraseThree.setChecked(false);rbPhraseFour.setChecked(false);}}


8.源碼分享:點擊開啟連結

9.時間原因頁面並沒有美化,介面布局也有些問題,暫時只能提供簡單學習,請諒解。











Android小程式-樂學成語遊戲(四)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.