Java自制人机小游戏——————————剪刀、石头、布

package com.hello.test;

import java.util.Scanner;

public class TestGame {

    public static void main(String[] args)
    {
        Player p = new Player() ; //实例化玩家对象
        
        Game g = new Game(p) ;//实例化游戏对象
        
        g.startGame();//调用方法
    }

}


//游戏类
class  Game
{
    private Player p ;  //设置玩家
    
    public Game(Player p)
    {
        this.p =p ;
    }
    
    //制定游戏规则
    public int rule(String s1 ,String s2)
    {
        if(s1.equals(s2))            //先将电脑跟人出拳相同情况拿出
        {
            return 0 ;
        }
        if(s1.equals("剪刀"))
        {
            if(s2.equals("布"))
            {
                return 1 ;
            }
            if(s2.equals("石头"))
            {
                return -1 ;
            }
        }
        if(s1.equals("石头"))
        {
            if(s2.equals("布"))
            {
                return -1 ;
            }
            if(s2.equals("剪刀"))
            {
                return 1 ;
            }
        }
        if(s1.equals("布"))
        {
            if(s2.equals("剪刀"))
            {
                return -1 ;
            }
            if(s2.equals("石头"))
            {
                return 1 ;
            }
        }
        return 0;
    }
    
    public boolean panduan(String s)
    {
        if("剪刀".equals(s)||"布".equals(s)||"石头".equals(s)||"esc".equals(s))
        {
            return true ;
        }
        else 
        {
            return false ;
        }
    }
    
    //游戏开始方法
    public void startGame()
    {
        System.out.println("开始游戏");
        
        System.out.println("请输入您的游戏昵称:");
        
        Scanner s = new Scanner(System.in) ;
        
        String sg = s.nextLine() ;
        
        p.setName(sg);
        
        p.setScore(100);
        
        System.out.println("恭喜您注册成功,您的初始积分为100");
        
        System.out.println(p.getName()+"进入游戏");
        
        while(true)
        {
            String[ ] array = new String[ ] {"剪刀","石头","布"} ;
            
            System.out.println("请输入剪刀、石头或布,结束请输入esc");
            
            Scanner sc = new Scanner(System.in) ; //提供输入窗口
            
            String s1 = sc.nextLine() ;
            
            if(!panduan(s1))
            {
                System.out.println("输入有误,重新输入!");
                continue ;
            }
            
            if(s1.equals("esc"))
            {
                break ;
            }
            
            int a = (int)(Math.random()*3) ; //随机0,1,2作为索引
            
            String s2 = array[a] ;
            
            int it = rule(s1,s2) ;
            
            if(it>0)
            {
                System.out.println("您出的是"+s1+"电脑出的是"+s2);
                System.out.println("恭喜"+p.getName()+"赢了,奖励10积分");
                p.setScore(p.getScore()+10);
            }
            else if(it<0)
            {
                System.out.println("您出的是"+s1+"电脑出的是"+s2);
                System.out.println("对不起"+p.getName()+"您输了,扣除10积分为");    
                p.setScore(p.getScore()-10);
            }
            else
            {
                System.out.println("您出的是"+s1+"电脑出的是"+s2);
                System.out.println("打平了");
                p.setScore(p.getScore());
            }
            System.out.println(p);
        }
        System.out.println(p.getName()+"退出了游戏,当前积分为:"+p.getScore());
    }
    
}


//玩家类
class Player
{
    private String name ;         //玩家姓名
    
    private int score ;            //玩家积分

    //setting、getting
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }

    @Override
    public String toString() {
        return "玩家:" + name + ", 当前积分:" + score;
    }
    
}

 

posted @ 2016-10-17 23:27  丶疏影横斜  阅读(694)  评论(1编辑  收藏  举报