Java实现“猜拳游戏”,用到了对象关联

对象关联

理解:

    一个对象中又用到了另一个对象,或者说属性的定义类型为对象类型

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("-------------------------------------------------");
			
		}
	}
}

通过学习各路大神之作,自己做出来了。纯手工敲出,和大家一起学习。

猜你喜欢

转载自blog.csdn.net/ma_zhifu/article/details/81214613