java面向对象之人机猜拳小游戏
作者:辰小狼睡不醒 发布时间:2021-12-20 18:12:34
标签: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();
}
}
来源:https://blog.csdn.net/chenfengbao/article/details/58596563


猜你喜欢
- 1. 文件上传a. 看看@FIEL注解的属性/** * 上传文件时使用该注解 设置文件相关参数 */@Retention(Retention
- 本文实例为大家分享了Silverlight实现星星闪烁动画展示的具体代码,供大家参考,具体内容如下原理很简单,生成1000个圆,从随机数来布
- SpringBoot找不到映射文件org.apache.ibatis.binding.BindingException: Invalid b
- 一、时间的单位转换1秒=1000毫秒(ms) 1毫秒=1/1,000秒(s)1秒=1,000,000 微秒(μs)&nb
- 引言今天给大家介绍一个非常有意思类库,基于java实现的简繁体转换,适用于后端、android等开发领域源码地址:* liuyueyi/qu
- 简介JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案。JSON Web Token 入门教程 这篇文章可以帮你了解
- 本文实例讲述了Android开发之SeekBar基本使用及各种美观样式。分享给大家供大家参考,具体如下:改变控件透明度只需通过 .setAl
- 工欲善其事,必先利其器很多程序员可能都忘了记录应用程序的行为是一件多么重要的事,当遇到多线程环境下高压力导致的并发bug时,你就能体会到记录
- android在网络上下载文件,供大家参考,具体内容如下步骤: 1.使用HTTP协议下载文件- 创建一个HttpURLConnection对
- 本文实例总结了C#遍历DataSet控件的方法。分享给大家供大家参考。具体方法如下:DataSet控件在.net主要是用来存储数据的,它更像
- 近几天又温习了一下SpringMVC的运行机制以及原理我理解的springmvc,是设计模式MVC中C层,也就是Controller(控制)
- 取模运算与取余运算两个概念有重叠的部分但又不完全一致。主要的区别在于对负整数进行除法运算时操作不同。对于整形数a,b来说,取模运算或者求余运
- 1.如何创建一个有效的AudioRecorder实例 Android各种设备的采样频率不同,输入的声道数也不同,如果采用固定的采样频率和声道
- Java进阶之FileUpload完成上传的实例 FileUpload是Apache commons下面
- spring的事务控制本质上是通过aop实现的。在springboot中使用时,可以通过注解@Transactional进行类或者方法级别的
- 自C#1.0版本以来,我们要定义一个不可变数据类型的基本做法就是:先声明字段为readonly,再声明只包含get访问器的属性。例子如下:1
- 本文实例讲述了Android编程实现下载图片及在手机中展示的方法。分享给大家供大家参考,具体如下:在项目开发中从互联网上下载图片是经常用到的
- 首先:因为工作需要,需要对接socket.io框架对接,所以目前只能使用netty-socketio。websocket是不支持对接sock
- 前言其实不管是哪种滑动方式,基本思想都是类似的:当点击事件传递到View时,系统记下触摸点的坐标,手指移动的时候,系统记下移动后的坐标,并计
- 此篇文章是我一个小白对委托的理解和总结,请高手多多评判指教。委托就是一种后期绑定机制,说的直白点就是在调用的时候才去传递业务逻辑的一种算法。