Maus Klicken Sie auf java
Ich folgte ein tutorial zum erstellen von ein-Labyrinth-Spiel in java. Nach dem Abschluss, entschied ich mich, um ein paar Dinge (Hauptmenü, mehr levels, etc). Ich bin derzeit stecken im Hauptmenü, weil ich nicht bekommen, Maus, um zu arbeiten. Ich bin versucht, wechseln Sie zu Bildschirm = 1 wenn ich mit der linken Maustaste die start game". Dies ist mein Aktueller code für die Klasse.
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){
}
}
}
Habe ich "System.aus.println("1");" um zu sehen, ob es registriert eine Maus drücken, aber es wird nicht gedruckt.
Wenn Sie
System.out.println("1");
außerhalb des if-Anweisung, es immer noch nicht drucken? auch, warum print? nur setzen Sie einen Haltepunkt und debug? (Sie können dies tun, auch ohne eine IDE, wenn man helfen...)
InformationsquelleAutor Chad | 2013-11-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihr Thema ist die Großschreibung von dem, was ich sehen
haben Sie umgesetzt MousePressed mit einem Kapital M
und auch mit einem Kleinbuchstaben m:
ändern Sie einfach den Kapital M in Kleinbuchstaben m und entfernen Sie die redundanten mousePressed nennen
z.B.
Gerne helfen 🙂 wenn Sie möchten (kein Druck) Sie können markieren Sie die Antwort so akzeptiert
InformationsquelleAutor Eran Medan
Das Hauptproblem, dass ist, du hast Ihren Namen die Maus gedrückt, Methode falsch
Ändern
Zu
Ich würde empfehlen, als Sie die
@Override
annotation, die bewirken, dass ein compiler-Fehler, wenn Sie diese Fehler machen,Ich würde auch anregen, dass die key bindings-API über KeyListener und paintComponent über Farbe.
Vielleicht finden Sie auch einen Aufruf von repaint nach änderung der Bildschirm-variable aktualisieren Sie den Bildschirm
@Override
InformationsquelleAutor MadProgrammer