Java程序设计(猜拳、猜数字、猜硬币)

news2025/1/10 14:25:53

前言

Java实现简单的程序设计,包含猜拳、猜数字和猜硬币,实现玩家和电脑之间的互动,电脑每次出的结果实现随机,玩家选择需要玩的游戏(猜拳、猜数字、猜硬币),选择需要进行的局数。

界面设计

程序实现

主函数 object

public class object {
	public static void main(String[] args) throws IOException {
		printOut printOut = new printOut();
		adjust adjust = new adjust();
		int x = printOut.chooseGame();
		try {
			adjust.adjustGame(x);
		} catch (MyException e) {
			System.out.println("警告!"+ e);
		}

	}

}

主函数 printOut

public class printOut implements InterfaceGuess {
	private String enter; //玩家出的
	private Integer num;  //进行游戏对局的局数
	private Integer Pd;

	public printOut() {
		
	}
	public printOut(String enter) {
		this.enter = enter;
	}
	
	public String getEnter() {
		return enter;
	}
	public Integer getNum() {
		return num;
	}
	
	public void setEnter(String enter,Integer Pd) throws IOException {
		this.enter = enter;
		this.Pd = Pd;
		switch(Pd) {
		case 0:
			System.out.println("和局");
			break;
		case 1:
			System.out.println("赢局");
			break;
		default:
			System.out.println("输了");
			break;
		}
	}
	public void setNum(Integer num) {
		this.num = num;
	}
	
	public void Info() {
		System.out.println("第"+num+"局玩家出的是"+enter);
		System.out.println("===========================");
	}

	@Override
	public int chooseGame() throws IOException {	
		String chooseGame = "请选择游戏: 猜拳 | 猜数字 | 猜硬币";
		System.out.println(chooseGame);
		Scanner sc = new Scanner(System.in);
		String enter = sc.next( );
		//rederText.rederTest();
		if(enter.equals("猜拳")){
			return 1;
		}else if(enter.equals("猜数字")){
			return 2;
		}else if (enter.equals("猜硬币")){
			return 3;
		}else if(enter.equals("查询")){
			return 4;
		}else{		
			return 0;
		}
	}

	@Override
	public int inputInt() {
		Scanner sc = new Scanner(System.in);
		int x = sc.nextInt();
		return x;
	}

	@Override
	public String inputStr() {
		Scanner sc = new Scanner(System.in);
		String str = sc.next();
		return str;
	}

	public void start() {
		// TODO Auto-generated method stub
		System.out.println("#####—— 游戏正式开始 ——#####");
		
	}

	@Override
	public void end(int num) throws IOException {
		System.out.println("###-游戏结束,您总共赢了" + num +"局!-###");
	}

	public void returnRule() throws IOException {
		System.out.println("玩家选择(剪刀   石头   布):");
	}

	public void gameName() throws IOException {
		System.out.println("猜猜电脑出什么:剪刀      石头      布");
	}
	public void gameNumber() throws IOException {
		String s = "猜猜电脑出哪个数  0   1   2";
		System.out.println(s);
		//System.out.println("猜猜电脑出哪个数  0   1   2");
	}

	public void gameDoinb() throws IOException {
		String s = "硬币抛出落下后,哪面朝上:1.正面    0.反面 ";
		System.out.println(s);
		//System.out.println("硬币抛出落下后,哪面朝上:1.正面    0.反面 ");
	}
	
	public static void printWarn() {
		System.out.println("请配合游戏规则!!!");
	}

	public static void printTip() throws IOException {
		String s = "请输入游戏局数";
		System.out.println(s);
	}
	
	public static void aboutFile(String s) throws IOException {
		//定义方法,将字符串写入文本在打印出
		System.out.println(s);
	}
	
}

主函数 adjust

public class adjust {
	private String s;
	public void adjustGame(int a) throws MyException, IOException{
		printOut printOut = new printOut();
		if(a==1){ //猜拳
			FingerGuessing fg = new FingerGuessing();
			printOut.printTip();
			String enter = null;
			int t = printOut.inputInt();
			int i = fg.Judgement(enter, t, 0);
			printOut.end(i);
		}else if(a == 2){ //猜数字
			NumberGuessing guessing = new NumberGuessing();
			printOut.printTip();
			String enter = null;
			int t = printOut.inputInt();
			int i = guessing.Judgement(enter, t, 0);
			printOut.end(i);
		}else if(a == 3){ //猜硬币
			DoinbGuessing guessing = new DoinbGuessing();
			printOut.printTip();
			String enter = null;
			int t = printOut.inputInt();
			int i = guessing.Judgement(enter, t, 0);
			printOut.end(i);
		}else if(a == 4) {

		}else {
			//printOut.printWarn();
			s = "请输入正确的游戏方式";
			System.out.println(s);
		}
	}

