返回顶部
首页 > 资讯 > 精选 >Java如何利用随机分钱模拟财富变化
  • 823
分享到

Java如何利用随机分钱模拟财富变化

2023-07-04 19:07:26 823人浏览 薄情痞子
摘要

这篇“Java如何利用随机分钱模拟财富变化”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java如何利用随机分钱模拟财富变化

这篇“Java如何利用随机分钱模拟财富变化”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java如何利用随机分钱模拟财富变化”文章吧。

效果图

如果财富为负值时可以通过键盘和鼠标事件让其反转方向

Java如何利用随机分钱模拟财富变化

示例代码

import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.Arrays; public class AlGoVisualizer {     private static int DELAY = 40;    private int[] money;    private AlgoFrame frame;     public AlgoVisualizer(int sceneWidth, int sceneHeight){         // 初始化数据        money = new int[100];        for(int i = 0 ; i < money.length ; i ++)            money[i] = 100;         // 初始化视图        EventQueue.invokeLater(() -> {            frame = new AlgoFrame("Money Problem", sceneWidth, sceneHeight);            this.frame.addKeyListener(new AlgoKeyListener());            frame.addMouseListener(new AlgoMouseListener());            new Thread(() -> {                run();            }).start();        });    }     public void run(){         while(true){             // 改进2:是否排序            Arrays.sort(money);            frame.render(money);            AlgoVisHelper.pause(DELAY);             // 改进1:每一帧执行的轮数            for(int k = 0 ; k < 50 ; k ++){                for(int i = 0 ; i < money.length; i ++){                    // 改进3:允许money为负值                    //if(money[i] > 0){                        int j = (int)(Math.random() * money.length);                        money[i] -= 1;                        money[j] += 1;                    //}                }            }        }    }     public static void main(String[] args) {         int sceneWidth = 1000;        int sceneHeight = 800;         AlgoVisualizer vis = new AlgoVisualizer(sceneWidth, sceneHeight);    }       private class AlgoKeyListener extends KeyAdapter {        private AlgoKeyListener() {}         public void keyReleased(KeyEvent event) {            if (event.geTKEyChar() == 'u') {                System.out.println("字母u");                AlgoVisHelper.is_change = true;            }            if (event.getKeyChar() == 'd') {                System.out.println("字母d");                 AlgoVisHelper.is_change = false;            }             if (event.getKeyChar() == ' ') {                System.out.println("空格");                AlgoVisHelper.is_change = !AlgoVisHelper.is_change ;            }          }    }      private class AlgoMouseListener extends MouseAdapter {        private AlgoMouseListener() {        }         public void mousePressed(MouseEvent event) {//            event.translatePoint(0, -(AlgoVisualizer.this.frame.getBounds().height - AlgoVisualizer.this.frame.getcanvasHeight())); //            left           if (event.getButton() == 1)           {               System.out.println("Left button pressed");               AlgoVisHelper.is_change = true;            }//         right           else if( event.getButton() == 3)           {               System.out.println("right button pressed");                AlgoVisHelper.is_change = false;            }//            System.out.println("mousePressed");//            AlgoVisHelper.is_change = !AlgoVisHelper.is_change;         }    }  }
import javax.swing.*;import java.awt.*;import java.awt.geom.*;import java.lang.InterruptedException; public class AlgoVisHelper {     private AlgoVisHelper(){}      public static final Color Red = new Color(0xF44336);    public static final Color Pink = new Color(0xE91E63);    public static final Color Purple = new Color(0x9C27B0);    public static final Color DeepPurple = new Color(0x673AB7);    public static final Color Indigo = new Color(0x3F51B5);    public static final Color Blue = new Color(0x2196F3);    public static final Color LightBlue = new Color(0x03A9F4);    public static final Color Cyan = new Color(0x00BCD4);    public static final Color Teal = new Color(0x009688);    public static final Color Green = new Color(0x4CAF50);    public static final Color LightGreen = new Color(0x8BC34A);    public static final Color Lime = new Color(0xCDDC39);    public static final Color Yellow = new Color(0xFFEB3B);    public static final Color Amber = new Color(0xFFC107);    public static final Color Orange = new Color(0xFF9800);    public static final Color DeepOrange = new Color(0xFF5722);    public static final Color Brown = new Color(0x795548);    public static final Color Grey = new Color(0x9E9E9E);    public static final Color BlueGrey = new Color(0x607D8B);    public static final Color Black = new Color(0x000000);    public static final Color White = new Color(0xFFFFFF);      public static void strokeCircle(Graphics2D g, int x, int y, int r){         Ellipse2D circle = new Ellipse2D.Double(x-r, y-r, 2*r, 2*r);        g.draw(circle);    }     public static void fillCircle(Graphics2D g, int x, int y, int r){         Ellipse2D circle = new Ellipse2D.Double(x-r, y-r, 2*r, 2*r);        g.fill(circle);    }     public static void strokeRectangle(Graphics2D g, int x, int y, int w, int h){         Rectangle2D rectangle = new Rectangle2D.Double(x, y, w, h);        g.draw(rectangle);    }     public static void fillRectangle(Graphics2D g, int x, int y, int w, int h){         Rectangle2D rectangle = new Rectangle2D.Double(x, y, w, h);        g.fill(rectangle);    }     public static void setColor(Graphics2D g, Color color){        g.setColor(color);    }     public static void setStrokeWidth(Graphics2D g, int w){        int strokeWidth = w;        g.setStroke(new BasicStroke(strokeWidth, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));    }     public static void pause(int t) {        try {            Thread.sleep(t);        }        catch (InterruptedException e) {            System.out.println("Error sleeping");        }    }     public static void putImage(Graphics2D g, int x, int y, String imageURL){         ImageIcon icon = new ImageIcon(imageURL);        Image image = icon.getImage();         g.drawImage(image, x, y, null);    }     public static void drawText(Graphics2D g, String text, int centerx, int centery){         if(text == null)            throw new IllegalArgumentException("Text is null in drawText function!");         FontMetrics metrics = g.getFontMetrics();        int w = metrics.stringWidth(text);        int h = metrics.getDescent();        g.drawString(text, centerx - w/2, centery + h);    }     public  static  int changeDir(int change)    {//        System.out.println("bollen");        change += 2;         return change;    }     public static boolean is_change = false; }
import java.awt.Graphics2D;import java.awt.Graphics;import java.awt.Dimension;import java.awt.Color;import java.awt.RenderingHints;import java.util.ArrayList;import java.util.Map;import java.util.HashMap; import javax.swing.*; public class AlgoFrame extends JFrame{     private int canvasWidth;    private int canvasHeight;     public AlgoFrame(String title, int canvasWidth, int canvasHeight){         super(title);         this.canvasWidth = canvasWidth;        this.canvasHeight = canvasHeight;         AlgoCanvas canvas = new AlgoCanvas();        setContentPane(canvas);        pack();          setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        setResizable(false);         setVisible(true);    }     public AlgoFrame(String title){         this(title, 1024, 768);    }     public int getCanvasWidth(){return canvasWidth;}    public int getCanvasHeight(){return canvasHeight;}     // data    private int[] money;    public void render(int[] money){        this.money = money;        repaint();    }     private class AlgoCanvas extends JPanel{         public AlgoCanvas(){            // 双缓存            super(true);        }         @Override        public void paintComponent(Graphics g) {            super.paintComponent(g);             Graphics2D g2d = (Graphics2D)g;             // 抗锯齿            RenderingHints hints = new RenderingHints(                    RenderingHints.KEY_ANTIALIASING,                    RenderingHints.VALUE_ANTIALIAS_ON);            hints.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);            g2d.addRenderingHints(hints);             // 具体绘制            int w = canvasWidth / money.length;            for(int i = 0 ; i < money.length ; i ++)                 if(money[i] > 0) {                    AlgoVisHelper.setColor(g2d, AlgoVisHelper.Blue);                    AlgoVisHelper.fillRectangle(g2d,                            i * w + 1, canvasHeight / 2 - money[i], w - 1, money[i]);                }                else{                     if(AlgoVisHelper.is_change == true)                    {                        AlgoVisHelper.setColor(g2d, AlgoVisHelper.Red);                        AlgoVisHelper.fillRectangle(g2d,                                i * w + 1, canvasHeight / 2 + money[i] , w - 1, -money[i]);                    }                    else                    {                        AlgoVisHelper.setColor(g2d, AlgoVisHelper.Red);                        AlgoVisHelper.fillRectangle(g2d,                                i * w + 1, canvasHeight / 2 , w - 1, -money[i]);                    }                  }                  下移至图像下面开始//            if(money[i] > 0) {//                AlgoVisHelper.setColor(g2d, AlgoVisHelper.Blue);//                AlgoVisHelper.fillRectangle(g2d,//                        i * w + 1, canvasHeight  - money[i], w - 1, money[i]);//            }//            else{////                AlgoVisHelper.setColor(g2d, AlgoVisHelper.Red);//                AlgoVisHelper.fillRectangle(g2d,//                        i * w + 1, canvasHeight + money[i] , w - 1, -money[i]);//            }//        }         @Override        public Dimension getPreferredSize(){            return new Dimension(canvasWidth, canvasHeight);        }    }}

以上就是关于“Java如何利用随机分钱模拟财富变化”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

--结束END--

本文标题: Java如何利用随机分钱模拟财富变化

本文链接: https://lsjlt.com/news/347316.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java利用随机分钱模拟财富变化
    效果图 如果财富为负值时可以通过键盘和鼠标事件让其反转方向 示例代码 import java.awt.*; import java.awt.event.*; import java...
    99+
    2022-12-21
    Java 随机分钱 Java随机
  • Java如何利用随机分钱模拟财富变化
    这篇“Java如何利用随机分钱模拟财富变化”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java如何利用随机分钱模拟财富变化...
    99+
    2023-07-04
  • 如何在 Golang 中使用随机数进行模拟?
    使用 math/rand 包进行随机数模拟:导入 math/rand 包。使用 time.now().unixnano() 初始化随机数生成器。使用 rand.intn(n) 生成 0 ...
    99+
    2024-05-13
    模拟 随机数 golang
  • Vue3+Vite项目如何使用mockjs随机模拟数据
    今天小编给大家分享一下Vue3+Vite项目如何使用mockjs随机模拟数据的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。在...
    99+
    2023-07-05
  • 利用JAVA如何根据概率生成随机数
    这期内容当中小编将会给大家带来有关利用JAVA如何根据概率生成随机数,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。具体方法如下:import java.util.ArrayList;import...
    99+
    2023-05-31
    java ava
  • 如何用Java模拟XN*2图灵机
    题目描述: 对于XN*2图灵机进行模拟,任意给定的十进制数,转换为收缩扩展二进制的编码,再编程模拟此Turing机的运行过程,要求输出从开始运行起的每一步骤的结果。用C或C++或Ja...
    99+
    2024-04-02
  • 如何在java中利用RandomForest实现一个随机森林效果
    如何在java中利用RandomForest实现一个随机森林效果?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。随机森林是由多棵树组成的分类或回归方法。主要思想来源于Baggin...
    99+
    2023-05-31
    java randomforest
  • 利用Java+Selenium+OpenCV模拟如何实现网页滑动验证
    本篇文章给大家分享的是有关利用Java+Selenium+OpenCV模拟如何实现网页滑动验证,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。目前很多网页都有滑动验证,目的就是防...
    99+
    2023-06-26
  • 如何使用Java模拟退火算法优化Hash函数
    目录一、背景二、放弃 hash 函数三、优化 hash 函数3.1、评价函数3.2、训练策略3.3、ForkJoin 框架3.4、效果一、背景 现有个处理股票行情消息的系统,其架构如...
    99+
    2024-04-02
  • 利用Java如何实现一个随机生成动态验证码功能
    利用Java如何实现一个随机生成动态验证码功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。前言相对来说呢,jpg格式的相对来说容易破解一点,当然也取决于你的干扰元素,元素...
    99+
    2023-05-31
    java 动态 验证码
  • 利用信号如何监控Django模型对象字段值的变化详解
    django信号系统 django自带一套信号发射系统来帮助我们在框架的不同位置传递信息.也就是说,当某一事件发生时,信号系统可以允许一个或多个发送者(senders)将通知或信号(signals)推送...
    99+
    2022-06-04
    字段 详解 模型
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作