当前位置: 首页 > 知识库问答 >
问题:

在Java中如何防止这些范围重叠?

师谦
2023-03-14

我正在用java编写一些代码,它检查一个由51个对象组成的数组,名为beatarr,这些对象是从右向左移动到x:200px位置的播放器的圆圈。我想使它这样,玩家被判分或扣分的基础上,他们的按钮按下的时间与一个节拍的位置相比,到目前为止,我有以下几个:

 public static void hit(){
        //Method for player to hit the beat
        for (Beat beat : Game.beatArr) {
            if (beat.getX() <= 220 && beat.getX() >=150){
                score+=100;
                System.out.println("Perfect+ "+score);
            }

            else if (beat.getX() <= 250 && beat.getX() >=100) {
                score += 100;
                System.out.println("Good "+score);
            }

            else if(beat.getX() <=99 && beat.getX()>=0 | beat.getX() >250){
                score -=50;
                System.out.println("Miss " + score);
            }
        }

这种方法会导致几个问题,因为范围重叠,以此类推,按下按钮通常会输出如下内容:

Miss 3000
Good 3100
Good 3200

然而,我希望它一次只检查一个位置,例如最靠近播放器的位置,或者是迭代器,用于检查数组中给定位置的对象,我不确定它的语法。到目前为止,我已经尝试改变支票的顺序,看看这是否会影响到不幸的是没有影响到的任何事情。

Good 100
Good 200
Good 300
Good 400
Good 500
Good 600
Good 700
Good 800
Good 900
Good 1000
Good 1100
Good 1200
Good 1300
Good 1400
Good 1500
Good 1600
Good 1700
Good 1800
Good 1900
Good 2000
Good 2100
Good 2200
Good 2300
Good 2400
Good 2500
Good 2600
Good 2700
Good 2800
Good 2900
Good 3000
Good 3100
Good 3200
Good 3300
Good 3400
Good 3500
Good 3600
Good 3700
Good 3800
Good 3900
Good 4000
Good 4100
Good 4200
Good 4300
Good 4400
Good 4500
Good 4600
Good 4700
Good 4800
Good 4900
Good 5000
Good 5100

创建Beatarr:

 public static Beat [] beatArr = new Beat [51];

  int startingPoint = 800;
        //For loop 51 times
        for(int i=0;i<=50;i++){
            //modifier to start position to create differing gaps between beats
            int startModifier = random.nextInt(50);
            // instantiates objects into an array for each iteration of the loop
            handler.addObject(beatArr[i] = new Beat(startingPoint,300,ID.Beat));
            //redefines the starting point for each beat
            startingPoint = startingPoint+50+startModifier;

        }

共有1个答案

宇文学博
2023-03-14

名为beatarr的51个对象的数组

我相信排队会更符合你的目的。

    public static void hit(){
        //Method for player to hit the beat
        if (Game.beatArr.size()>0) {
            Beat beat = beatArr.remove();//use add() when inserting Beats into beatArr
            if (beat.getX() <= 220 && beat.getX() >=150) {
                score += 100;
                System.out.println("Perfect+ " + score);
            }
        
            else if (beat.getX() <= 250 && beat.getX() >=100) {
                score += 75;
                System.out.println("Good " + score);
            }
        
            else if(beat.getX() <=99 && beat.getX()>=0 || beat.getX() >250){
                score -= 50;
                System.out.println("Miss " + score);
            }
        }
        else {//No beats hence "Miss!"
            score -= 50;
            System.out.println("Miss " + score);
        }
    }

此函数执行以下操作:

    null
 类似资料:
  • 我是Java编程的初学者。我是在编写一个基于prime checker的程序时遇到这个问题的。已经明确指出,; 编辑器中锁定的代码将使用一个或多个整数参数调用checkPrime方法。您应该以这样的方式编写checkPrime方法:代码只打印素数。请仔细阅读编辑器中给出的代码。也请不要使用方法重载! 我想知道下面的评论行w. r. t.下面的Java程序之后的声明的作用是什么? 它们在锁定代码中的

  • 对易失性字段的写和读分别防止了在易失性字段之前和之后的读/写的重新排序。在写到易失性变量之前的变量读/写不能被重新排序为在它之后发生,在从易失性变量读到之后的读/写不能被重新排序为在它之前发生。但是这种禁止的范围是什么呢?正如我所理解的,volatile变量只能在使用它的块内防止重新排序,对吗? 为了清楚起见,让我举一个具体的例子。假设我们有这样的代码: 让我再举一个具体的例子来说明范围以澄清事情

  • 在这方面花费了太多时间后,我认为根本问题在于我在一个无意的使用模型中误用/滥用了JSlider。限制拇指的移动范围小于BoundedRangeModel范围需要修改BasicSliderUI类。虽然下面aterai提出的原始解决方案确实有效,但它需要重写一个SliderUI实现类,这会影响PLAF的可移植性和一致性。因此,要么我必须找到一个不同的UI元素,要么根据其他相互依赖的变量值修改JSlid

  • 问题内容: Python中确定两个范围中的哪些值重叠的最佳方法是什么? 例如: 给定一个范围x,迭代另一个范围y并输出两个范围共享的所有值的最佳方法是什么?先谢谢您的帮助。 编辑: 作为后续,我意识到我还需要知道x是否与y重叠。我正在寻找一种方法来遍历范围列表,并做一些范围重叠的其他事情。是否有简单的True / False语句来完成此操作? 问题答案: 尝试设置交集: 请注意,接受任何可迭代的参

  • 问题内容: 听起来很简单…但是我一直在努力解决这个问题,试图找到一个解决方案。 对于一个数字范围,例如 1-12 ,我想在该范围内生成一个随机序列, 并 包括 1 和 12 。 不过我不想重复数字 。 所以我想要这样的东西-3,1,8,6,5,4 ..依此类推,每个数字从1到12。 然后,我想将这些随机数放入,并使用该数组“随机”选择并在jsp页面上显示一些项目(例如从数据库中提取的清单)。 到目

  • 问题内容: 我认为这是一个普遍的问题,不需要从我的图表中获取太多信息。 我想防止列彼此重叠/重叠,该怎么办? 请参阅下面的图像链接,了解现在的情况 http://highslide.com/forum/download/file.php?id=3157 jsfiddle:http : //jsfiddle.net/Dzs5q/ 问题答案: 请尝试在此处重现该错误@ http://jsfiddle.