	public String adjustFinger(int a,String b) throws MyException, IOException{
		int r = 0;
		if(b.equals("剪刀")){
			r = 0;
		}else if(b.equals("石头")){
			r = 1;
		}else if(b.equals("布")){
			r = 2;
		}else {
			s = "请按照游戏规则进行游戏";
			System.out.println(s);
		}
		if(a > r){
			s = "你输了";
			System.out.println(s);
			//return 0;
		}else if(a < r){
			s = "你赢了";
			System.out.println(s);
			//return 1;
		}else if(a == r){
			s = "平局";
			System.out.println(s);
			//return 0;
		}else{
			s = "系统报错";
			System.out.println(s);
		}
		return s;
	}	
	
}

主函数 AbstractGuess

public abstract class AbstractGuess {
	printOut out = new printOut();
    public AbstractGuess(){

    }
    public void InputNotice(int rnd,String comp,String result) throws IOException{
        System.out.println("第" + rnd + "局" + "电脑出的是" + comp);
        System.out.println("这把"+result);
        System.out.println("===========================================");
    }

    public abstract int Judgement(String str, int num ,int rnd);
}

主函数 DoinbGuessing(猜硬币)

public class DoinbGuessing extends AbstractGuess{
    @Override
    public int Judgement(String str, int num, int rnd) {
        printOut print = new printOut();
        try {
			print.gameDoinb();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
        int win = 0;
        for (rnd = 1;rnd <= num;rnd++){
            int randomNumber = new Random().nextInt(2);
            int i = print.inputInt();
            String b;
            if(randomNumber == 1){
                b = "正面";
            }else{
                b = "反面";
            }
            if(randomNumber == i){
                win++;
                try {
					InputNotice(rnd,b,"你赢了");
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
            }else{
                try {
					InputNotice(rnd,b,"你输了");
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
            }
        }
        return win;
    }
}

主函数 FingerGuessing(猜拳)

public class FingerGuessing extends AbstractGuess{
    @Override
    public int Judgement(String str, int num, int rnd) {
    	//num代表执行的局数,rnd代表随机的数,str
        printOut print = new printOut();
        print.start();
        try {
			print.gameName();
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
        int win = 0;
        for(rnd = 1;rnd<=num;rnd++){
            int randomNumber=new Random( ).nextInt(3);
            String str1 = print.inputStr();
            adjust adjust = new adjust();
            String s = null;
			try {
				try {
					s = adjust.adjustFinger(randomNumber,str1);
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			} catch (MyException e) {
				// TODO Auto-generated catch block
				System.out.println("警告"+ e);
			}
			if(s != null) {
				if(s.equals("你赢了")){
					win++;
				}
            switch (randomNumber){  //0是剪刀,1是石头,2是布
                case 0:
				try {
					InputNotice(rnd,"剪刀",s);
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
                    break;
                case 1:
				try {
					InputNotice(rnd,"石头",s);
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
                    break;
                case 2:
				try {
					InputNotice(rnd,"布",s);
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
                    break;
            }
			}else {
				break;
			}
        }
        return win;
    }
}

主函数 NumberGuessing(猜数字)

public class NumberGuessing extends AbstractGuess{
    @Override
    public int Judgement(String str, int num, int rnd) {
        printOut print = new printOut();
        try {
			print.gameNumber();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
        int win = 0;
        for (rnd = 1;rnd <= num;rnd++){
            int randomNumber = new Random().nextInt(3);
            int i = print.inputInt();
            String b= String.valueOf(randomNumber);
            if(randomNumber == i){
                win++;
                try {
					InputNotice(rnd,b,"你赢了");
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
            }else {
                try {
					InputNotice(rnd,b,"你输了");
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
            }
        }
        return win;
    }
}

主函数 InterfaceGuess

public interface InterfaceGuess {
    public abstract int chooseGame() throws IOException;
    public abstract int inputInt();
    public abstract String inputStr();

    public abstract void start();
    public abstract void end(int num) throws IOException;
}

主函数 MyException

public class MyException extends Exception{

	MyException(String message) {
		super(message);
	}
}

总结

Java程序设计真的太不容易了......

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1412188.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pcl+vtk(十四)vtkCamera相机简单介绍

一、vtkCamera相机 人眼相当于三维场景下的相机&#xff0c; VTK是用vtkCamera类来表示三维渲染场景中的相机。vtkCamera负责把三维场景投影到二维平面&#xff0c;如屏幕、图像等。 相机位置&#xff1a;即相机所在的位置&#xff0c;用方法vtkCamera::SetPosition()设置。 相…

k8s的安全机制

k8s是分布式集群管理工具&#xff0c;k8s作用是容器编排 1、安全机制核心&#xff1a;API server。API server作为整个集群内部通信的中介&#xff0c;也是外部控制的入口&#xff0c;所有的安全机制都是围绕api sserver来进行设计的。请求api server资源要满足3个条件&#x…

数据结构篇-02:最小栈

对于这道题&#xff0c;除了 getMin 外的功能&#xff0c;传统的 栈 结构中都有&#xff0c;所以重点在于如何实现 getMin 方法。 有两类方法&#xff1a;使用辅助栈/不使用辅助栈 使用辅助栈的解法一 定义一个 栈 来实现常规功能&#xff0c;另外定义一个栈&#xff08;最小…

如何配置点击抖音直播小风车跳转到微信公众号?

随着抖音直播间的普及&#xff0c;越来越多的品牌选择通过直播进行宣传推广。然而&#xff0c;直播间主播的氛围营造是一项极具挑战性的任务。如果观众的热情无法被调动起来&#xff0c;直播间很容易陷入沉寂&#xff0c;难以吸引流量。 为了最大化利用流量&#xff0c;许多品牌…

智能充电桩,机器人 wifi蓝牙 解决方案

新联鑫威低功耗高性价比sdio wifi/蓝牙combo的模块单频2.4g的CYWL6208&#xff0c;双频2.4g/5g CYWL6312可以应用到一些低延时 高性能 低功耗 联网需求的交流直流充电桩&#xff0c;扭力扳手&#xff0c;agv机器人&#xff0c;目前支持主流的stm32F4/GD32F4 瑞萨 psoc的主控&am…

道合顺:一站式电子元器件采购商城

欢迎来到道合顺&#xff0c;您专属的电子元器件采购商城。我们为您提供广泛的元器件选择&#xff0c;包括各类芯片、传感器、电容电阻、连接器等&#xff0c;以满足您项目的需求。 最新价格实时查询 通过道合顺电子网&#xff0c;您可以随时随地查询各类电子元器件的最新价格…

外汇天眼:QoinTech误信假老师话术投资外汇,惨遭黑平台滑点爆仓拒出金

去年11月与12月&#xff0c;外汇天眼先后发布了「钓鱼广告诱加投资群组&#xff0c;限制出金逼迫缴分成费」与「假投顾诱导投资黄金获利&#xff0c;黑平台操作爆仓狠诈700万」这2篇文章&#xff0c;曝光黑平台QoinTech的诈骗手法&#xff0c;呼吁投资人不要上当&#xff0c;没…

你对 TypeScript 中枚举类型的理解?应用场景?

文章目录 一、是什么二、使用数字枚举字符串枚举异构枚举本质 三、应用场景参考文献 一、是什么 枚举是一个被命名的整型常数的集合&#xff0c;用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型 通俗来说&#xff0c;枚举就是一个对象的所有可能…

LeetCode 热题 100 | 普通数组

目录 1 53. 最大子数组和 2 56. 合并区间 3 189. 轮转数组 4 238. 除自身以外数组的乘积 5 41. 缺失的第一个正数 菜鸟做题第二周&#xff0c;语言是 C 1 53. 最大子数组和 题眼&#xff1a;“子数组是数组中的一个连续部分。” 遍历数组&#xff0c;问每一个元素…

EIGRP实验

实验大纲 一、基本配置 1.构建网络拓扑结构图 2.路由器基本配置 3.配置PC 4.测试连通性 5.保存配置文件 二、配置EIGRP 1.查看路由表 2.配置EIGRP动态路由 3.查看路由器路由表 4.测试网络连通性 5.查看所有路由器的路由协议 6.保存配置文件 三、配置OSPF 1.配置…

【基于电商履约场景的 DDD 实战】DDD领域驱动设计的优势分析以及与MVC架构对比

&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308; 欢迎关注公众号&#xff08;通过文章导读关注&#xff1a;【11来了】&#xff09;&#xff0c;及时收到 AI 前沿项目工具及新技术的推送&#xff01; 在我后台回复…

LeetCode.2859. 计算 K 置位下标对应元素的和

题目 题目链接 分析 这道题的题意很明确。就是求每一个下标的二进制中1的个数为k的下标所对应的元素值之和。 Java 中有 库函数 Integer.bitCount(num)&#xff0c;这个函数的返回值就是 num 中 1 的个数。 代码 class Solution {public int sumIndicesWithKSetBits(List…

如何训练和导出模型

介绍如何通过DI-engine使用DQN算法训练强化学习模型 一、什么是DQN算法 DQN算法&#xff0c;全称为Deep Q-Network算法&#xff0c;是一种结合了Q学习&#xff08;一种价值基础的强化学习算法&#xff09;和深度学习的算法。该算法是由DeepMind团队在2013年提出的&#xff0c;…

开发板连接错误: WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

1.出现错误 scp rkmedia_vi_venc_rtsp_test_sp root192.168.10.198:/home/sunpeng出现错误 2.错误原因&#xff1a;警告&#xff1a;远程主机标识已更改&#xff01; 1&#xff09;重新烧录开发板系统&#xff0c;导致IP地址变化。 2&#xff09;报警错误-中文&#xff08;警…

每日一练 | 华为认证真题练习Day172

1、关于OSPF的ASBR-SUMMARY-LSA中LSA头部他、信息描述错误的是 A. LINK STATE ID表示ASBR的ROUTER ID B. ADVERTISING ROUTER表示该ABR的ROUTER ID C. ADVERTISING ROUTER字段永远不会改变 D. METRIC表示该ABR到达ASBR的OSPF开销 2、关于OSPF外部路由种类描述错误的是 A. …

力扣354. 俄罗斯套娃信封问题

动态规划 思路&#xff1a; 同时控制 w、h 两个维度比较复杂&#xff0c;可以先固定一个维度&#xff0c;来找出另外一个维度的严格单调序列&#xff1a; 对 w 排序&#xff0c;然后再来找 h 维度严格单调递增序列长度&#xff1b;在 w 排序时&#xff0c;会遇到 w(i) w(j) 的…

字节发布MagicVideo2文本生成视频模型,一句话便可生成动态视频

文生图大模型已经火了很长一段时间了&#xff0c;而随着技术与模型算法的不断提升&#xff0c;文生视频模型也越来越多。今天就介绍一下字节跳动发布的MagicVideo-V2文生视频大模型。 文生图的大火对文本生成高保真视频的需求也不断增长&#xff0c;正是这种需求的增加&#xf…

李国武老师解读QFD:从理论到实践的全面指南

QFD&#xff0c;即质量功能展开&#xff08;Quality Function Deployment&#xff09;&#xff0c;是一种将客户需求转化为产品设计要求和生产要求的系统方法。在当今市场竞争激烈的环境下&#xff0c;如何将客户的声音转化为产品优势&#xff0c;是每一个制造企业都需要面对的…

域名的安全性如何提高?

域名&#xff08;Domain Name&#xff09;是互联网上的一种层次结构式的字符标识&#xff0c;对应于计算机的互联网协议&#xff08;IP&#xff09;地址。域名是由一串用点分隔的名字组成的&#xff0c;它可以方便地在数据传输时标识计算机的电子方位。域名的作用在于提供易于记…

超级万能DIY模块化电商小程序源码系统 带完整的搭建教程

随着电商市场的不断扩大&#xff0c;越来越多的商家涌入电商平台&#xff0c;竞争愈发激烈。为了在众多竞争对手中脱颖而出&#xff0c;商家需要打造一款个性化、功能强大的电商小程序&#xff0c;以吸引更多的用户。而超级万能DIY模块化电商小程序源码系统正是为了满足商家的这…