面向对象思想设计简单猜拳游戏Java程序

实现结果:

人机猜拳:

********************************************

*****************猜拳,开始***************

********************************************

出拳规则: 1.剪刀2.石头 3.布

请选择对方角色(1.刘备2.孙权3.曹操)

请输入你的名字:小怪兽

小怪兽VS孙权

 

要开始吗?(y/n) : y

*********************************************

请出拳: 1.剪刀2.石头3.布(输入相应数字) :

你出拳:石头

孙权出拳:剪刀

哇,你赢了,好厉害!

是否开始下一局(y/n) : y

********************************************

请出拳: 1.剪刀2.石头3.布(输入相应数字) :3

 

实现方法及思路:

玩家类:

属性:姓名:name,赢的次数:count

方法:出拳(),giveName()给名字赋值

电脑类:

属性:姓名:name,赢的次数:count

方法:出拳(),giveName()

游戏类:

属性:sum(共多少次),玩家对象,电脑对象

方法:Conoare()每一局的对战结果

            versult()最后对战结果

            XXX VS XXX

            XXX 赢了 XX局

            电脑赢了 XX局

            最终对战结束:谁赢了

编程实现:

1. 电脑类:


import java.util.Random;
import java.util.Scanner;
//电脑类:名字,计数,猜拳属性
public class Computer {
	Scanner input = new Scanner(System.in);
	private String name;
	private int count;
	private String chuquan;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getCount() {
		return count;
	}
	public void setCount(int count) {
		this.count = count;
	}
	public String getChuquan() {
		return chuquan;
	}
	public void setChuquan(String chuquan) {
		this.chuquan = chuquan;
	}
	//获得名字方法
	public void giveName(){
		System.out.print("请选择对方角色(1.刘备  2.孙权  3.曹操)");
		int name=0;
		boolean panduan=true;
		do{
		try{
			do{
				name = input.nextInt();
			if(name>0 && name<4){
			panduan=false;
			}else{
				System.err.println("输入错误,请输入1-3之间的整数:");
			}
			}while(panduan==true);
		}catch (Exception e) {
			System.err.println("输入错误,请输入1-3之间的整数:");
			input.next();
		}
		}while(panduan==true);
	    if(name==1){
	    	this.name = "刘备";
	    }else if(name==2){
	    	this.name = "孙权";	    	
	    }else{
	    	this.name = "曹操";	 
	    }
	}
	//电脑随机获得数字的猜拳方法
	public void guess(){
		Random random1 = new Random();
		int jishu = random1.nextInt(3);
	    if(jishu==1){
	    	chuquan = "剪刀";
	    }else if(jishu==2){
	    	chuquan = "石头";  	
	    }else{
	    	chuquan = "布";	 
	    }
	}	
}

2. 玩家类:

import java.util.Scanner;
//玩家类:名字,计数,猜拳属性
public class Player {
	Scanner input = new Scanner(System.in);
	private String name;
	private int count;
	private String chuquan;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getCount() {
		return count;
	}
	public void setCount(int count) {
		this.count = count;
	}
	public String getChuquan() {
		return chuquan;
	}
	public void setChuquan(String chuquan) {
		this.chuquan = chuquan;
	}
	//用户输入玩家名字的方法
	public void giveName(){
		System.out.println("请输入你的名字:");
		name = input.next();	
	}
	//用户猜拳方法
	public void guess(){
		System.out.print("请出拳:\t1.剪刀\t2.石头\t3.布(输入相应数字):");
		int jishu = 0;
		boolean panduan=true;
		do{
		try{
			do{
			jishu = input.nextInt();
			if(jishu>0 && jishu<4){
			panduan=false;
			}else{
				System.err.println("输入错误,请输入1-3之间的整数:");
			}
			}while(panduan==true);
		}catch (Exception e) {
			System.err.println("输入错误,请输入1-3之间的整数:");
			input.next();
		}
		}while(panduan==true);
		if(jishu==1){
	    	setChuquan("剪刀");
	    }else if(jishu==2){
	    	setChuquan("石头");  	
	    }else if(jishu==3){
	    	setChuquan("布");	 
	    }
	}
}

3. 游戏类

//游戏类
public class Game {
	//初始化玩家类和电脑类
	Player p = new Player();
	Computer c = new Computer();
	//游戏开始
	public void start(){
		c.giveName();
		p.giveName();
		System.out.println(p.getName()+" VS "+c.getName());
	}
	//判断每次猜拳的结果
	public void game(){
		p.guess();
		c.guess();
		System.out.println("你出拳:"+p.getChuquan());
		System.out.println(c.getName()+"出拳:"+c.getChuquan());
		if((p.getChuquan().equals("剪刀") && c.getChuquan().equals("布")) || (p.getChuquan().equals("石头") && c.getChuquan().equals("剪刀")) || (p.getChuquan().equals("布") && c.getChuquan().equals("石头"))){
			p.setCount(p.getCount()+1);
			System.out.println("哇,你赢了,好厉害!");	
		}else if((c.getChuquan().equals("剪刀") && p.getChuquan().equals("布")) || (c.getChuquan().equals("石头") && p.getChuquan().equals("剪刀")) || (c.getChuquan().equals("布") && p.getChuquan().equals("石头"))){
			c.setCount(c.getCount()+1);
			System.out.println("对不起,你输了!");	
		}else if(c.getChuquan().equals(p.getChuquan())){
			System.out.println("平局!");	
		}
	}
	//输出最终结果
	public void versult(){
		System.out.println(p.getName()+" VS "+c.getName());
		System.out.println(p.getName()+"赢了"+p.getCount()+"局");
		System.out.println("电脑赢了"+c.getCount()+"局");
		if(p.getCount() > c.getCount()){
			System.out.println("最终对战结果:"+p.getName()+"赢了");
		}else if(p.getCount() < c.getCount()){
			System.out.println("最终对战结果:电脑赢了");
		}else if(p.getCount() == c.getCount()){
			System.out.println("最终对战结果:平局");
		}
	}
}

4. 测试类

//测试类
public class Test {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("********************************");
		System.out.println("************猜拳, 开始************");
		System.out.println("********************************");
		System.out.println("出拳规则:\t1.剪刀\t2.石头\t3.布");
		//调用Game类
		Game g = new Game();
		g.start();
		System.out.println();
		System.out.println("要开始吗?(输入y继续,输入其他结束)");
		String panduan = input.next();
		//循环game方法
		while(panduan.equals("y")){
			System.out.println("********************************");
			g.game();
			System.out.println("是否开始下一局(输入y继续,输入其他结束) : ");
			panduan = input.next();
		}
		System.out.println("游戏结束");
		g.versult();
	}
}

猜你喜欢

转载自blog.csdn.net/baidu_29343517/article/details/81276541