猜拳小遊戲

猜拳小遊戲的效果圖如下,實現的方法有些繁瑣:

第一步:先對界面進行佈局,編寫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>

至此,就可以實現猜拳小遊戲。



發佈了25 篇原創文章 · 獲贊 1 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章