我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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如何利用随机分钱模拟财富变化”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

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

这篇文章主要为大家详细介绍了Java如何利用随机分钱思想模拟财富的变化,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
2022-12-21

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

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

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录