Проблемы отдачи

Проблематика

У меня есть программа, в которой я делаю алгоритм N Королевы графической формы для того, чтобы Вы были игрой, вся программа функционирует хорошо, и когда королевы размещены правильной формы все, бежит совершенно, но моя проблема начинается следующего способа.

Когда я двигаю предметы, у меня есть договоренность, где меня, должно быть, представляет настоящая позиция предмета в табло (Все то, что я говорю, я печатаю в программе), но иногда, когда мне удается двинуть предметы очень быстро, Вы не делаете мне операции должным образом и aveces Вы помещаете мне плохо договоренность, это не замечает с компьютера так, что я имею, так как у Вас есть хорошие компоненты, но когда я прохожу программу на распространенном компьютере, начинает производить проблемы с этим.

Я думаю, что главная проблема - методы mouseReleased и mousePressed где я выполняю операции, которые берутся за договоренность, о которой я упоминаю Вам, не, как он мог бы улучшать отдачу программы для того, чтобы все было выполнено лучшего способа, так этих методов, о которых я упоминаю как и остаюсь от методов программы, так что, если Вы могли помогать мне с этим, он Вам был бы очень благодарен.

Метод posicion Вы оптимизированы плохо в большей степени и во многих ocaciones Вы производите ошибки, установив элементы.

РЕЗЮМЕ

Программа не удается в некоторых случаях, хотя все королевы будут размещены должным образом, единственная форма, которой программа удается безусловно, состоит в том, чтобы двигать предметы очень медленной формы и Вам удается дать сообщение Felicidades, completaste el juego de N reinas взамен с ошибкой, за которой последует в некоторых случаях программа, просто Вы бросаете где сообщение упоминая об ошибке, хотя это не будет правильно.

package otraprueba;

import java.awt.Color;
import java.awt.event.*;
import javax.swing.BorderFactory;
import javax.swing.*;
import javax.swing.border.Border;

public class OtraPrueba extends JFrame implements ActionListener {

    static int reinas = 0;
    String[][] algoritmo = new String[reinas][reinas];
    String[][] comprobacion = new String[reinas][reinas];
    int count = 0;
    int anchoAlto = 50;
    int margen = 25;
    int espacio = 50;
    JPanel jpanel = (JPanel) this.getContentPane();
    JLabel ex = new JLabel();
    JLabel label[] = new JLabel[reinas];
    JLabel tablero[][] = new JLabel[reinas][reinas];
    Border border = BorderFactory.createLineBorder(Color.black, 1);

    String[] parts;
    int x, y, cooX, cooY, newI, newJ;

    JButton boton1;

    public static void main(String[] args) {
        reinas = Integer.parseInt(JOptionPane.showInputDialog(null, "Ingrese la cantidad de reinas"));
        OtraPrueba op = new OtraPrueba();
        op.setBounds(0, 0, (60 * reinas), (60 * reinas));
        op.setVisible(true);
        op.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }

