java面向对象之人机猜拳小游戏

 更新时间:2020年12月27日 10:37:57   作者:辰小狼睡不醒  
这篇文章主要为大家详细介绍了java面向对象之人机猜拳小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

人机猜拳小游戏,只要用到的java面向对象的思维模式。本游戏中有游戏玩家和计算机两个参与者。玩家和计算机都有的属性是姓名和得分。共分为4个类。下图是游侠小程序控制台截图:

 
 

以下是源代码:

Computer.java类

package com.whf.guess.game;
/** 
 * @author :辰
 * @version 
 * 创建时间:2017年2月24日 上午8:38:29 
 * 
 */
public class Computer {

  String name = "电脑";//名字
  int score = 0;//积分

  public int showFist() {
    //产生随机数

    int show = (int) ((Math.random()*10)%3+1); // 产生随机数,表示电脑出拳

    //输出出拳结果并返回
    switch (show) {
    case 1:
      System.out.println(name+"你出拳:剪刀");
      break;
    case 2:
      System.out.println(name+"你出拳:石头");
      break;
    case 3:
      System.out.println(name+"你出拳:布");
      break;
    }

    return show;
  }



}

Person.java 类

package com.whf.guess.game;

import java.util.Scanner;

/** 
 * @author :辰
 * @version
 * 创建时间:2017年2月24日 上午8:45:41 
 * 
 */
public class Person {

  String name = "匿名"; //名字
  int score = 0;   //积分  

  public int showFist(){
    //接收用户的选择
    Scanner input = new Scanner(System.in);
    System.out.println("\n请出拳:1.剪刀 2.石头  3.布");
    int show = input.nextInt();
    //输出出拳结果,并且返回
    switch (show) {
    case 1:
      System.out.println(name+"你出拳:剪刀");
      break;
    case 2:
      System.out.println(name+"你出拳:石头");
      break;
    case 3:
      System.out.println(name+"你出拳:布");
      break;
    }
    return show;
  }

}

Game.java类。包含游戏的比赛核心代码

package com.whf.guess.game;

import java.util.Scanner;

/** 
 * @author :辰
 * @version
 * 创建时间:2017年2月24日 上午8:37:06 
 * 
 */
public class Game<computer> {

  Person person ; //甲方

  Computer computer;// 乙方

  int count;// 对战次数

  public void inital(){
    person = new Person();
    computer = new Computer();
    count = 0;
  }
  //开始游戏
  public void startGame(){
    System.err.println("-------------欢迎进入猜拳游戏---------------");
    System.out.println();
    System.out.println("******************************************");
    System.out.println("——————出拳规则:1.剪刀  2.石头  3.布——————————");
    System.out.println("-------------》》》猜拳开始《《《------------");
    System.err.println("-------------------------------------------");
    Scanner input = new Scanner(System.in);
    String exit="n";//退出系统
    do {
      inital();//初始化
      //选择对手
      System.out.println("选择你的对手1.马云   2.马化腾   3.马大姐  ");
      int role = input.nextInt();
      if (role ==1) {
        computer.name="马云";
      }else if (role == 2) {
        computer.name="马化腾";
      }else if (role == 3) {
        computer.name="马大姐";
      }

      //游戏玩家输入姓名
      System.out.println("请输入你的姓名:");
      person.name=input.next();
      System.out.println(person.name+"  VS  "+computer.name+"对战\n");
      //开始游戏
      System.out.println("要开始吗?(y/n)");
      //开始一局游戏
      String start = input.next();
      int perFist;//游戏用户出拳
      int comFist;//计算机出拳
      while (start.equals("y")) {
        //出拳
        perFist = person.showFist();
        comFist = computer.showFist();
        //判断胜负
        if ((perFist==1&&comFist==1)||(perFist==2&&comFist==2)||(perFist==3&&comFist==3)) {
          System.err.println("结果:和局,真衰!\n");//平局
        }else if ((perFist==2&&comFist==1)||(perFist==3&&comFist==2)||(perFist==1&&comFist==3)) {
          System.err.println("结果:你赢了,真帅!\n");//胜利
          person.score++;
        }else {
          System.err.println("结果是:^_^,你输了,下载再战!\n");//计算机赢
          computer.score++;
        }
        count++;
        System.out.println("是否进行下一轮(y/n)");
        start = input.next();

      }
      //显示结果
      showResult();
      System.out.println("\n要开始下一局吗?(y/n):");
      exit = input.next();
      System.out.println();

    } while (!exit.equals("n"));

    System.out.println("系统退出");
  }
  private void showResult() {
    // TODO Auto-generated method stub
    //显示对战次数
    System.out.println("------------------------------");
    System.out.println(computer.name+"  VS  "+person.name);
    System.out.println("对战次数:"+count);
    //显示最终得分
    System.out.println("\n姓名\t得分");
    System.out.println(person.name+"\t"+person.score);
    System.out.println(computer.name+"\t"+computer.score+"\n");

    //显示对战结果
    int result = calcResult();
    if (result==1) {
      System.err.println("结果:打成平手,下次再和你一分高下");
    }else if (result==2) {
      System.err.println("结果:恭喜恭喜你赢得比赛");
    }else
    {
      System.err.println("结果:不气馁,下次再来");//计算机赢
    }
    System.out.println("--------------------------");


  }

