使用java循环和选择结构,实现人机猜拳

本文介绍了Java编程实现的玩家对战NPC的剪刀石头布游戏,包含Person类的玩家操作,Computer类的NPC随机出拳,以及Game类的主逻辑。通过实例展示了如何创建对象、交互并计算积分。
  • Person.java 玩家类
  • /**
     * @author Life_Ding
     * Time:
     */
    import java.util.Scanner;
    public class Person {
    //属性
    String P_name;//玩家名称
    int P_point;//玩家积分
    public int P_fist(){
    System.out.print("请出拳:1.剪刀 2.石头 3.布(输入相应数字):");
    int sum = new Scanner(System.in).nextInt();
    //等值选择 switch
    switch(sum){
    case 1:
    System.out.println("\n您出拳: 剪刀 ");
    break;
    case 2:
    System.out.println("\n您出拳: 石头");
    break;
    case 3:
    System.out.println("\n您出拳: 布");
    break;
    default:
    System.out.println("\n请输入正确选项!");
    break;
    }
    return sum;
    }
    /*
    * 测试
    */
    public static void main(String[] args) {
    Person p = new Person();
    p.P_fist();
    }
    }
  •  Computer.java 电脑类
  • /**
     * @author Life_Ding
     *计算机类
     */
    public class Computer {
    //属性
    String C_name;//NPC名称
    int C_point;//NPC积分
    /**
    * NPC的出拳方法
    */
    public int C_fist(){
    //生成随机数
    //0~1 乘以10之后 1-9 %3之后0 1 2 
    int show = (int)(Math.random()*10)%3+1;
    //等值选择 switch
    switch(show){
    case 1:
    System.out.println("\nNPC出拳: 剪刀 ");
    break;
    case 2:
    System.out.println("\nNPC: 石头");
    break;
    case 3:
    System.out.println("\nNPC出拳: 布");
    break;
    }
    return show;
    }
    /*
    * 测试类
    */
    public static void main(String[] args) {
    Computer c = new Computer();
    c.C_fist();
    }
    }
  • Game.java 游戏类
  • import java.util.Scanner;
    /**
     * 初始化 对象类
     * @author Life_Ding
     *
     */
    public class Game {
    int i=0;//新增计数器计算局数
    int name;
    Person p;//case 4 调用玩家对象名
    Computer c;//声明变量
    public void initial(){
    p = new Person();
    c = new Computer();
    }
    /*
    * 游戏的开始方法
    * startGame()
    */
    public void startGame(){
    //调用初始化方法
    initial();
    Scanner input=new Scanner(System.in);
    System.out.println("-----------------欢迎进入游戏世界---------------\n\n");
    System.out.println("\t\t**************");
    System.out.println("\t\t ** 猜拳.开始 **");
    System.out.println("\t\t**************");
    System.out.println("\n\n");
    System.out.println("出拳规则:1.剪刀 2.石头 3.布");
    System.out.print("请选择.对方角色(1.刘备2.孙权3.曹操):");
    int choice = new Scanner(System.in).nextInt();
    //选择结构
    switch(choice){
    case 1:
    //TODO 怎么给计算机NPC 游戏名赋值!+
    //创建对象 声明到类里 从初始化方法中提出去
    c.C_name="刘备";
    break;
    case 2:
    c.C_name="孙权";
    break;
    case 3:
    c.C_name="曹操";
    break;
    default:
    System.out.println("请输入正确的选项!");
    break;
    }
    //给玩家姓名赋值
    System.out.print("请输入您的姓名:");
    p.P_name=new Scanner(System.in).next();
    //NPC选择了哪个英雄对战!
    // System.out.println("您选择了"+p.P_name+"对战!\n");
    System.out.println(p.P_name+" VS "+c.C_name);
    System.out.print("\n要开始了吗?(y/n):");
    String anwer=input.next();
    while(anwer.equals("y")){
    //调用玩家的方法
    int person=p.P_fist();//变量换个位置即可作弊!!
    int computer=c.C_fist();
    //出拳
    //通过返回结果来判断输赢
    //1.平局
    if((person==1&&computer==1)||
    (person==2&&computer==2)||
    (person==3&&computer==3)){
    System.out.println("\n结果:平局!");
    //2.玩家赢
    }else if((person==1&&computer==3)||
    (person==2&&computer==1)||
    (person==3&&computer==2)){
    System.out.println("\n结果:^_^ ~ 不错哦!您赢了\n");
    //case 5:累计积分
    p.P_point++;//玩家积分
    System.out.println("玩家积分:"+p.P_point);
    //3.电脑赢
    }else{
    System.out.println("\n结果:@_@ ~ 运气不好哦!您输了!\n");
    c.C_point++;//NPC积分
    System.out.println("NPC积分:"+c.C_point);
    }
    System.out.print("\n要进行下一局吗?(y/n):");
    anwer=new Scanner(System.in).next();
    i++;
    }
    // case 6: 显示对战人和积分的比较
    showResult();
    }
    // 权限用public 或者 privte 都可以
    private void showResult() {
    // TODO 写相应的业务逻辑
    //比较积分大小
    System.out.println("-------------------------");
    System.out.println(p.P_name+" VS "+c.C_name);
    System.out.println("对战次数:"+i);
    if(p.P_point>c.C_point){
    System.out.println("您赢得了最终的胜利!!!\n");
    }else if(c.C_point==p.P_point){
    System.out.println("打了个平局!\n");
    }else{
    System.out.println("您输了!可真是个笨笨!\n");
    }
    //显示积分详细
    System.out.println("姓名\t"+"积分\n"+p.P_name+"\t"+p.P_point+
    "\n"+c.C_name+"\t"+c.C_point);
    System.out.println("-------------------------");
    }
    }
  • Test.java 测试类
  • public class Test {
    public static void main(String[] args) {
    Game g = new Game();
    g.startGame();
    }
    }

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值