运行效果:
主界面配置文件:activity_main.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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:id="@+id/cmpShow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:text="@string/cmpShow" />
<TextView
android:id="@+id/playerShow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginRight="20dp"
android:text="@string/playerShow" />
<ImageButton
android:id="@+id/btnRock"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@id/playerShow"
android:layout_below="@id/playerShow"
android:layout_marginTop="10dp"
android:contentDescription="@string/rockDes"
android:src="@drawable/rock"
android:layout_marginRight="20dp"/>
<ImageButton
android:id="@+id/btnPaper"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@id/btnRock"
android:layout_below="@id/btnRock"
android:layout_marginTop="10dp"
android:contentDescription="@string/paperDes"
android:src="@drawable/paper"
android:layout_marginRight="20dp" />
<ImageView
android:id="@+id/viewCmp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@id/btnPaper"
android:layout_below="@id/cmpShow"
android:contentDescription="@string/cmpViewDes"
android:layout_marginLeft="20dp" />
<ImageButton
android:id="@+id/btnSci"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@id/btnPaper"
android:layout_below="@id/btnPaper"
android:layout_marginTop="10dp"
android:contentDescription="@string/scissorsDes"
android:src="@drawable/scissors"
android:layout_marginRight="20dp" />
<TextView
android:id="@+id/textResult"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@id/cmpShow"
android:layout_below="@id/btnSci"
android:layout_marginTop="20dp"
android:text="@string/result"
android:textColor="#0fffff"
android:textSize="20sp" />
</RelativeLayout>
strings.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">石头剪子布</string>
<string name="action_settings">Settings</string>
<string name="cmpShow">计算机出拳:</string>
<string name="playerShow">玩家出拳:</string>
<string name="rockDes">石头</string>
<string name="paperDes">剪刀</string>
<string name="scissorsDes">布</string>
<string name="cmpViewDes">电脑出拳</string>
<string name="result">判定输赢:</string>
<string name="result_win">恭喜您,您赢了!</string>
<string name="result_lose">运气不好,再来一次!</string>
<string name="result_draw">再努力一点!</string>
</resources>
res资源结构:
MainActivity.java文件:
package cn.yh.rpsgame;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
public class MainActivity extends Activity {
private ImageButton r_imgBtn, p_imgBtn, s_imgBtn;
private ImageView cmp_imgView;
private TextView reslut_tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
r_imgBtn = (ImageButton) findViewById(R.id.btnRock);
p_imgBtn = (ImageButton) findViewById(R.id.btnPaper);
s_imgBtn = (ImageButton) findViewById(R.id.btnSci);
cmp_imgView = (ImageView) findViewById(R.id.viewCmp);
reslut_tv = (TextView) findViewById(R.id.textResult);
MyOnClickListener myOnClickListener = new MyOnClickListener();
r_imgBtn.setOnClickListener(myOnClickListener);
p_imgBtn.setOnClickListener(myOnClickListener);
s_imgBtn.setOnClickListener(myOnClickListener);
}
private class MyOnClickListener implements OnClickListener {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
int randCmp = (int) (Math.random() * 3 + 1);
switch (randCmp) {
case 1:
cmp_imgView.setImageResource(R.drawable.rock);
switch (v.getId()) {
case R.id.btnRock:
reslut_tv.setText(getString(R.string.result)
+ getString(R.string.result_draw));
break;
case R.id.btnPaper:
reslut_tv.setText(getString(R.string.result)
+ getString(R.string.result_win));
break;
case R.id.btnSci:
reslut_tv.setText(getString(R.string.result)
+ getString(R.string.result_lose));
break;
}
break;
case 2:
cmp_imgView.setImageResource(R.drawable.paper);
switch (v.getId()) {
case R.id.btnRock:
reslut_tv.setText(getString(R.string.result)
+ getString(R.string.result_lose));
break;
case R.id.btnPaper:
reslut_tv.setText(getString(R.string.result)
+ getString(R.string.result_draw));
break;
case R.id.btnSci:
reslut_tv.setText(getString(R.string.result)
+ getString(R.string.result_win));
break;
}
break;
case 3:
cmp_imgView.setImageResource(R.drawable.scissors);
switch (v.getId()) {
case R.id.btnRock:
reslut_tv.setText(getString(R.string.result)
+ getString(R.string.result_win));
break;
case R.id.btnPaper:
reslut_tv.setText(getString(R.string.result)
+ getString(R.string.result_lose));
break;
case R.id.btnSci:
reslut_tv.setText(getString(R.string.result)
+ getString(R.string.result_draw));
break;
}
break;
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}