猜拳小遊戲的效果圖如下,實現的方法有些繁瑣:
第一步:先對界面進行佈局,編寫activity_guessgame.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:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="@dimen/padding_medium"
android:text="@string/title"
tools:context=".GuessgameActivity"
android:textSize="20sp"/>
<RadioGroup
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RadioButton
android:id="@+id/stone"
android:text="@string/stone"/>
<RadioButton
android:id="@+id/dao"
android:text="@string/dao"/>
<RadioButton
android:id="@+id/bu"
android:text="@string/bu"/>
</RadioGroup>
<Button
android:id="@+id/submit"
android:text="@string/submit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="submit"/>
</LinearLayout>
第二步:因爲要跳轉到另一個頁面,編寫activity_another.xml,代碼如下:
<RelativeLayout 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" >
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="@dimen/padding_medium"
tools:context=".AnotherActivity" />
</RelativeLayout>
第三步:編寫電腦類和玩家類,兩個類的代碼如下:
package com.bzu.guessgame.entity;
public class Computer {
private String stone="石頭";
private String dao="剪刀";
private String bu="布";
public String getStone() {
return stone;
}
public String getDao() {
return dao;
}
public String getBu() {
return bu;
}
public String getWord(int num){
if(num==0){
return getStone();
}
if(num==1){
return getDao();
}
if(num==2){
return getBu();
}
return null;
}
}
package com.bzu.guessgame.entity;
public class Player {
private String stone="石頭";
private String dao="剪刀";
private String bu="布";
public String getStone() {
return stone;
}
public String getDao() {
return dao;
}
public String getBu() {
return bu;
}
public String getWord(int num){
if(num==0){
return getStone();
}
if(num==1){
return getDao();
}
if(num==2){
return getBu();
}
return null;
}
}
第四步:編寫比較類,比較誰贏誰輸,代碼如下(有點繁瑣):
package com.bzu.guessgame.biz;
import java.util.Random;
import com.bzu.guessgame.entity.Computer;
import com.bzu.guessgame.entity.Player;
public class Compare {
Player player=new Player();
Computer computer=new Computer();
String compare="";
public int getNum(){
Random random=new Random();
int num=random.nextInt(2);
return num;
}
public String getCompare(int play){
int compute=getNum();
if(compute==0){
if(play==2){
compare="玩家:"+player.getWord(play)+" VS 電腦:"+computer.getWord(compute)+"\n玩家贏!";
return compare;
}
if(play==1){
compare="電腦:"+computer.getWord(compute)+" VS 玩家:"+player.getWord(play)+"\n電腦贏!";
return compare;
}
if(play==0){
compare="玩家:"+player.getWord(play)+" VS 電腦:"+computer.getWord(compute)+"\n平局!";
return compare;
}
}
if(compute==1){
if(play==0){
compare="玩家:"+player.getWord(play)+" VS 電腦:"+computer.getWord(compute)+"\n玩家贏!";
return compare;
}
if(play==2){
compare="電腦:"+computer.getWord(compute)+" VS 玩家:"+player.getWord(play)+"\n電腦贏!";
return compare;
}
if(play==1){
compare="玩家:"+player.getWord(play)+" VS 電腦:"+computer.getWord(compute)+"\n平局!";
return compare;
}
}
if(compute==2){
if(play==1){
compare="玩家:"+player.getWord(play)+" VS 電腦:"+computer.getWord(compute)+"\n玩家贏!";
return compare;
}
if(play==0){
compare="電腦:"+computer.getWord(compute)+" VS 玩家:"+player.getWord(play)+"\n電腦贏!";
return compare;
}
if(play==2){
compare="玩家:"+player.getWord(play)+" VS 電腦:"+computer.getWord(compute)+"\n平局!";
return compare;
}
}
return null;
}
}
第五步:編寫GuessGameActivity類,代碼如下:
package com.bzu.guessgame.activity;
import com.bzu.guessgame.biz.Compare;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.RadioButton;
import android.support.v4.app.NavUtils;
public class GuessgameActivity extends Activity {
Compare compare=new Compare();
String message;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_guessgame);
}
public void submit(View v){
RadioButton stone=(RadioButton) this.findViewById(R.id.stone);
RadioButton dao=(RadioButton) this.findViewById(R.id.dao);
RadioButton bu=(RadioButton) this.findViewById(R.id.bu);
int num;
if(stone.isChecked()){
num=0;
message=compare.getCompare(num);
}
if(dao.isChecked()){
num=1;
message=compare.getCompare(num);
}
if(bu.isChecked()){
num=2;
message=compare.getCompare(num);
}
Intent intent=new Intent(GuessgameActivity.this, AnotherActivity.class);
Bundle bundle=new Bundle();
bundle.putString("message", message);
intent.putExtras(bundle);
startActivity(intent);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_guessgame, menu);
return true;
}
}
第六步:因爲要跳轉到另一個activity,進行傳值,接下來編寫AnotherActivity類,代碼如下:
package com.bzu.guessgame.activity;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
import android.support.v4.app.NavUtils;
public class AnotherActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_another);
TextView text=(TextView) this.findViewById(R.id.text);
Intent intent=this.getIntent();
Bundle bundle=intent.getExtras();
String message=bundle.getString("message");
text.setText(message);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_another, menu);
return true;
}
}
其他:strings.xml中代碼如下:
<resources>
<string name="app_name">GuessGame</string>
<string name="title">請您選擇要出的拳:</string>
<string name="stone">石頭</string>
<string name="dao">剪刀</string>
<string name="bu">布</string>
<string name="submit">出拳</string>
<string name="menu_settings">Settings</string>
<string name="title_activity_guessgame">猜拳小遊戲</string>
<string name="hello_world">Hello world!</string>
<string name="title_activity_another">顯示結果</string>
</resources>
至此,就可以實現猜拳小遊戲。