吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1136|回复: 6
收起左侧

[已解决] Java 细胞自动机 卡循环

[复制链接]
xuehan9527 发表于 2021-1-22 15:33
本帖最后由 xuehan9527 于 2021-1-23 16:29 编辑

尝试写了个细胞自动机的程序, 但是在点了开始后 循环会卡死, 如果把循环注释掉, 手动一次一次的点开始, 程序正常
谁能帮忙看看原因? 循环在 yunxing 这个方法里

[Java] 纯文本查看 复制代码
import java.awt.event.*;
import java.util.concurrent.TimeUnit;

public class Jianting implements ActionListener, MouseMotionListener {
    private boolean flag=false;
    private int shubiaoX,shubiaoY;
    private Xianshimianban xianshimianban;
    private Luoji panduan;

    public Jianting(Xianshimianban xianshimianban)
    {
        this.xianshimianban=xianshimianban;
        this.panduan= new Luoji();
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        String mingling= e.getActionCommand();
        switch(mingling)
        {
            case "qingkong":
                xianshimianban.clean();
                xianshimianban.repaint();
                break;
            case "kaishi":
                this.flag=true;
                this.yunxing();
                break;
            case "tingzhi":
                this.flag=false;
                //System.out.println("停止");
                break;
        }
    }

    @Override
    public void mouseDragged(MouseEvent e) {

            this.shubiaoX = e.getX() / 16;
            this.shubiaoY = e.getY() / 16;
            //System.out.println("x: "+shubiaoX+", y:"+shubiaoY);
            if (this.shubiaoY < 50 && this.shubiaoX < 50) {
                xianshimianban.setgaibian(shubiaoX, shubiaoY);

            }

        //xianshimianban.repaint();
    }

    public void yunxing()
    {
        panduan.linshishuzu(xianshimianban.getXianshishuzu());
 while(flag)
 {
            try{
                panduan.zidongji(xianshimianban.getXianshishuzu());
                TimeUnit.MILLISECONDS.sleep(500);
                xianshimianban.setXianshishuzu(panduan.getShuzutmp());
            }catch(Exception e){}
}
    }

    @Override
    public void mouseMoved(MouseEvent e) {

    }

    public int getShubiaoX() {
        return shubiaoX;
    }

    public int getShubiaoY() {
        return shubiaoY;
    }
}


加上循环后的状态

WBGyrsouID.gif

去掉循环后运行状态:
BeCVAlh25T.gif

感谢各位大佬, 问题找到了
感谢QQ群中 "rose的美少女粉丝" 以及各位关注这个的问题大佬 帮助

W@R`E9M{J)J89Y[S95076MU.jpg

~@BJL}F60E~WVO`1R0)W)7Q.jpg
EO~5YX)41%UWKPB2JX}%{`D.jpg
VIODPO98FOU4I$VFQ@O6L%J.png


发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| xuehan9527 发表于 2021-1-22 15:49
这是我画图使用的类:
[Java] 纯文本查看 复制代码
import javax.swing.*;
import java.awt.*;

public class Xianshimianban extends JPanel {
    private int[][] xianshishuzu=null;

    public Xianshimianban()
    {
        xianshishuzu=new int[50][50];
        for(int i=0;i<50;i++)
        {
            for(int j=0;j<50;j++)
            {
                xianshishuzu[i][j]=0;
            }
        }
    }
    public void paint (Graphics g)
    {
        super.paint(g);
        for(int i=0;i<50;i++)
        {
            for(int j=0;j<50;j++)
            {
                g.setColor(Color.WHITE);
                g.drawRect(i*16,j*16,16,16);
                if(xianshishuzu[i][j]==0)
                {
                    g.setColor(Color.LIGHT_GRAY);
                    g.fill3DRect((i*16+1),(j*16+1),15,15,false);
                }else{
                    g.setColor(Color.BLACK);
                    g.fill3DRect((i*16+1),(j*16+1),15,15,true);
                }
            }
        }
    }

    public void clean()
    {
        for(int i=0;i<50;i++)
        {
            for(int j=0;j<50;j++)
            {
                xianshishuzu[i][j]=0;
            }
        }
    }

    public void setgaibian(int x, int y)
    {
        xianshishuzu[x][y]=1;
        this.repaint();
    }
    public int[][] getXianshishuzu() {
        return xianshishuzu;
    }

    public void setXianshishuzu(int[][] xianshishuzu) {
        this.xianshishuzu = xianshishuzu;
        this.repaint();
    }
}
c03xp 发表于 2021-1-22 16:10
堕落ぁ狼 发表于 2021-1-22 16:35
马云爱逛京东 发表于 2021-1-22 16:37
说真的,你这个命名和代码编写我看着有点头大。。
你变量和类名要么用英文,要么都用汉字吧,拼音和英文看起来好难受啊。。。
Kiss灬唯 发表于 2021-1-22 16:53
catch了Exception 你就打印一下,还有就是 这个程序 debugger模式启动不行么?
 楼主| xuehan9527 发表于 2021-1-22 17:33
本帖最后由 xuehan9527 于 2021-1-22 21:52 编辑

感谢各位大佬, 找到问题了
QQ图片20210122173213.png
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-19 02:00

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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