    public OtraPrueba() {
        // Declaracion de reinas
        for (int i = 0; i < label.length; i++) {
            label[i] = new JLabel();
            // r + r + r + r
            label[i].setBounds(margen + (espacio * i), margen, anchoAlto, anchoAlto);
            label[i].setText("Q" + (i + 1));
            label[i].setForeground(Color.red);
            label[i].setBorder(border);
            label[i].setHorizontalAlignment(SwingConstants.CENTER);
            label[i].addMouseMotionListener(new MouseMotionAdapter() {
                @Override
                public void mouseDragged(MouseEvent evt) {
                    arrastreReina(evt);
                }
            });
            label[i].addMouseListener(new MouseAdapter() {
                @Override
                public void mouseReleased(MouseEvent evt) {
                    arregloTablero(evt);
                }

                @Override
                public void mousePressed(MouseEvent evt) {
                    valoresIniciales(evt);
                }
            });
            jpanel.add(label[i]);

            for (int j = 0; j < algoritmo.length; j++) {
                if (i == 0) {
                    algoritmo[i][j] = Integer.toString((margen + (espacio * j))) + "|" + Integer.toString(margen);
                } else {
                    algoritmo[i][j] = "0|0";
                }
            }
        }

        // Declaracion del tablero
        for (int i = 0; i < tablero.length; i++) {
            for (int j = 0; j < tablero.length; j++) {
                tablero[i][j] = new JLabel();
                tablero[i][j].setBounds(margen + (espacio * i), margen + (espacio * j), anchoAlto, anchoAlto);
                tablero[i][j].setBorder(border);

                if ((i % 2 == 0) == (j % 2 == 0)) {
                    tablero[i][j].setBackground(Color.white);
                } else {
                    tablero[i][j].setBackground(Color.black);
                }

                tablero[i][j].setOpaque(true);
                tablero[i][j].setHorizontalAlignment(SwingConstants.CENTER);
                jpanel.add(tablero[i][j]);
            }
        }

        // Declaracion del boton
        setLayout(null);
        boton1 = new JButton("Finalizar");
        boton1.setBounds(25, 3, 90, 20);
        jpanel.add(boton1);
        boton1.addActionListener(this);

        ex.setBounds(margen, margen, anchoAlto, anchoAlto);
        jpanel.add(ex);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == boton1) {
            for (int i = 0; i < comprobacion.length; i++) {
                for (int j = 0; j < comprobacion.length; j++) {
                    if (algoritmo[i][j].equals("0|0")) {
                        comprobacion[i][j] = "*";
                    } else {
                        comprobacion[i][j] = "+";
                    }
                }
            }

            imprimirArreglo(comprobacion);

            int contUno = 0;
            int contDos = 0;
            int contTres = 0;

            int diagS, diagI;

            for (int i = 0; i < comprobacion.length; i++) {
                for (int j = 0; j < comprobacion.length; j++) {
                    // Comprobacion de filas
                    if (comprobacion[i][j].equals("+")) {
                        contUno++;
                        if (contUno == 2) {
                            JOptionPane.showMessageDialog(null, "Existe más de una reina en una fila");
                            break;
                        }
                    }

                    // Comprobacion de columnas
                    if (comprobacion[j][i].equals("+")) {
                        contDos++;
                        if (contDos == 2) {
                            JOptionPane.showMessageDialog(null, "Existe más de una reina en una columna");
                            break;
                        }

                        // Comprobacion de diagonales
                        diagS = j - 1;
                        diagI = j + 1;

                        if (diagS < 0) {
                            diagS = 0;
                        } else if (diagI >= comprobacion.length) {
                            diagI = (comprobacion.length - 1);
                        }

                        System.out.println("S/I: " + diagS + "/" + diagI);

                        if (i < comprobacion.length - 1) {
                            if (comprobacion[diagS][i + 1].equals("+") || comprobacion[diagI][i + 1].equals("+")) {
                                JOptionPane.showMessageDialog(null, "En alguna diagnoal de las reinas existe mas de una reina");
                                contTres = 2;
                                break;
                            }
                        }
                    }
                }
                if (contUno == 2 || contDos == 2 || contTres == 2) {
                    break;
                }
                contUno = 0;
                contDos = 0;
                contTres = 0;
            }

            if (contUno == 0 && contDos == 0 && contTres == 0) {
                JOptionPane.showMessageDialog(null, "Felicidades, completaste el juego de N Reinas");
            }
        }
    }

    public void arrastreReina(MouseEvent evt) {
        if (evt.getSource() instanceof JLabel) {
            ((JLabel) evt.getSource()).setLocation(posicion(evt)[0], posicion(evt)[1]);
        }
    }

    public void valoresIniciales(MouseEvent evt) {
        if (evt.getSource() instanceof JLabel) {
            this.newI = (posicion(evt)[1] - 25) / 50;
            this.newJ = (posicion(evt)[0] - 25) / 50;
            x = posicion(evt)[0];
            y = posicion(evt)[1];
            System.out.println("INI X/Y: " + this.newI + "/" + this.newJ);
            System.out.println("X/Y: " + x + "/" + y);
        }
    }

    public void arregloTablero(MouseEvent evt) {
        if (evt.getSource() instanceof JLabel) {
            int newX = (posicion(evt)[0] - x) / 50;
            int newY = (posicion(evt)[1] - y) / 50;

            System.out.println("pos X/Y: " + posicion(evt)[0] + "/" + posicion(evt)[1]);
            System.out.println("newX: " + newX + "\nnewY: " + newY);

            algoritmo[newI][newJ] = "0|0";
            System.out.println("newI/newJ: " + newI + "/" + newJ);
            algoritmo[newI + newY][newJ + newX] = Integer.toString(posicion(evt)[0]) + "|" + Integer.toString(posicion(evt)[1]);

            count++;
            System.out.println("Movimientos: " + count);
            imprimirArreglo(algoritmo);
        }
    }

    public void imprimirArreglo(String[][] arreglo) {
        for (String[] arreglo1 : arreglo) {
            for (int j = 0; j < arreglo.length; j++) {
                System.out.print(arreglo1[j] + "    ");
            }
            System.out.println("");
        }
    }

    public int[] posicion(MouseEvent evt) {
        int newX, newY;

        // Variables de entorno X
        String conX = Integer.toString(evt.getXOnScreen());
        String ultimoX = conX.substring(conX.length() - 2, conX.length());

        int primerosMenosUltimosX = Integer.parseInt(ultimoX);

        if (primerosMenosUltimosX < 25) {
            newX = 25 + (evt.getXOnScreen() - espacio - primerosMenosUltimosX);
        } else if (primerosMenosUltimosX < 75) {
            newX = 75 + (evt.getXOnScreen() - espacio - primerosMenosUltimosX);
        } else {
            newX = 25 + ((evt.getXOnScreen() - espacio + 100) - primerosMenosUltimosX);
        }

        // Variables de entorno Y
        String conY = Integer.toString(evt.getYOnScreen());
        String ultimoY = conY.substring(conY.length() - 2, conY.length());

        int primerosMenosUltimosY = Integer.parseInt(ultimoY);

        if (primerosMenosUltimosY < 25) {
            newY = 25 + (evt.getYOnScreen() - espacio - primerosMenosUltimosY);
        } else if (primerosMenosUltimosY < 75) {
            newY = 75 + (evt.getYOnScreen() - espacio - primerosMenosUltimosY);
        } else {
            newY = 25 + ((evt.getYOnScreen() - espacio + 100) - primerosMenosUltimosY);
        }

        int retorno[] = {newX, newY};

        return retorno;
    }

}
5
задан 03.11.2019, 21:59
2 ответа

