文章详情

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

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-07-04 19:51

关注

这篇“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

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