Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Pacman重绘问题_Java_Swing_User Interface_Interface_Paint - Fatal编程技术网

Java Pacman重绘问题

Java Pacman重绘问题,java,swing,user-interface,interface,paint,Java,Swing,User Interface,Interface,Paint,我在做一个吃豆人,一轮一轮地移动,并且有一个给定的最终位置。我已经有了cmd的游戏工作,与鬼逻辑,分数/积分等,现在我想在一个GUI中显示,但我有一些问题 这就是观点 package vista; import javax.swing.JFrame; import controlador.Controlador; public class Vista extends JFrame { Tablero t; JFrame frame; public Vista(Co

我在做一个吃豆人,一轮一轮地移动,并且有一个给定的最终位置。我已经有了cmd的游戏工作,与鬼逻辑,分数/积分等,现在我想在一个GUI中显示,但我有一些问题

这就是观点

package vista;

import javax.swing.JFrame;
import controlador.Controlador;

public class Vista extends JFrame {

    Tablero t;
    JFrame frame;

    public Vista(Controlador c) {
        frame = new JFrame();
        t = new Tablero(c);
        frame.add(t);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(600, 600);
        frame.setVisible(true);
    }

    public void actualizar() {
        t.repaint();
    }

}
这是“董事会”

我所做的是在pacman吃东西的时候改变控制器的数据映射,这样做很好,但是重新绘制它不是

对不起,代码太乱了,还有我的英语


提前谢谢大家

不要混合使用命令行和图形范例,它们有不同的工作方式,这使得它们在最好的时候有些不兼容。相反,请看一下从userdo
JLabel a=new JLabel()获取输入的方法
是个坏主意,绘制应该只绘制UI的当前状态,永远不要修改它。我还建议您查看并
package vista;

import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import controlador.Controlador;
import java.awt.Graphics;
import java.awt.GridLayout;

public class Tablero extends JPanel {

    JPanel[][] panelHolder = new JPanel[31][28];
    ImageIcon pacman = new ImageIcon("imagenes/pacman_der_abierto.gif");
    ImageIcon pared = new ImageIcon("imagenes/wall.gif");
    ImageIcon pellet = new ImageIcon("imagenes/pacdot.gif");
    ImageIcon powerPellet = new ImageIcon("imagenes/powerpellet.gif");
    ImageIcon vacio = new ImageIcon("imagenes/black.gif");
    Controlador c;

    public Tablero(Controlador con){
        c=con;    
        this.setLayout(new GridLayout(31,28));
            for(int y=0; y<31; y++)
                for(int x=0; x<28; x++){
                    panelHolder[y][x]=new JPanel();
                    panelHolder[y][x].setSize(230, 230);
                    this.add(panelHolder[y][x]);
                }
            this.setVisible(true);
    }

    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        int dataMap[][] = c.getDataMap();
        System.out.println("Actual : "+dataMap[y][x]); //Test, its working!
        for(int y=0; y<31; y++)
            for(int x=0; x<28; x++){
                //System.out.println("Actual : "+dataMap[y][x]);
                JLabel a = new JLabel();
                switch(dataMap[y][x]){
                case -1:
                    a.setIcon(pared);
                    panelHolder[y][x].add(a);
                    break;
                case 10:
                    a.setIcon(pellet);
                    panelHolder[y][x].add(a);
                    break;
                case 50:
                    a.setIcon(powerPellet);
                    panelHolder[y][x].add(a);
                    break;
                case 0:
                    a.setIcon(vacio);
                    panelHolder[y][x].add(a);
                    break;
                }

            }
    }

}
package controlador;

import java.util.Scanner;

import modelo.personajes.Jugador;
import vista.Vista;

public class Pacman {

    public static void main(String[] args) {

        Jugador pacman = new Jugador();
        Controlador c = new Controlador();
        Vista v = new Vista(c);

        System.out.println("ej. Bolas de poder :\n(3,1) (3,26)" + "\n(23,1) (23,26)\n");
        Scanner sc = new Scanner(System.in);
        System.out.println("Ingrese el x del objetivo : ");
        int xO = sc.nextInt();
        System.out.println("Ingrese el y del objetivo : ");
        int yO = sc.nextInt();
        pacman.setPosObjetivo(xO, yO);
        System.out.println("Pos obj : (" + pacman.getPosObjetivo().getX() + "," + pacman.getPosObjetivo().getY() + ")");
        int nPasos = pacman.getCaminoATomar().getLength();

        while (pacman.isPacmanVivo() && pacman.getCaminoATomar() != null) {
            if (pacman.getCaminoATomar() == null) {
                System.out.println("El camino a tomar es incorrecto.");
            } else
                for (int ronda = 1; ronda < nPasos + 1; ronda++) {
                    v.actualizar();

                    System.out.println("\nRonda = " + ronda);
                    System.out.println("Puntuacion = " + pacman.getPuntuacion());

                    System.out.println("-- Turno de Pac-Man --");
                    pacman.moverse();

                    c.setDataMap(pacman.getPuntajeMap());
                    int timer = sc.nextInt();
                }
        }
    }
}
private int dataMap[][]=
    {
     {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
     {-1,10,10,10,10,10,10,10,10,10,10,10,10,-1,-1,10,10,10,10,10,10,10,10,10,10,10,10,-1},
     {-1,10,-1,-1,-1,-1,10,-1,-1,-1,-1,-1,10,-1,-1,10,-1,-1,-1,-1,-1,10,-1,-1,-1,-1,10,-1},
     {-1,50,-1,-1,-1,-1,10,-1,-1,-1,-1,-1,10,-1,-1,10,-1,-1,-1,-1,-1,10,-1,-1,-1,-1,50,-1},
     {-1,10,-1,-1,-1,-1,10,-1,-1,-1,-1,-1,10,-1,-1,10,-1,-1,-1,-1,-1,10,-1,-1,-1,-1,10,-1},
     {-1,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,-1},
     {-1,10,-1,-1,-1,-1,10,-1,-1,10,-1,-1,-1,-1,-1,-1,-1,-1,10,-1,-1,10,-1,-1,-1,-1,10,-1},
     {-1,10,-1,-1,-1,-1,10,-1,-1,10,10,10,10,-1,-1,10,10,10,10,-1,-1,10,-1,-1,-1,-1,10,-1},
     {-1,10,10,10,10,10,10,-1,-1,10,10,10,10,-1,-1,10,10,10,10,-1,-1,10,10,10,10,10,10,-1},
     {-1,-1,-1,-1,-1,-1,10,-1,-1,-1,-1,-1,10,-1,-1,10,-1,-1,-1,-1,-1,10,-1,-1,-1,-1,-1,-1},
     {-1,-1,-1,-1,-1,-1,10,-1,-1,-1,-1,-1,10,-1,-1,10,-1,-1,-1,-1,-1,10,-1,-1,-1,-1,-1,-1},
     {-1,-1,-1,-1,-1,-1,10,-1,-1,10,10,10,10,10,10,10,10,10,10,-1,-1,10,-1,-1,-1,-1,-1,-1},
     {-1,-1,-1,-1,-1,-1,10,-1,-1,10,-1,-1,-1,-1,-1,-1,-1,-1,10,-1,-1,10,-1,-1,-1,-1,-1,-1},
     {-1,-1,-1,-1,-1,-1,10,-1,-1,10,-1,-1,-1,-1,-1,-1,-1,-1,10,-1,-1,10,-1,-1,-1,-1,-1,-1},
     {10,10,10,10,10,10,10,10,10,10,-1,-1,-1,-1,-1,-1,-1,-1,10,10,10,10,10,10,10,10,10,10},
     {-1,-1,-1,-1,-1,-1,10,-1,-1,10,-1,-1,-1,-1,-1,-1,-1,-1,10,-1,-1,10,-1,-1,-1,-1,-1,-1},
     {-1,-1,-1,-1,-1,-1,10,-1,-1,10,-1,-1,-1,-1,-1,-1,-1,-1,10,-1,-1,10,-1,-1,-1,-1,-1,-1},
     {-1,-1,-1,-1,-1,-1,10,-1,-1,10,10,10,10,10,10,10,10,10,10,-1,-1,10,-1,-1,-1,-1,-1,-1},
     {-1,-1,-1,-1,-1,-1,10,-1,-1,10,-1,-1,-1,-1,-1,-1,-1,-1,10,-1,-1,10,-1,-1,-1,-1,-1,-1},
     {-1,-1,-1,-1,-1,-1,10,-1,-1,10,-1,-1,-1,-1,-1,-1,-1,-1,10,10,-1,10,-1,-1,-1,-1,-1,-1},
     {-1,10,10,10,10,10,10,10,10,10,10,10,10,-1,-1,10,10,10,10,10,10,10,10,10,10,10,10,-1},
     {-1,10,-1,-1,-1,-1,10,-1,-1,-1,-1,-1,10,-1,-1,10,-1,-1,-1,-1,-1,10,-1,-1,-1,-1,10,-1},
     {-1,10,-1,-1,-1,-1,10,-1,-1,-1,-1,-1,10,-1,-1,10,-1,-1,-1,-1,-1,10,-1,-1,-1,-1,10,-1},
     {-1,50,10,10,-1,-1,10,10,10,10,10,10,10,-1,-1,10,10,10,10,10,10,10,-1,-1,10,10,50,-1},
     {-1,-1,-1,10,-1,-1,10,-1,-1,10,-1,-1,-1,-1,-1,-1,-1,-1,10,-1,-1,10,-1,-1,10,-1,-1,-1},
     {-1,-1,-1,10,-1,-1,10,-1,-1,10,-1,-1,-1,-1,-1,-1,-1,-1,10,-1,-1,10,-1,-1,10,-1,-1,-1},
     {-1,10,10,10,10,10,10,-1,-1,10,10,10,10,-1,-1,10,10,10,10,-1,-1,10,10,10,10,10,10,-1},
     {-1,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,-1,-1,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,-1},
     {-1,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,-1,-1,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,-1},
     {-1,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,-1},
     {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
    };

public void setDataMap(int[][] dataMap) {
    this.dataMap = dataMap;
}

public int[][] getDataMap(){
    return this.dataMap;
}
}