标签:
目标效果:
游戏页面有几个小游戏,因为时间原因只做了第一个猜成语,是用的选择题方式,十道题以内答对六题算闯关成功。
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>
<?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><?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>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;
@Override
protected 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;
}
}
}
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 {
@Override
protected 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;
}
}
}
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;
}
}
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;
@Override
protected 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();
else
answer = 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);
}
}
标签:
原文地址:http://blog.csdn.net/hester_hester/article/details/51671704