有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java垄断游戏

我制作了一个电路板,并将电路板的布局设置为空。所以我通过逐像素移动标记来定位它们。但在转弯时,我遇到了麻烦。在第一个10位之后,令牌可以转弯并继续下一个10位。但我的代币不可能达到2。转身
谁能给我一个更好的代码来解决这个问题吗。我觉得我让事情变得更复杂了

            if(g.getPosx() <= 650 && g.getPosx() >= 50 && g.getPosy()==650) {
            if(g.getPosx()-unitChange*d.getDice() <= 50) {
                temp = unitChange*d.getDice() - (g.getPosx() - 50);
                g.setPosx(50);
                g.setPosy(g.getPosy()-temp);
            }
            else {
                g.setPosx(g.getPosx()-unitChange*d.getDice());  
                temp = 0;
            }
        }
        else if(g.getPosy() <= 650 && g.getPosy() >= 50 && g.getPosx()==650) {
            if(g.getPosy()-unitChange*d.getDice() <= 50) {
                temp = unitChange*d.getDice() - (g.getPosy() - 50);
                g.setPosy(50);
                g.setPosx(g.getPosx()-temp);
            }
            else {
                g.setPosy(g.getPosy()-unitChange*d.getDice());  
                temp = 0;
            }
        }
        else if(g.getPosx() <= 650 && g.getPosx() >= 50 && g.getPosy()==50) {
            if(g.getPosx()-unitChange*d.getDice() <= 50) {
                temp = unitChange*d.getDice() - (g.getPosx() - 50);
                g.setPosx(50);
                g.setPosy(g.getPosy()-temp);
            }
            else {
                g.setPosx(g.getPosx()-unitChange*d.getDice());      
                temp = 0;
            }
        }
        else if(g.getPosy() <= 650 && g.getPosy() >= 50 && g.getPosx()==50) {
            if(g.getPosy()-unitChange*d.getDice() <= 50) {
                temp = unitChange*d.getDice() - (g.getPosy() - 50);
                g.setPosy(50);
                g.setPosx(g.getPosx()-temp);
            }
            else {
                g.setPosy(g.getPosy()-unitChange*d.getDice());  
                temp = 0;   
            }
        }

共 (1) 个答案

  1. # 1 楼答案

    不要使用当前的X和Y位置来跟踪工件停在哪个位置,而是尝试跟踪工件落在哪个属性上。因此,1号楼将是董事会上的第一站,一直走到39号位置的木板路。然后你可以有一个函数,比如

    movePlayerToLocation(Player player, int location){
    
        // calculate your x and y based on the property locatoin
    
        if(locatoin < 11){
          // on first edge
        } else if (location < 21) {
          // on second edge
        } else if (location < 31) 
          // on third edge
        } else {
          // on fourth edge of the board
        }
    
      // do your g.setPos-ing
    }