Souris Cliquez sur java
J'ai suivi un tutoriel sur la création d'un Jeu de Labyrinthe en java. Après l'avoir terminé, j'ai décidé d'ajouter quelques choses (menu Principal, plus de niveaux, etc). Je suis actuellement coincé dans le Menu Principal, parce que je ne peut pas obtenir de l'entrée de la souris pour travailler. Je suis en train de passer à l'écran = 1 quand je clic gauche dans le début de la boîte de jeu. C'est mon code actuel pour la classe.
package Maze;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.Timer;
public class Board extends JPanel implements ActionListener{
private Timer timer;
private Map m;
private Player p;
private int screen = 0;
private String Message = "";
private Font font = new Font("Serif", Font.BOLD, 48);
private Font start = new Font("Serif", Font.BOLD, 36);
private Rectangle start2 = new Rectangle(135,350,180,55);
public Board(){
m = new Map();
p = new Player();
addKeyListener(new Al());
addMouseListener(new A2());
setFocusable(true);
timer = new Timer(25,this);
timer.start();
}
public void actionPerformed(ActionEvent e){
if(m.getMap(p.getTileX(),p.getTileY()).equals("f")){
Message = "Winner";
screen = 10;
}
repaint();
}
public void paint(Graphics g){
super.paint(g);
if(screen==0){
g.setColor(Color.BLACK);
g.fillRect(0, 0, 464, 485);
g.setColor(Color.RED);
g.setFont(font);
g.drawString("Maze Game", 100,50);
g.setFont(start);
g.setColor(Color.WHITE);
g.drawString("Created by: ", 135,90);
g.drawString("Chad Jordan", 125,130);
g.setColor(Color.PINK);
g.fillRect(start2.x, start2.y, start2.width, start2.height);
g.setColor(Color.WHITE);
g.drawString("Start Game", start2.x, start2.y+40);
}
if((screen==1)){
for(int y = 0; y<14;y++){
for(int x=0; x<14; x++){
if(m.getMap(x, y).equals("g")){
g.drawImage(m.getGrass(), x*32, y*32, null);
}
if(m.getMap(x, y).equals("w")){
g.drawImage(m.getWall(), x*32, y*32, null);
}
if(m.getMap(x,y).equals("f")){
g.drawImage(m.getFinish(), x*32, y*32, null);
}
}
}
g.drawImage(p.getPlayer(), p.getTileX()*32, p.getTileY()*32, null);
}
if(screen==10){
g.setColor(Color.BLACK);
g.setFont(font);
g.drawString(Message, 150,200);
}
}
public class A2 extends MouseAdapter{
public void MousePressed(MouseEvent e){
int mx = e.getX();
int my = e.getY();
System.out.println("2");
if((screen ==0) && start2.contains(mx,my)){
screen=1;
System.out.println("1");
}
}
public void mouseClicked(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
}
public class Al extends KeyAdapter{
public void keyPressed(KeyEvent e){
int keycode = e.getKeyCode();
if(( keycode == KeyEvent.VK_W) || (keycode == KeyEvent.VK_UP)){
if(!m.getMap(p.getTileX(),p.getTileY() -1).equals("w")){
p.move(0, -1);
}
}
if(( keycode == KeyEvent.VK_A) || (keycode == KeyEvent.VK_LEFT)){
if(!m.getMap(p.getTileX()-1,p.getTileY()).equals("w")){
p.move(-1, 0);
}
}
if(( keycode == KeyEvent.VK_D) || (keycode == KeyEvent.VK_RIGHT)){
if(!m.getMap(p.getTileX()+1,p.getTileY()).equals("w")){
p.move(1, 0);
}
}
if(( keycode == KeyEvent.VK_S) || (keycode == KeyEvent.VK_DOWN)){
if(!m.getMap(p.getTileX(),p.getTileY() +1).equals("w")){
p.move(0, 1);
}
}
}
public void keyReleased(KeyEvent e){
}
public void keyTyped(KeyEvent e){
}
}
}
J'ai utilisé "le Système de..println("1");" pour voir si elle enregistre une souris de presse, mais elle n'imprime pas.
Lorsque vous mettez
System.out.println("1");
à l'extérieur de votre instruction si, il toujours ne pas imprimer? aussi, pourquoi imprimer? il suffit de mettre un point de rupture et de débogage? (vous pouvez le faire même sans l'aide d'un IDE, mais on va l'aider...)OriginalL'auteur Chad | 2013-11-05
Vous devez vous connecter pour publier un commentaire.
Votre problème est la capitalisation de ce que je vois
vous avez mis en œuvre MousePressed avec un M majuscule
et aussi avec un m minuscule:
il suffit de modifier le capital de M à m minuscule et supprimer les redondant mousePressed appel
par exemple
Un plaisir de vous aider 🙂 si vous le souhaitez (pas de pression), vous pouvez marquer la réponse acceptée
OriginalL'auteur Eran Medan
Le principal problème de votre avoir, c'est que vous avez nommé votre souris enfoncé méthode incorrecte de l'
Changement
À
Je recommande que vous utilisez de la
@Override
annotation, ce qui va provoquer une erreur de compilation si vous faites cette erreurJe voudrais aussi encourager l'utilisation de la clé de liaisons API sur KeyListener et paintComponent par rapport à la peinture.
Vous pouvez également trouver un appel à repeindre après le changement de l'écran de la variable de mise à jour de l'écran
@Override
OriginalL'auteur MadProgrammer