猜拳小游戏

   思路:建立三个类。(为简化设计过程,剪刀、石头、布在代码内部分别用1,2,3表示)

   1,Computer类

              用来表示电脑的姓名(即用户手动选择的对手) 和出拳,姓名是用户在可选项中选择的对手,出拳则是利用Math类的随机数Random()方法随机产生。

                    getName(),返回值为  用户选择的对手,并且输出。

                    select(),返回值为   1、2、3。分别代码剪刀、石头、布。

   2, Person类

              用来表示用户的姓名 和出拳 ,姓名是用户手动输入自己的姓名,出拳是手动输入剪刀、石头或布。

                    getName(),返回值为用户输入的怎么的名字,并且输出。

                    select(),返回值为1、2、3。分别代码剪刀、石头、布。

   3, Morra类

             用来写游戏规则和运行代码(main),本文在这里面写了5个方法。

                       view(),没有返回值,用来表示初始界面,其实可以把这块代码写在start()里面,但是为了看代码方便把它单独拿出来作为一个方法了。

                       start(),没有返回值,用来表示每局的过程。

                       processContinue(),没有返回值,用来表示每局游戏结束之后是否继续下一局。

                       processEnd(),没有返回值,用来表示游戏结束时游戏的最终结果,打印输出。

                       result(),没有返回值,用来计算每局的结果并输出。

以下为实际运行代码:

Computer 类(Computer.java)

package day12_review;

import java.util.Scanner;

public class Computer {
	String name;
	int score;

	public String getName() {
		
		System.out.println("选择你的对手:");
		System.out.println("1,张文迪"
				+ "\n2,钟添盛"
				+ "\n3,曹培");

		Scanner can=new Scanner(System.in);
		String a=can.next();
		
		switch(a){
		case "1":
			System.out.println("你的对手是张文迪!");
			name="张文迪";
			break;
		case "2":
			name="钟添盛";
			System.out.println("你的对手是钟添盛!");
			break;
		case "3":
			name="曹培";
			System.out.println("你的对手是曹培!");
			break;
			default :
				System.out.println("输入错误,请重新选择:");
				getName();
		}
		
		return name;
	}
	
	/* 1,剪刀
	 * 2,石头
	 * 3,布 
	 */
	public int select() {
		int a=(int)(Math.random()*3)+1;
		if(a==1){
			System.out.println("电脑出剪刀!");
			return 1;
		}		
		if(a==2){
			System.out.println("电脑出石头!");
			return 2;
		}		
		if(a==3){
			System.out.println("电脑出布!");
			return 3;
		}
		return 0;

	}

}

Person 类(Person.java)

package day12_review;

import java.util.Scanner;

public class Person {
	String name;
	int score;
	
	int winCount ;
	int closeCount;
	int drawCount;

	/* 1,剪刀
	 * 2,石头
	 * 3,布 
	 */
	
	public String getName() {
		System.out.println("输入你的名字:");
		Scanner can=new Scanner(System.in);
		name=can.next();

		return name;
	}
	
	public int select() {
		
		while(true){
			Scanner can=new Scanner(System.in);
			String s=can.next();
			if(s.equals("剪刀")){
				System.out.println("你出了剪刀!");
				return 1;
			}		
			else if(s.equals("石头")){
				System.out.println("你出了石头!");
				return 2;
			}		
			else if(s.equals("布")){
				System.out.println("你出了布!");
				return 3;
			}
			else{
				System.out.println("别闹,好好出拳→_→");
				System.out.println("请重新输入:");
			}
		}

	}

}

Morra类(Morra.java)

package day12_review;

import java.util.Scanner;

public class Morra {

	Person p=new Person();
	Computer c=new Computer();
	int count ;
	
	public static void main(String[] args) {
		Morra m=new Morra();
		m.start();
	}
	
//	初始界面
	private void view() {
		System.out.println("**********************");
		System.out.println(" *******猜拳游戏*******");
		System.out.println("  *******开始********");
	}

//	运行
	private void start() {
		view();

		c.name=c.getName();
		p.name=p.getName();
		
		System.out.println(p.name+"    VS    "+c.name);
		
		while(true){
			System.out.println("要开始吗?(y/n)");
			System.out.println("*********************");
			
			Scanner can=new Scanner(System.in);
			String s=can.next();
			
			if(s.equalsIgnoreCase("y")){
				System.out.println("请出拳:(剪刀,石头,布)");
				
				int a=p.select();//用户出拳
				int a2=c.select();//电脑出拳

				result(a,a2);
				
				processContinue();
				break;
			}
			else if(s.equalsIgnoreCase("n")){
				System.out.println("拒绝开始,已退出!");
				break;
			}
			else{
				System.out.println("选择错误!请重新选择!");
			}
		}


	}

//	判断游戏是否继续
	private void processContinue() {
		System.out.println("是否开始下一局:(y/n)");
		
		Scanner can=new Scanner(System.in);
		String s=can.next();
		if(s.equalsIgnoreCase("y")){
			System.out.println("请出拳:(剪刀,石头,布)");
			
			int a1=p.select();//用户出拳
			int a2=c.select();//电脑出拳
			
			result(a1,a2);
			
			processContinue();
			
		}
		else if(s.equalsIgnoreCase("n")){
			processEnd();
		}
		else{
			System.out.println("输入错误,请重新输入:");
			processContinue();
		}
		
	}

//	游戏结束,输出游戏结果
	private void processEnd() {
		System.out.println("\n已退出!游戏结果如下:");
		System.out.println("*********************");
		System.out.println(p.name +"    VS    "+c.name);
		System.out.println("*********************");
		System.out.println("挑战次数:"+count);
		System.out.println("胜局:"+p.winCount);
		System.out.println("输局:"+p.closeCount);
		System.out.println("平局:"+p.drawCount);
		System.out.println("*********************");
		System.out.println("姓名\t分数");
		System.out.println(p.name +"\t"+p.score);
		System.out.println(c.name +"\t"+c.score);
		System.out.println("*********************");
		if(p.score>c.score)
			System.out.println("你赢了!这么六么?");
		else if(p.score<c.score)
			System.out.println("你输了!呵呵~");
		else
			System.out.println("你跟电脑平局!so so 啦~");
		
	}

//	判断输赢,并对输赢平局数和总对局数进行处理
	private void result(int a1, int a2) {
		if(a1==a2){
			System.out.println("这一局是平局!均不计分!");	
			count++;
			p.drawCount++;
		}
		if((a1==1  && a2==2) ||
		   (a1==2  && a2==3) ||
		   (a1==3  && a2==1)){
			System.out.println("这一局电脑胜利,记一分!");
			c.score++;
			count++;
			p.closeCount++;
		}
		if((a1==1  && a2==3) ||
		   (a1==2  && a2==1) ||
		   (a1==3  && a2==2)){
			System.out.println("这一局你胜利了,记一分!");
			p.score++;
			count++;
			p.winCount++;
		}

	}

}

每个类都被我放在了day12_review包里面,所以代码最上面有一行代码   package day12_review;

以下为运行结果截图:

1,初始界面

初始界面

2,中间结果

中间游戏结果

3,游戏结束

游戏结束之后输出游戏结果

猜你喜欢

转载自blog.csdn.net/qian_qian_123/article/details/81605582