小编Nic*_*son的帖子

Component.setBounds 调用 Component.repaint?

所以我正在制作一个游戏,我有EnemyAI以及 ,player并且它们都扩展了JPanel。世界有一个null布局,所以我用来setBounds();“移动”(实际上我只是移动世界图像)entities(playerAI) 并正确放置它们。但是当我添加(看起来像是,我测试了可能的最小数字)5 时,它repaint()完全自行调用。这会导致玩家视觉上在原地行走。添加的实体越多,间隔就越快(即 5 个实体的调用repaint()比 500 个实体的调用慢得多)。

注意:window下面的类中只是一个JFrame.

主要类别:

public class Game(){
public static boolean fighting = false;
public static void startGame(){
    WorldPanel game = new WorldPanel();
    game.setPreferredSize(new Dimension(window.getWidth(), window.getHeight()));
    PlayerPane player = new PlayerPane(32,32, "Player 1");
    game.addKeyListener(new KeyListener(){

        public void keyPressed(KeyEvent arg0) {
            if(fighting == false){
                move(player, game, arg0.isShiftDown(), arg0.getKeyCode());
            } else {
                System.out.println("Fighting …
Run Code Online (Sandbox Code Playgroud)

java swing multithreading

2
推荐指数
1
解决办法
451
查看次数

更好的整数随机数生成器

目前,我使用随机数生成JPanel中的组件位置.我发现使用Random.nextInt(6000);返回太少的数字少于100,太多,我的意思是它们中的大多数都小于100.所以我调查了它,发现了一个更高质量的随机数发生器,Long所以我采用了自由地格式化它(参见下面的实现).之后我在1000-2000范围内获得了太多数字.

在使用计数器变量进行测试后,当我生成2000个数字时,其中大约1350个数字在该范围内.

我需要一个更随机的数字生成器,甚至是一个 真正随机的数字生成器(我不希望得到它,但如果我能得到它会很好).

随机类:

public class HighQualityRandom extends Random {
private static final long serialVersionUID = 1L;

private Lock l = new ReentrantLock();
  private long u;
  private long v = 4101842887655102017L;
  private long w = 1;

  public HighQualityRandom() {
    this(System.nanoTime());
  }
  public HighQualityRandom(long seed) {
    l.lock();
    u = seed ^ v;
    nextLong();
    v = u;
    nextLong();
    w = v;
    nextLong();
    l.unlock();
  }

  public long nextLong() {
    l.lock();
    try {
      u = u * …
Run Code Online (Sandbox Code Playgroud)

java random

-1
推荐指数
1
解决办法
1138
查看次数

标签 统计

java ×2

multithreading ×1

random ×1

swing ×1