В действительности есть проблема, которая производится, освободив мышь mouseReleased ()> arregloTablero () и есть:

java.lang. ArrayIndexOutOfBoundsException

, который производится в, когда ты освобождаешь мышь и пробуешь изменять стоимость в одной posiciГіn не существующий array:

algoritmo[newI][newJ] = "0|0";

В действительности ты должен использовать стоимость newI и newJ вычисленных, но начиная с mГ©todo posicion():

public void arregloTablero(MouseEvent evt) {
 if (evt.getSource() instanceof JLabel) {

            int position[] = posicion(evt);
            int newX = posicion(evt)[0];
            int newY = posicion(evt)[1];      
            newI = (newX - 25) / 50;
            newJ = (newY - 25) / 50;
            //int newX = (posicion(evt)[0] - x) / 50;
            //int newY = (posicion(evt)[1] - y) / 50;                
            ...
            ...                
            //* error algoritmo[newI][newJ] = "0|0";
            //Reemplaza con valor de posición.
            algoritmo[newJ][newI] = newX + "|" + newY;
            ...
            ...

Начальная стоимость "0|0" должна быть заменена внутри mГ©todo valoresIniciales():

algoritmo[newJ][newI] = "0|0";

Проблема в действительности - вычисление ячеек, так как от случая к случаю получается неправильная или отрицательная стоимость, которые не существуют в array!

у Тебя Есть какие-то проблемы в них mГ©todo arregloTablero(), posicion(), даже в ней impresiГіn стоимости договоренности осуществляется некорректно, потому что должны быть введенными algoritmo[newJ][newI] вместо algoritmo[newI][newJ] для того, чтобы оно функционировало правильно mГ©todo imprimirArreglo():

import java.awt.Color;
import java.awt.Point;
import java.awt.event.*;
import javax.swing.BorderFactory;
import javax.swing.*;
import javax.swing.border.Border;

public class OtraPrueba extends JFrame implements ActionListener {

    static int reinas = 3;
    String[][] algoritmo = new String[reinas][reinas];
    String[][] comprobacion = new String[reinas][reinas];
    int count = 0;
    int anchoAlto = 50; //Alto celda
    int margen = 25; //Margen superior, donde se posiciona botón finalizar.
    int espacio = 50; //Ancho celda
    JPanel jpanel = (JPanel) this.getContentPane();
    JLabel ex = new JLabel();
    JLabel label[] = new JLabel[reinas];
    JLabel tablero[][] = new JLabel[reinas][reinas];
    Border border = BorderFactory.createLineBorder(Color.black, 1);

    String[] parts;
    int x, y, cooX, cooY, newI, newJ;

    JButton boton1;

    public static void main(String[] args) {
        reinas =  Integer.parseInt(JOptionPane.showInputDialog(null, "Ingrese la cantidad de reinas"));
        OtraPrueba op = new OtraPrueba();
        op.setBounds(0, 0, (60 * reinas), (60 * reinas));
        op.setVisible(true);
        op.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }

    public OtraPrueba() {
        // Declaracion de reinas
        for (int i = 0; i < label.length; i++) {
            label[i] = new JLabel();
            // r + r + r + r
            label[i].setBounds(margen + (espacio * i), margen, anchoAlto, anchoAlto);
            label[i].setText("Q" + (i + 1));
            label[i].setForeground(Color.red);
            label[i].setBorder(border);
            label[i].setHorizontalAlignment(SwingConstants.CENTER);
            label[i].addMouseMotionListener(new MouseMotionAdapter() {
                @Override
                public void mouseDragged(MouseEvent evt) {
                    arrastreReina(evt);
                }
            });
            label[i].addMouseListener(new MouseAdapter() {
                @Override
                public void mouseReleased(MouseEvent evt) {
                    //System.out.println("mouseReleased " + evt.toString());
                    arregloTablero(evt);
                }

                @Override
                public void mousePressed(MouseEvent evt) {
                    //System.out.println("mousePressed " + evt.toString());
                    valoresIniciales(evt);
                }
            });
            jpanel.add(label[i]);

            for (int j = 0; j < algoritmo.length; j++) {
                if (i == 0) {
                    algoritmo[i][j] = Integer.toString((margen + (espacio * j))) + "|" + Integer.toString(margen);
                } else {
                    algoritmo[i][j] = "0|0";
                }
            }
        }

        // Declaracion del tablero
        for (int i = 0; i < tablero.length; i++) {
            for (int j = 0; j < tablero.length; j++) {
                tablero[i][j] = new JLabel();
                tablero[i][j].setBounds(margen + (espacio * i), margen + (espacio * j), anchoAlto, anchoAlto);
                tablero[i][j].setBorder(border);

                if ((i % 2 == 0) == (j % 2 == 0)) {
                    tablero[i][j].setBackground(Color.white);
                } else {
                    tablero[i][j].setBackground(Color.black);
                }

                tablero[i][j].setOpaque(true);
                tablero[i][j].setHorizontalAlignment(SwingConstants.CENTER);
                jpanel.add(tablero[i][j]);
            }
        }

        // Declaracion del boton
        setLayout(null);
        boton1 = new JButton("Finalizar");
        boton1.setBounds(25, 3, 90, 20);
        jpanel.add(boton1);
        boton1.addActionListener(this);

        ex.setBounds(margen, margen, anchoAlto, anchoAlto);
        jpanel.add(ex);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == boton1) {
            for (int i = 0; i < comprobacion.length; i++) {
                for (int j = 0; j < comprobacion.length; j++) {
                    if (algoritmo[i][j].equals("0|0")) {
                        comprobacion[i][j] = "*";
                    } else {
                        comprobacion[i][j] = "+";
                    }
                }
            }

            imprimirArreglo(comprobacion);

            int contUno = 0;
            int contDos = 0;
            int contTres = 0;

            int diagS, diagI;

            for (int i = 0; i < comprobacion.length; i++) {
                for (int j = 0; j < comprobacion.length; j++) {
                    // Comprobacion de filas
                    if (comprobacion[i][j].equals("+")) {
                        contUno++;
                        if (contUno == 2) {
                            JOptionPane.showMessageDialog(null, "Existe más de una reina en una fila");
                            break;
                        }
                    }

                    // Comprobacion de columnas
                    if (comprobacion[j][i].equals("+")) {
                        contDos++;
                        if (contDos == 2) {
                            JOptionPane.showMessageDialog(null, "Existe más de una reina en una columna");
                            break;
                        }

                        // Comprobacion de diagonales
                        diagS = j - 1;
                        diagI = j + 1;

                        if (diagS < 0) {
                            diagS = 0;
                        } else if (diagI >= comprobacion.length) {
                            diagI = (comprobacion.length - 1);
                        }

                        System.out.println("S/I: " + diagS + "/" + diagI);

                        if (i < comprobacion.length - 1) {
                            if (comprobacion[diagS][i + 1].equals("+") || comprobacion[diagI][i + 1].equals("+")) {
                                JOptionPane.showMessageDialog(null, "En alguna diagonal de las reinas existe mas de una reina");
                                contTres = 2;
                                break;
                            }
                        }
                    }
                }
                if (contUno == 2 || contDos == 2 || contTres == 2) {
                    break;
                }
                contUno = 0;
                contDos = 0;
                contTres = 0;
            }

            if (contUno == 0 && contDos == 0 && contTres == 0) {
                JOptionPane.showMessageDialog(null, "Felicidades, completaste el juego de N Reinas");
            }
        }
    }

    public void arrastreReina(MouseEvent evt) {
        if (evt.getSource() instanceof JLabel) {
            ((JLabel) evt.getSource()).setLocation(posicion(evt)[0], posicion(evt)[1]);
          }
    }

    public void valoresIniciales(MouseEvent evt) {
        if (evt.getSource() instanceof JLabel) {
            this.newI = (posicion(evt)[0] - 25) / 50;
            this.newJ = (posicion(evt)[1] - 25) / 50;

            x = posicion(evt)[0];
            y = posicion(evt)[1];
            System.out.println("* iniciales INI X/Y: " + this.newI + "/" + this.newJ);

            //Reemplaza valor inicial con "0|0"
            algoritmo[newJ][newI] = "0|0";
            imprimirArreglo(algoritmo);
        }
    }


    //Posibles valores en array.
    // 25/25  25/75  25/125
    // 25/75  75/75  125/75
    // 25/125 75/125 125/125

        public void arregloTablero(MouseEvent evt) {
        if (evt.getSource() instanceof JLabel) {

            int[] posicion = posicion(evt);            
            int newX = posicion(evt)[0];
            int newY = posicion(evt)[1];

            newI = (newX - 25) / 50;
            newJ = (newY - 25) / 50;

            System.out.println("*finales newI/newJ: " + newI + "/" + newJ);

             //Reemplaza con valor de posición.
            algoritmo[newJ][newI] = newX + "|" + newY;

            count++;
            System.out.println("Movimientos: " + count);
            imprimirArreglo(algoritmo);
        }
    }

    public void imprimirArreglo(String[][] arreglo) {
        System.out.println("/------------/");      
        for (String[] elemento : arreglo) {
            for (int j = 0; j < arreglo.length; j++) {
                System.out.print(elemento[j] + "    ");
            }
            System.out.println("");
        }
          System.out.println("/------------/");
    }


   public int[] posicion(MouseEvent evt) {
    JLabel label = (JLabel) evt.getSource();
    Point labelLocation = label.getLocation();
    int newX = labelLocation.x + evt.getX();
    int newY = labelLocation.y + evt.getY();

    newX = Math.min(Math.max(0, ((newX - margen) / espacio)), reinas - 1);
    newY = Math.min(Math.max(0, ((newY - margen) / espacio)), reinas - 1);    
    newX = (newX * espacio) + margen;
    newY = (newY * espacio) + margen;   

    int retorno[] = {newX, newY};
    return retorno;

}



}

Это примеры функционирования asГ - как она impresiГіn стоимости в array и Ваш comprobaciГіn:

introducir la descripción de la imagen aquíintroducir la descripción de la imagen aquí

introducir la descripción de la imagen aquíintroducir la descripción de la imagen aquí

3
ответ дан 01.12.2019, 14:38
  • 1
    Но сейчас проблема состоит в том, чтобы с изменениями, что ты показываешь мне договоренность, которую он подтверждает, что королевы были размещены правильно, он не двинул предметы внутри той же договоренности, которая стоит мне для того, чтобы подтвердить сказанные условные а следовательно, хотя будут довольно обеспеченными королевы он всегда дает ошибку. – ASASCED 05.11.2019, 23:23
  • 2
    @ASASCED ok он необходим подтверждать договоренность печатая положения, ты относишься в: 25|25 75|25 125|25 0|0 0|0 0|0 0|0 0|0 0|0 – Jorgesys♦ 05.11.2019, 23:25
  • 3
    такой он, этот я имею в виду, потому что после во всех положениях, где он отличался 0|0 combierte в +, и которые им нужно 0|0 в * тем, что, таким образом, я, переместить договоренность из-за условных, стоит мне для того, чтобы знать, ли размещены королевы подходящим или нет способом. – ASASCED 05.11.2019, 23:26
  • 4
    @ASASCED ok дай мне немного времени и má s поздно я изменяю для того, чтобы он напечатал informació n, которого ты требуешь. – Jorgesys♦ 05.11.2019, 23:38
  • 5
    ok, я буду надеяться, выполни первоначальный код для того, чтобы ты смог наблюдать превращение первоначальной договоренности, в которую я занимаю в проверке королев – ASASCED 05.11.2019, 23:50

Проблема estГЎ в ней funciГіn posicion(). Мне осложнено понимать чувство тебя implementaciГіn, где ты делаешь обработки Strings, когда действительно sГіlo он нужен делать операции matemГЎticas.

, Кроме того использовав их mГ©todos getXOnScreen, () положение, которое ты получаешь, оказывается затронутым ею posiciГіn окна.

Пытается с этой implementaciГіn:

public int[] posicion(MouseEvent evt) {
    JLabel label = (JLabel) evt.getSource();
    Point labelLocation = label.getLocation();

    int x = labelLocation.x + evt.getX();
    int y = labelLocation.y + evt.getY();

    // Obtener numero de casilla x, y
    x = (x - margen) / espacio;
    y = (y - margen) / espacio;

    // No posicionar fuera del tablero
    x = Math.min(Math.max(0, x), reinas - 1);
    y = Math.min(Math.max(0, y), reinas - 1);

    // Revertir posicion exacta de casilla
    x = (x * espacio) + margen;
    y = (y * espacio) + margen;

    return new int[] { x, y };
}

AГ±ado explicaciГіn

Мотив, из-за которого ты не должен использовать evt.getXOnScreen() для этого случая,, - потому что эта funciГіn возвращает ее posiciГіn, где кликают относительно экрана. А именно, возврати ее posiciГіn курсора с верхнего левого угла экрана. Следовательно, она posiciГіn JFrame на рабочем столе afectarГЎ в эту стоимость.

С другой стороны, с evt.getX() posiciГіn получается касающаяся компонента, который получает событие. В этом случае, касающаяся JLabel. Например: Если evt.getX () он возвращает 30, означай, что pulsaciГіn был сделан 30 pГ-xeles с левого края JLabel.

Именно поэтому во мне soluciГіn, я получаю evt.getX() и погружаю ее posiciГіn JLabel labelLocation.x. AsГ - sabrГЎs точной формы в quГ© posiciГіn из индикаторного табло была сделана она pulsaciГіn.

я показываю Тебе grГЎficamente дистанцию, которая возвращает каждую функцию, если мы нажимаем курсор в зоне Q2 , например:

Detalle de getXOnScreen() y getX()

Siguendo ты implementaciГіn, ты должен иметь в виду первоначальную маржу, которую ты применяешь к индикаторному табло, чтобы получать ее posiciГіn от нажатой будки.

, Сказанные это, выполнив cГіdigo, посредством этих lГ-neas мы получаем quГ© будку pulsГі:

// Obtener numero de casilla x, y
x = (x - margen) / espacio; // Para el ejemplo x será 1
y = (y - margen) / espacio; // Para el ejemplo y será 0

Следующие 2 линии подтверждают, что эта стоимость не была ниже 0 ни превышающий королев - 1 (если пользователь тащит будку снаружи индикаторного табло)

, И в конце концов мы конвертируем ее posiciГіn без дистанции, чтобы помещать JLabel в индикаторном табло.

// Revertir posicion exacta de casilla
x = (x * espacio) + margen; // Para el ejemplo x será 75 (1 espacio + margen)
y = (y * espacio) + margen; // y será 25 (margen)

Как habrГЎs подтвержденный, меняя в тебе cГіdigo ее implementaciГіn posicion() на ту, которую я предложил тебе, оно функционирует, не будучи должен реализовывать больше настроек. Я надеюсь помочь тебе.

1
ответ дан 01.12.2019, 14:38
  • 1
    ¿ Ты веришь в то, что можешь подробно описывать немного больше твой ответ? правда - что несмотря на то, что я, у которого была эта ошибка, не понимаю, потому что, использовав только getX и getY без labelLocation двигаются немного редко королевы а следовательно я закончил тем, что использовал getXOnScreen – ASASCED 05.11.2019, 23:27
  • 2
    @ASASCED я издал ответ añ adiendo explicació n. Я надеюсь, что он помогает тебе понимать это. – ffernandez 06.11.2019, 02:07
  • 3
    Привет я комментирую тебе снова, исправляя mé совсем положение (), не решает проблему, как я прокомментировал тебе, есть má s детали, которые нужно исправлять. – Jorgesys♦ 07.11.2019, 17:09
  • 4
    Если он не решает проблему, ¿ Porqué ты это скопировал, такой который в твой solució n?. ¿ Podrí схвати подробно описывать этих " detalles"? – ffernandez 07.11.2019, 17:16
  • 5
    Конечно проверь мой ответ, ahí они описываются, có я говорю, что он полностью функциональный, для которого он желается в вопросе. – Jorgesys♦ 07.11.2019, 23:35

Теги

Похожие вопросы