IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> Java实现验证码、数字加密、双色球系统小案例 -> 正文阅读

[游戏开发]Java实现验证码、数字加密、双色球系统小案例

16.2 验证码

	/**
     * 随机生成指定长度验证码
     * @param n 长度
     * @return 生成的验证码
     */
    public static String createCode(int n){
        String code = "";
        for (int i = 0; i < n; i++) {
            Random random = new Random();
            // 生成一个随机字符:英文大写 小写 数字(0、1、2)
            int type = random.nextInt(3);
            switch (type) {
                case 0:
                    //大写字符 (A 65 - Z 65 + 25)
                    code += (char) (random.nextInt(26) + 'A');
                    break;
                case 1:
                    //小写字符
                    code += (char) (random.nextInt(26) + 'a');
                    break;
                case 2:
                    //数字字符
                    code += random.nextInt(10);
                    break;
            }
        }
        return code;
    }

16.3 数字加密

  • 实现
import java.util.Scanner;

/**
 * @author li
 * Create by li on 2022-04-27 19:17
 * 数字加密
 */
public class Test03 {
    public static void main(String[] args) {
        // 需求:数字加密
        // 1、定义一个数字存入需要加密的数字
        Scanner cin = new Scanner(System.in);
        System.out.println("请输入需要加密的数字个数:");
        int len = cin.nextInt();
        int[] arr = new int[len];
        for (int i = 0; i < len; i++) {
            System.out.print("请输入第"+(i+1)+"个数字:");
            arr[i] = cin.nextInt();
        }
        // 加密
        encryption(arr);
        // 打印
        printArray(arr);
    }

    /**
     * 打印加密后的数字
     * @param arr 存放数字的数组
     */
    public static void printArray(int[] arr) {
        System.out.print("[");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(i == arr.length -1 ? arr[i] : arr[i] + ", ");
        }
        System.out.println("]");
    }

    public static void encryption(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            arr[i] = (arr[i] + 5) % 10;
        }
        // 反转数组
        reverse(arr);
    }

    public static void reverse(int[] arr) {
        for (int i = 0, j = arr.length-1; i < j; i++,j--) {
            int t = arr[i];
            arr[i] = arr[j];
            arr[j] = t;
        }
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n0FBzWwx-1651073702058)(image/1651059152274.png)]

  • 这里既是加密程序也是解密程序

16.4 模拟双色球

  • 业务分析、随机生成一组中奖号码
  • 用户输入一组双色球号码
  • 判断中奖情况

实现

import java.util.Random;
import java.util.Scanner;

/**
 * @author li
 * Create by li on 2022-04-27 19:39
 * 模拟双色球系统
 */
public class Test04 {
    public static void main(String[] args) {
        // 调用方法生成一组幸运号码
        int[] luckNumbers = createLucNumber();
        // 输入用户选取的号码
        int [] userNumbers = userInputNumber();
        // 判断是否中奖
        judge(luckNumbers, userNumbers);
    }

    /**
     * 判断是否中奖
     * @param luckNumbers
     * @param userNumbers
     */
    public static void judge(int[] luckNumbers, int[] userNumbers){
        // 命中的红球个数
        int redHitNumbers = 0;
        int blueHitNumbers = 0;

        // 统计命中了红球的个数
        for (int i = 0; i < userNumbers.length-1; i++) {
            for(int j = 0; j < luckNumbers.length-1; j++){
                if (userNumbers[i] == luckNumbers[j]) {
                    redHitNumbers++;
                    break;
                }
            }
        }
        int n = userNumbers.length;
        blueHitNumbers = userNumbers[n-1] == luckNumbers[n-1] ? 1 : 0;

        int money = 0;
        if(blueHitNumbers == 1){
            switch (redHitNumbers) {
                case 0:
                case 1:
                case 2:
                    money = 5;
                    break;
                case 3:
                    money = 10;
                    break;
                case 4:
                    money = 200;
                    break;
                case 5:
                    money = 3000;
                    break;
                case 6:
                    money = 10000000;
                    break;
            }
        } else {
            switch (redHitNumbers) {
                case 4:
                    money = 10;
                    break;
                case 5:
                    money = 200;
                    break;
                case 6:
                    money = 5000000;
                    break;
            }
        }

        System.out.print("开奖号码是:");
        printArray(luckNumbers);
        System.out.print("您的投注号码是:");
        printArray(userNumbers);
        System.out.println("您命中了几个红球:"+redHitNumbers);
        System.out.println("您是否命中蓝球:"+(blueHitNumbers == 1 ? "是" : "否"));
        if(money == 0){
            System.out.println("感谢您为福利事业做出突出贡献!");
        } else {
            System.out.println("恭喜您,中了"+money+"元");
        }
    }

    public static void printArray(int[] arr) {
        System.out.print("[ ");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(i == arr.length - 1 ? arr[i] : arr[i] + ", ");
        }
        System.out.println("]");
    }
    /**
     * 输入用户的双色球号码
     * @return 双色球号码
     */
    public static int[] userInputNumber(){
        int[] userNumbers = new int[7];
        Scanner cin = new Scanner(System.in);
        for (int i = 0; i < userNumbers.length - 1; i++) {
            System.out.print("请输入第"+(i+1)+"个红球号码(1-33、不重复):");
            userNumbers[i] = cin.nextInt();
        }
        System.out.print("请输入蓝球号码(1-16、不重复):");
        userNumbers[userNumbers.length-1] = cin.nextInt();
        return userNumbers;
    }
    /**
     * 随机生成一组幸运号码
     * @return 生成的号码数组
     */
    public static int[] createLucNumber(){
        // 随机六个(1-33)不同的数字,随机一个蓝球号码(1-16)
        int[] numbers = new int[7];
        Random random = new Random();
        for (int i = 0; i < numbers.length-1; i++) {
            while(true){
                int num = random.nextInt(33) + 1;
                if (!check(numbers, i+1, num)) {
                    numbers[i] = num;
                    break;
                }
            }
        }
        // 为第七个位置生成一个蓝球号码
        while(true){
            int num = random.nextInt(16) + 1;
            if (!check(numbers, numbers.length-1, num)) {
                numbers[numbers.length-1] = num;
                break;
            }
        }
        return numbers;
    }

    /**
     * 判断是否存在重复数组
     * @param numbers 双色球数组
     * @param n 数组长度
     * @param num 判断数字
     * @return true:重复、fasle:不重复
     */
    public static boolean check(int[] numbers, int n, int num){
        for(int i = 0; i < n; i++){
            if(numbers[i] == num) {
                return true;
            }
        }
        return false;
    }
}

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-04-30 09:00:48  更:2022-04-30 09:02:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:41:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码