  //计算比赛结果
  private int calcResult() {
    // TODO Auto-generated method stub
    if (person.score == computer.score) {
      return 1;//战平
    }else if (person.score > computer.score) {
      return 2;//游戏玩家赢
    }else {
      return 3;//惜败
    }
  }

}

StartGuess.java类

package com.whf.guess.game;
/** 
 * @author :辰
 * @version
 * 创建时间:2017年2月24日 上午9:35:36 
 * 
 */
public class StartGuess {
  public static void main(String[] args) {
    Game game = new Game();

    game.inital();

    game.startGame();
  }

}

以上就是完整的人机猜拳java面向对象的小游戏源码.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot集成RabbitMQ和概念介绍

    SpringBoot集成RabbitMQ和概念介绍

    这篇文章主要介绍了SpringBoot集成RabbitMQ和概念介绍,RabbitMQ即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用。更多相关内容需要的小伙伴可以参考一下下面文章内容
    2022-05-05
  • springboot2.0使用Hikari连接池的方法(替换druid)

    springboot2.0使用Hikari连接池的方法(替换druid)

    这篇文章主要介绍了springboot 2.0使用Hikari连接池的方法(替换druid),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Java的函数方法详解(含汉诺塔问题)

    Java的函数方法详解(含汉诺塔问题)

    汉诺塔问题是一个经典的递归问题,下面这篇文章主要给大家介绍了关于Java函数方法(含汉诺塔问题)的相关资料,文中通过图文以及代码示例介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • 基于Jpa中ManyToMany和OneToMany的双向控制

    基于Jpa中ManyToMany和OneToMany的双向控制

    这篇文章主要介绍了Jpa中ManyToMany和OneToMany的双向控制,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Springmvc如何返回xml及json格式数据

    Springmvc如何返回xml及json格式数据

    这篇文章主要介绍了Springmvc如何返回xml及json格式数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Java实现在线预览的示例代码(openOffice实现)

    Java实现在线预览的示例代码(openOffice实现)

    本篇文章主要介绍了Java实现在线预览的示例代码(openOffice实现),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • Java中常见的编码集问题总结

    Java中常见的编码集问题总结

    这篇文章主要为大家整理了一些Java中常见的编码集问题,文中的示例代码讲解详细,对我们深入理解Java有一定的帮助,感兴趣的小伙伴可以了解一下
    2023-02-02
  • IDE Eval Reset忘了重置进不去的完美解决方法

    IDE Eval Reset忘了重置进不去的完美解决方法

    这篇文章主要介绍了IDE Eval Reset忘了重置进不去的完美解决方法,插件安装方式包括离线安装和在线安装方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-12-12
  • Spring JPA自定义查询结果的接收方式

    Spring JPA自定义查询结果的接收方式

    这篇文章主要介绍了Spring JPA自定义查询结果的接收方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • Java的异常体系以及File类构造方法详解

    Java的异常体系以及File类构造方法详解

    这篇文章主要为大家介绍了Java的异常体系以及File类构造方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05

最新评论