吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 3721|回复: 55

[其他] JAVA 猜数字游戏

  [复制链接]
白云点缀的蓝 发表于 2020-10-12 20:35 | 显示全部楼层 |阅读模式

游戏说明
打开游戏提示开始游戏,还是结束游戏
开始游戏后会有计时功能,同时还有计分功能
下面来看代码分析
首先创建一个类,用来计时用的,代码如下
先定义三个变量,初始化时分秒
[Java] 纯文本查看 复制代码
    private int hour;  //小时
    private int seconds;//秒
    private int minutes;//分钟
因为是线程,我们就继承Thread类来实现
[Java] 纯文本查看 复制代码
public class threaddemo extends Thread
并且我们需要重写run方法
[Java] 纯文本查看 复制代码
    @Override
    public void run() {
        super.run();
        
    }

然后在run方法里面写计时代码,同时需要休眠1s,保证计时与正常的一样

[Java] 纯文本查看 复制代码
        for (;;){
        for (hour=0;hour<24;hour++){
            for (minutes=0;minutes<60;minutes++){
                for(seconds=0;seconds<60;seconds++){
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
然后我们还需要写获取时分秒的代码,
[Java] 纯文本查看 复制代码
    //获取小时
    public int getHour() {
        return hour;
    }
    //获取分钟
    public int getMinutes() {
        return minutes;
    }
    //获取秒
    public int getSeconds() {
        return seconds;
    }


实现猜数字的代码如下,打开游戏提示开始游戏,还是结束游戏
输入1就开始游戏,输入2就是结束游戏,
[Java] 纯文本查看 复制代码
System.out.println("欢迎来到猜数字游戏");
        System.out.println("输入1开始游戏,输入2结束游戏");
        //创建一个接收输入数据的对象
        Scanner sc=new Scanner(System.in);
        int sca=sc.nextInt();
        switch (sca){

            case 1:playgame();
                    break;
            case 2:System.exit(0);
                    break;
        }
    }
然后是开始游戏后的代码实现,先要创建一个计时的对象,以实现计时功能,
[Java] 纯文本查看 复制代码
System.out.println("开始游戏啦");
        System.out.println("输入222是结束游戏哦");
        System.out.println("");
        //创建计时类的对象
        threaddemo th=new threaddemo();
        th.start();
然后还要创建一个置随机数对象,并且接受随机数
[Java] 纯文本查看 复制代码
        //置随机数
        Random r=new Random();
        //接收随机数
        int ra=r.nextInt(100)+1;
然后还要接收用户的输入的数据,并且判断大于随机数还是小于随机数或者等于随机数,
[Java] 纯文本查看 复制代码
  Scanner sc = new Scanner(System.in);
            int sca = sc.nextInt();
            int aaa = sca;
            if (sca > 0 && sca > ra && sca < 100) {
                System.out.println("你猜大了");
            } else if (sca > 0 && sca < ra && sca < 100) {
                System.out.println("你猜小了");
            } else if (sca > 0 && sca == ra && sca < 100) {
                System.out.println("恭喜你,猜对了");
猜对之后就得分加1,还要判断是否继续游戏,继续就再次回到原处,执行playgame方法,如果结束游戏
就显示你的得分,并且显示游戏的总时长,
下面是得分变量的定义
[Java] 纯文本查看 复制代码
private static int scores=0;

下面是判断是否继续游戏或者结束游戏,并且显示得分,还有游戏的总时长,还要有一个判断,判断输入的数字是小于还是大于随机数的范围,
[Java] 纯文本查看 复制代码
                System.out.println("输入1为继续");
                System.out.println("输入222为结束游戏");
                //创建一个输入数据的对象,判断是否继续
                Scanner scc = new Scanner(System.in);
                int scca = scc.nextInt();
                switch (scca) {
                    case 1:
                        playgame();
                        break;
                    case 222:
                        System.out.println("您的游戏时间是:" + th.getHour() + "小时" + th.getMinutes() + "分钟" + th.getSeconds() + "秒");
                        System.out.println("您的游戏得分为:" + scores);
                        System.exit(0);
                        break;
                }
            } else if (aaa == 222 && aaa > 100) {
                System.out.println("您的游戏时间是:" + th.getHour() + "小时" + th.getMinutes() + "分钟" + th.getSeconds() + "秒");
                System.out.println("您的游戏得分为:" + scores);
                System.exit(0);

            } else if (aaa < 100 || aaa > 100) {
                System.out.println("你输入的数字有误");
            }
猜对后还要加分
[Java] 纯文本查看 复制代码
scores++;

全代码如下,计时类
[Java] 纯文本查看 复制代码
public class threaddemo extends Thread{
    private int hour;  //小时
    private int seconds;//秒
    private int minutes;//分钟

    //计时方法
    @Override
    public void run() {
        for (;;){
        for (hour=0;hour<24;hour++){
            for (minutes=0;minutes<60;minutes++){
                for(seconds=0;seconds<60;seconds++){
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }}

    //获取小时
    public int getHour() {
        return hour;
    }
    //获取分钟
    public int getMinutes() {
        return minutes;
    }
    //获取秒
    public int getSeconds() {
        return seconds;
    }
}
测试类:
[Java] 纯文本查看 复制代码
import java.util.Random;
import java.util.Scanner;

public class main {
    private static int scores=0;
    public static void main(String[] args) {
        System.out.println("欢迎来到猜数字游戏");
        System.out.println("输入1开始游戏,输入2结束游戏");
        //创建一个接收输入数据的对象
        Scanner sc=new Scanner(System.in);
        int sca=sc.nextInt();
        switch (sca){

            case 1:playgame();
                    break;
            case 2:System.exit(0);
                    break;
        }
    }

    public static void playgame() {
        System.out.println("开始游戏啦");
        System.out.println("输入222是结束游戏哦");
        System.out.println("");
        //创建计时类的对象
        threaddemo th=new threaddemo();
        th.start();
        //置随机数
        Random r=new Random();
        int ra=r.nextInt(100)+1;
        //创建一个输入数据的对象
        while (true) {
            Scanner sc = new Scanner(System.in);
            int sca = sc.nextInt();
            int aaa = sca;
            if (sca > 0 && sca > ra && sca < 100) {
                System.out.println("你猜大了");
            } else if (sca > 0 && sca < ra && sca < 100) {
                System.out.println("你猜小了");
            } else if (sca > 0 && sca == ra && sca < 100) {
                System.out.println("恭喜你,猜对了");
                scores++;
                System.out.println("输入1为继续");
                System.out.println("输入222为结束游戏");
                //创建一个输入数据的对象,判断是否继续
                Scanner scc = new Scanner(System.in);
                int scca = scc.nextInt();
                switch (scca) {
                    case 1:
                        playgame();
                        break;
                    case 222:
                        System.out.println("您的游戏时间是:" + th.getHour() + "小时" + th.getMinutes() + "分钟" + th.getSeconds() + "秒");
                        System.out.println("您的游戏得分为:" + scores);
                        System.exit(0);
                        break;
                }
            } else if (aaa == 222 && aaa > 100) {
                System.out.println("您的游戏时间是:" + th.getHour() + "小时" + th.getMinutes() + "分钟" + th.getSeconds() + "秒");
                System.out.println("您的游戏得分为:" + scores);
                System.exit(0);

            } else if (aaa < 100 || aaa > 100) {
                System.out.println("你输入的数字有误");
            }
        }

    }
}


评分

参与人数 6HB +5 THX +2 收起 理由
消逝的过去 + 1
创客者V2.0 + 1
后学真 + 1
zxjzzh + 2 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
agan8888 + 1
pmm018 + 1

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
 楼主| 白云点缀的蓝 发表于 2020-10-12 20:40 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Pit丶妖 发表于 2020-10-13 00:00 | 显示全部楼层

本帖最后由 Pit丶妖 于 2020-10-13 00:02 编辑

主类

[Java] 纯文本查看 复制代码
package test;

import java.util.Random;
import java.util.Scanner;
 
public class main1 {
    private static int scores=0;
    public static void main(String[] args) {
        System.out.println("欢迎来到猜数字游戏");
        System.out.println("输入1开始游戏,输入2结束游戏");
        //创建一个接收输入数据的对象
        Scanner sc=new Scanner(System.in);
        int sca=sc.nextInt();
        switch (sca){
 
            case 1:playgame();
                    break;
            case 2:System.exit(0);
                    break;
        }sc.close();
    }
 
    public static void playgame() {
        System.out.println("开始游戏啦");
        System.out.println("输入222是结束游戏哦");
        System.out.println("");
        //创建计时类的对象
        thred th=new thred();
        th.start();
        //置随机数
        Random r=new Random();
        int ra=r.nextInt(100)+1;
        //创建一个输入数据的对象
        while (true) {
            Scanner sc = new Scanner(System.in);
            int sca = sc.nextInt();
            int aaa = sca;
            if (sca > 0 && sca > ra && sca < 100) {
                System.out.println("你猜大了");
            } else if (sca > 0 && sca < ra && sca < 100) {
                System.out.println("你猜小了");
            } else if (sca > 0 && sca == ra && sca < 100) {
                System.out.println("恭喜你,猜对了");
                scores++;
                System.out.println("输入1为继续");
                System.out.println("输入222为结束游戏");
                sc.close();
                //创建一个输入数据的对象,判断是否继续
                Scanner scc = new Scanner(System.in);
                int scca = scc.nextInt();
                switch (scca) {
                    case 1:
                        playgame();
                        break;
                    case 222:
                        System.out.println("您的游戏时间是:" + th.getHour() + "小时" + th.getMinutes() + "分钟" + th.getSeconds() + "秒");
                        System.out.println("您的游戏得分为:" + scores);
                        System.exit(0);
                        break;
                }scc.close();
            } else if (aaa == 222 && aaa > 100) {
                System.out.println("您的游戏时间是:" + th.getHour() + "小时" + th.getMinutes() + "分钟" + th.getSeconds() + "秒");
                System.out.println("您的游戏得分为:" + scores);
                System.exit(0);
 
            } else if (aaa < 100 || aaa > 100) {
                System.out.println("你输入的数字有误");
            }
        }


[Java] 纯文本查看 复制代码
package test;

public class thred extends Thread{
    private int hour;  //小时
    private int seconds;//秒
    private int minutes;//分钟
 
    //计时方法
    @Override
    public void run() {
        for (;;){
        for (hour=0;hour<24;hour++){
            for (minutes=0;minutes<60;minutes++){
                for(seconds=0;seconds<60;seconds++){
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }}
 
    //获取小时
    public int getHour() {
        return hour;
    }
    //获取分钟
    public int getMinutes() {
        return minutes;
    }
    //获取秒
    public int getSeconds() {
        return seconds;
    }

}






吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
BurnlOvKFAPD 发表于 2022-2-24 04:22 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
UpjaxeJ67380 发表于 2022-3-1 01:23 | 显示全部楼层

不知道来晚了没有
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
omgTsQ6917 发表于 2022-3-24 10:27 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
XeTI3 发表于 2022-3-27 18:57 | 显示全部楼层

感谢楼主
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
WGIJlqH 发表于 2022-4-5 22:50 | 显示全部楼层

谢谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
alYhPoEXkdx 发表于 2022-4-14 10:24 | 显示全部楼层

谢谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
KcthLpNC593 发表于 2022-4-14 10:47 | 显示全部楼层

楼主好强啊!学习了!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

快速回复 返回顶部 返回列表