对象关联
理解:
一个对象中又用到了另一个对象,或者说属性的定义类型为对象类型
package cn.java.homework;
import java.util.Scanner;
public class Homwork {
@SuppressWarnings("resource")
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("----------------欢迎进入游戏世界-----------------");
System.out.println("\t\t*************");
System.out.println("\t\t** 猜拳,开始**");
System.out.println("\t\t*************");
System.out.println();
System.out.println("出拳规则:1.剪刀 2.石头 3.布");
System.out.print("请选择对方角色(1:刘备 2:孙权3:曹操):");
do {
Compute compute = new Compute();
int choicRole = input.nextInt();
switch (choicRole) {
case 1:
compute.name = "刘备";
break;
case 2:
compute.name = "孙权";
break;
case 3:
compute.name = "曹操";
break;
default:
System.out.println("输入错误!");
break;
}
System.out.print("请输入你的姓名:");
User user = new User();
user.name = input.next();
Games games = new Games();
games.initialize(user,compute);
System.out.print("要开始吗?(y/n):");
char begin = input.next().charAt(0);
switch (begin) {
case 'y':
case 'Y':
games.beginGames();
break;
case 'n':
case 'N':
System.out.println("游戏结束,程序退出!");
break;
default:
System.out.println("输入错误,程序退出!");
break;
}
games.countResult();
boolean flag = true;
do {
games.fightTimes++;
System.out.print("是否开始下一轮?(y/n):");
char next = input.next().charAt(0);
switch (next) {
case 'y':
case 'Y':
games.beginGames();
games.countResult();
break;
case 'n':
case 'N':
games.showResult();
flag = false;
break;
default:
System.out.println("输入错误,程序退出!");
break;
}
}while(flag);
} while (true);
}
public static class User{
String name;
int integral;
public String punch(int a) {
String str = "";
switch (a) {
case 1:
str = "剪刀";
break;
case 2:
str = "石头";
break;
case 3:
str = "布";
break;
default:
System.out.println("输入错误,程序结束!");
break;
}
return str;
}
}
public static class Compute{
String name;
int integral;
public String punch() {
String str = "";
int a = (int)(Math.random()*3)+1;
switch (a) {
case 1:
str = "剪刀";
break;
case 2:
str = "石头";
break;
case 3:
str = "布";
break;
default:
System.out.println("输入错误,程序结束!");
break;
}
return str;
}
}
public static class Games{
User playerA;//甲方玩家
Compute playerB;//乙方玩家
int fightTimes = 0;//对战次数
Scanner input = new Scanner(System.in);
int temp1 =0,temp2 =0;
String playerAPunch = "";
public void initialize(User a,Compute b) {
playerA = a;
playerB = b;
System.out.println(playerA.name+"\tVS\t" +playerB.name +"对战");
}
public void beginGames() {
System.out.print("请出拳:1.剪刀2.石头3.布(输入相应数字):");
playerAPunch = playerA.punch(input.nextInt());
System.out.println("你出拳:"+playerAPunch);
System.out.println(playerB.name+"出拳:"+playerB.punch());
}
public void countResult() {
if (playerAPunch.equals(playerB.punch())) {
System.out.println("平局!");
}
if (playerAPunch.equals("石头")) {
if(playerB.punch().equals("剪刀")) {
System.out.println("结果:你赢了!");
playerA.integral++;
}else {
System.out.println("结果:"+playerB.name+"赢!");
playerB.integral++;
}
}
if (playerAPunch.equals("剪刀")) {
if(playerB.punch().equals("布")) {
System.out.println("结果:你赢了!");
playerA.integral++;
}else {
System.out.println("结果:"+playerB.name+"赢!");
playerB.integral++;
}
}
if (playerAPunch.equals("布")) {
if(playerB.punch().equals("石头")) {
System.out.println("结果:你赢了!");
playerA.integral++;
}else {
System.out.println("结果:"+playerB.name+"赢!");
playerB.integral++;
}
}
}
public void showResult() {
System.out.println("-------------------------------------------------");
System.out.println(playerB.name+"\tVS " + playerA.name+"对战");
System.out.println("对战次数:"+fightTimes);
System.out.println("姓名\t得分");
System.out.println(playerA.name+"\t"+playerA.integral);
System.out.println(playerB.name+"\t"+playerB.integral);
System.out.println();
System.out.println("结果:恭喜恭喜!");
System.out.println("-------------------------------------------------");
}
}
}
通过学习各路大神之作,自己做出来了。纯手工敲出,和大家一起学习。