Sokoban spiel,, Probleme mit KeyListener

Status
Nicht offen für weitere Antworten.
Q

qbopa

Gast
Halli Hallo Hallöchen ^^.

Ich bin gerade dabei den Klassiker Sokoban nachzuprogrammieren und das funktioniert auch soweit super. ich hab zum steuern Buttons genommen. Aber als ich bemerkte wie beschi*** das zum steuern ist wollt ich das ganze über die Tastatur mit den Pfeiltasten machen. Ich hab den KeyListener eingebunden, welcher auch angesprochen wird. Der button und der keylistener greifen auf die gleiche Methode zu, aber bei dem keylistener funktioniert das irgendwie nicht. Da erscheinen Fehlermeldungen und er bricht ab.

Suche schon seit ner Stunde nach dem fehler aber irgendwie finde ich ihn nicht ^^.


Weis jemand wo das problem liegt?


Danke








Hier der Code:



Code:
import javax.swing.*;

import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.*;
import java.awt.*;
import java.util.HashMap;
import java.util.Timer;
import javax.swing.colorchooser.*;
import javax.swing.event.MouseInputListener;


import sun.swing.SwingUtilities2;
import java.lang.*;
import java.io.*;
import java.util.*;



public class Spiel implements ActionListener, KeyListener {
	
	private  JFrame MainFenster;
	private  JPanel HintergrundPanel;
	private  JPanel MainPanel;
	private  JPanel P1;
	private  HashMap meinePanels; //private
	private  JPanel WegPanel;
	private  JButton Button1;
	private  JButton Button2;
	private  JButton Button3;
	private  JButton Button4;
	private JButton Button5;
	private JButton Button6;
	private JButton Button7;
	private JPanel Figur;
	private JPanel ZielPanel;
	private JPanel Box;
	
	private int Felder[];
	private int orginalFelder[];
	private int ZielFelder[];
	private int position;
	private int lvl;

	
	public Spiel() 
	{
		MainFenster= new JFrame ("Sokoban");
		MainFenster.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
		MainFenster.setSize(500,550);
		MainFenster.setBackground(Color.gray);
		MainFenster.setVisible(true);
		
		
		MainPanel = new JPanel();
		MainPanel.setLayout(new GridLayout(20,20));
		MainPanel.setSize(200,200);
		MainPanel.setBackground(Color.gray);
		MainPanel.setVisible(true);
		
		HintergrundPanel = new JPanel();
		HintergrundPanel.setSize(20,20);
		HintergrundPanel.setBackground(Color.black);
		HintergrundPanel.setVisible(true);
		MainFenster.addKeyListener(this);
		
		MainFenster.add(HintergrundPanel);
		
		Button1 = new JButton("<-");
		Button2 = new JButton("^");
		Button3 = new JButton("->");
		Button4 = new JButton("v");
		Button5 = new JButton("Neu");
		Button6 = new JButton ("Next");
		Button7 = new JButton("Back");
		
		Button1.addActionListener(this);
		Button2.addActionListener(this);
		Button3.addActionListener(this);
		Button4.addActionListener(this);
		Button5.addActionListener(this);
		Button6.addActionListener(this);
		Button7.addActionListener(this);
		
		meinePanels = new HashMap();
		
	       for (int i = 1; i < 401; i++ ){
	           JPanel P1 = new JPanel ();
	           P1.setBackground(Color.darkGray);
	           P1.setName(String.valueOf(i));
	           P1.setVisible(true);
	           P1.setSize(10,10);
	           MainPanel.add(P1);
	           meinePanels.put(String.valueOf(i), P1);	        
	           }
		
	       HintergrundPanel.add(MainPanel);
	       MainFenster.setSize(500,500);
	      HintergrundPanel.add(Button1);
	      HintergrundPanel.add(Button2);
	      HintergrundPanel.add(Button3);
	      HintergrundPanel.add(Button4);
	      HintergrundPanel.add(Button5);
	      HintergrundPanel.add(Button6);
	      HintergrundPanel.add(Button7);
	       
	      lvls();
	}
	
	
	
	public void lvl1()
	{
	  Felder = new int[401];
	  orginalFelder= new int[401];
	  ZielFelder=new int[401];
	    
	    for(int i=1; i<401;i++)
	    {
	    	Felder[i]=0;
	    	orginalFelder[i]=0;
	    	ZielFelder[i]=0;
	    }
	    Felder[173]=1;
	    Felder[174]=1;
	    Felder[175]=1;
	    Felder[176]=1;
	    Felder[177]=1;
	    Felder[178]=1;
	    Felder[179]=1;
	    Felder[193]=1;
	    Felder[195]=1;
	    Felder[197]=1;
	    Felder[199]=1;
	    Felder[213]=1;
	    Felder[217]=1;
	    Felder[219]=1;
	    Felder[233]=1;
	    Felder[237]=1;
	    Felder[239]=1;
	    Felder[252]=1;
	    Felder[253]=1;
	    Felder[254]=1;
	    Felder[255]=1;
	    Felder[256]=1;
	    Felder[257]=1;
	    Felder[259]=1;
	    Felder[272]=1;
	    Felder[274]=1;
	    Felder[279]=1;
	    Felder[292]=1;
	    Felder[294]=1;
	    Felder[296]=1;
	    Felder[297]=1;
	    Felder[299]=1;
	    Felder[312]=1;
	    Felder[314]=1;
	    Felder[316]=1;
	    Felder[317]=1;
	    Felder[319]=1;
	    Felder[332]=1;
	    Felder[334]=1;
	    Felder[336]=1;
	    Felder[352]=1;
	    Felder[354]=1;
	    Felder[356]=1;
	    Felder[358]=1;
	    Felder[359]=1;
	    Felder[372]=1;
	    Felder[373]=1;
	    Felder[374]=1;
	    Felder[375]=1;
	    Felder[376]=1;
	    Felder[377]=1;
	    Felder[378]=1;
	    Felder[379]=1;
	    Felder[394]=1;
	    Felder[398]=1;
	    Felder[399]=1;
	    Felder[180]=4; //Startpunkt
	    Felder[215]=3; //Ziele
	    Felder[371]=3;
	    Felder[400]=3;
	    Felder[216]=2; //Boxen
	    Felder[295]=2;
	    Felder[318]=2;
	    for (int i=1;i<401;i++)
	    {
	    	orginalFelder[i]=Felder[i];
	    	ZielFelder[i]=Felder[i];
	    }
	    WegPanel = null;
	    for (int i=1;i<401;i++)
	    {
	    	if (Felder[i]==1)
	    	{
	    		WegPanel = (JPanel) meinePanels.get(String.valueOf(i));
	    		WegPanel.setBackground(Color.white);
	    	}
	    	if (Felder[i]==2)
	    	{
	    		WegPanel=(JPanel) meinePanels.get(String.valueOf(i));
	    		WegPanel.setBackground(Color.blue);
	    	}
	    	if (Felder[i]==3)
	    	{
	    	WegPanel=(JPanel) meinePanels.get(String.valueOf(i));
	    	WegPanel.setBackground(Color.yellow);
	    	}
	    	if (Felder[i]==4)
	    	{
	    	WegPanel=(JPanel) meinePanels.get(String.valueOf(i));
	    	WegPanel.setBackground(Color.red);
	    	}
	    }
	}
	
	
	
	public void lvl2()
	{
		 Felder = new int[401];
		  orginalFelder= new int[401];
		  ZielFelder=new int[401];
		    
		    for(int i=1; i<401;i++)
		    {
		    	Felder[i]=0;
		    	orginalFelder[i]=0;
		    	ZielFelder[i]=0;
		    }
		    Felder[88]=1;
		    Felder[107]=1;
		    Felder[108]=1;
		    Felder[112]=1;
		    Felder[113]=1;
		    Felder[126]=1;
		    Felder[127]=2;
		    Felder[128]=1;
		    Felder[129]=1;
		    Felder[130]=1;
		    Felder[131]=1;
		    Felder[132]=1;
		    Felder[133]=1;
		    Felder[145]=1;
		    Felder[146]=1;
		    Felder[147]=1;
		    Felder[148]=4;
		    Felder[149]=2;
		    Felder[150]=1;
		    Felder[152]=1;
		    Felder[153]=1;
		    Felder[167]=1;
		    Felder[168]=2;
		    Felder[172]=1;
		    Felder[173]=1;
		    Felder[187]=1;
		    Felder[188]=1;
		    Felder[190]=3;
		    Felder[191]=3;
		    Felder[192]=1;
		    Felder[193]=1;
		    Felder[207]=1;
		    Felder[210]=3;
		    Felder[212]=1;
		    Felder[226]=1;
		    Felder[227]=1;
		    Felder[228]=1;
		    Felder[229]=1;
		    Felder[230]=1;
		    Felder[231]=1;
		    Felder[246]=1;
		    Felder[247]=1;
		    Felder[248]=1;
		    Felder[249]=1;
		    Felder[250]=1;
		    
		    for (int i=1;i<401;i++)
		    {
		    	orginalFelder[i]=Felder[i];
		    	ZielFelder[i]=Felder[i];
		    }
		    WegPanel = null;
		    for (int i=1;i<401;i++)
		    {
		    	if (Felder[i]==1)
		    	{
		    		WegPanel = (JPanel) meinePanels.get(String.valueOf(i));
		    		WegPanel.setBackground(Color.white);
		    	}
		    	if (Felder[i]==2)
		    	{
		    		WegPanel=(JPanel) meinePanels.get(String.valueOf(i));
		    		WegPanel.setBackground(Color.blue);
		    	}
		    	if (Felder[i]==3)
		    	{
		    	WegPanel=(JPanel) meinePanels.get(String.valueOf(i));
		    	WegPanel.setBackground(Color.yellow);
		    	}
		    	if (Felder[i]==4)
		    	{
		    	WegPanel=(JPanel) meinePanels.get(String.valueOf(i));
		    	WegPanel.setBackground(Color.red);
		    	}
		    }
	}
	
	public void lvl3()
	{
		Felder = new int[401];
		  orginalFelder= new int[401];
		  ZielFelder=new int[401];
		    
		    for(int i=1; i<401;i++)
		    {
		    	Felder[i]=0;
		    	orginalFelder[i]=0;
		    	ZielFelder[i]=0;
		    }
		    
		    
		    Felder[144]=3;
		    Felder[145]=3;
		    Felder[146]=3;
		    Felder[147]=3;
		    Felder[164]=3;
		    Felder[165]=3;
		    Felder[166]=3;
		    Felder[167]=3;
		    Felder[184]=3;
		    Felder[185]=3;
		    Felder[186]=3;
		    Felder[187]=3;
		    
		    Felder[148]=1;
		    Felder[149]=1;
		    Felder[168]=1;
		    Felder[169]=1;
		    Felder[188]=1;
		    Felder[189]=1;
		    Felder[170]=1;
		    Felder[171]=1;
		    
		    Felder[72]=1;
		    Felder[73]=1;
		    Felder[74]=1;
		    
		    Felder[92]=1;
		    Felder[94]=2;
		    Felder[97]=1;
		    Felder[98]=1;
		    
		    Felder[112]=1;
		    Felder[113]=1;
		    Felder[114]=1;
		    Felder[115]=1;
		    Felder[116]=1;
		    Felder[117]=2;
		    Felder[118]=1;
		    
		    Felder[132]=1;
		    Felder[136]=1;
		    Felder[137]=1;
		    Felder[138]=1;
		    
		    Felder[152]=1;
		    Felder[153]=2;
		    Felder[154]=1;
		    Felder[155]=1;
		    Felder[156]=2;
		    
		    Felder[172]=2;
		    Felder[173]=1;
		    Felder[174]=2;
		    Felder[175]=2;
		    Felder[176]=1;
		    
		    Felder[192]=2;
		    Felder[193]=1;
		    Felder[194]=1;
		    Felder[195]=2;
		    Felder[196]=1;
		    Felder[197]=4;
		    
		    Felder[212]=1;
		    Felder[213]=1;
		    Felder[214]=2;
		    Felder[215]=1;
		    Felder[216]=1;
		    
		    Felder[232]=1;
		    Felder[233]=2;
		    Felder[234]=1;
		    Felder[235]=2;
		    Felder[236]=1;
		    Felder[237]=1;
		    
		    Felder[254]=1;
		    Felder[257]=1;
		    
		    Felder[274]=1;
		    Felder[275]=1;
		    Felder[276]=1;
		    Felder[277]=1;
		    
		    
		    

		
	
		
		
		
		
		
		
		
		
		
		
		
	    for (int i=1;i<401;i++)
	    {
	    	orginalFelder[i]=Felder[i];
	    	ZielFelder[i]=Felder[i];
	    }
	    WegPanel = null;
	    for (int i=1;i<401;i++)
	    {
	    	if (Felder[i]==1)
	    	{
	    		WegPanel = (JPanel) meinePanels.get(String.valueOf(i));
	    		WegPanel.setBackground(Color.white);
	    	}
	    	if (Felder[i]==2)
	    	{
	    		WegPanel=(JPanel) meinePanels.get(String.valueOf(i));
	    		WegPanel.setBackground(Color.blue);
	    	}
	    	if (Felder[i]==3)
	    	{
	    	WegPanel=(JPanel) meinePanels.get(String.valueOf(i));
	    	WegPanel.setBackground(Color.yellow);
	    	}
	    	if (Felder[i]==4)
	    	{
	    	WegPanel=(JPanel) meinePanels.get(String.valueOf(i));
	    	WegPanel.setBackground(Color.red);
	    	}
	    }

	}
	

	public static void main(String[] args) {
	
		Spiel mf = new Spiel();
	}



	public void actionPerformed(ActionEvent arg0) 
	{
		String Button ;
		Button=arg0.getActionCommand().toString();
		woistdiefigur();
		if ( Button=="<-" )
		{
			links();
		}
		if ( Button=="->" )
		{
			rechts();
		}
		if ( Button=="v" )
		{
			runter();
		}
		if ( Button=="^" )
		{
			hoch();
		}
		if(Button=="Neu")
		{
			lvls();
		}
		if (Button=="Next")
		{
			lvl=lvl+1;
			lvls();
		}
		if(Button=="Back")
		{
			lvl=lvl-1;
			lvls();
		}
		fertig();
	}
	
	public void woistdiefigur()
	{
		Figur=null;
		position=0;
		for(int i=1;i<401;i++)
		{
			if (Felder[i]==4)
			{
				position=i;
			}
		}
	}
	
	
	
	public void links()
	{
		position=position-1;
		if (Felder[position]==1||Felder[position]==3)
		{
			Figur=(JPanel)meinePanels.get(String.valueOf(position+1));
			Figur.setBackground(Color.white);
			ziel();
			Figur=(JPanel) meinePanels.get(String.valueOf(position));
			Figur.setBackground(Color.red);
			Felder[position]=4;
			Felder[position+1]=1;
		}
		if (Felder[position]==2)
			{
			if (Felder[position-1]==1||Felder[position-1]==3)
			{
				Box=(JPanel)meinePanels.get(String.valueOf(position-1));//position der"neuen" Box
				Felder[position-1]=2;
				Figur=(JPanel)meinePanels.get(String.valueOf(position+1)); //position der Figue
				Figur.setBackground(Color.white);//position der Figur weis setzen
					if (Box.getBackground().equals(Color.yellow))//abfrage ob neue position der Box=ziel ist
					{
						orginalFelder[position-1]=2; //abändenr der Ziel position in Box position
					}
				Box.setBackground(Color.blue);//neue boc position blau färben
				ziel();
				Figur=(JPanel) meinePanels.get(String.valueOf(position)); // neue position der Figur
				Figur.setBackground(Color.red); //neue position der Figur rot färben
				Felder[position]=4;	//neue position der Figur in Felder speichern
				Felder[position+1]=1; // zurückgelegeter weg in felder als Laufweg speichern
			}
		}
	}
	
	
	public void rechts()
	{
		position=position+1;
		if (Felder[position]==1 ||Felder[position]==3)
		{
			Figur=(JPanel)meinePanels.get(String.valueOf(position-1));
			Figur.setBackground(Color.white);
			ziel();
			Figur=(JPanel) meinePanels.get(String.valueOf(position));
			Figur.setBackground(Color.red);
			Felder[position]=4;
			Felder[position-1]=1;
		}
		if (Felder[position]==2 )
		{
			if (Felder[position+1]==1||Felder[position+1]==3)
			{
				Box=(JPanel)meinePanels.get(String.valueOf(position+1));//position der"neuen" Box
				Felder[position+1]=2;
				Figur=(JPanel)meinePanels.get(String.valueOf(position-1)); //position der Figue
				Figur.setBackground(Color.white);//position der Figur weis setzen
				if (Box.getBackground().equals(Color.yellow))//abfrage ob neue position der Box=ziel ist
					{
						orginalFelder[position+1]=2; //abändenr der Ziel position in Box position
					}
				Box.setBackground(Color.blue);//neue boc position blau färben
				ziel();
				Figur=(JPanel) meinePanels.get(String.valueOf(position)); // neue position der Figur
				Figur.setBackground(Color.red); //neue position der Figur rot färben
				Felder[position]=4;	//neue position der Figur in Felder speichern
				Felder[position-1]=1; // zurückgelegeter weg in felder als Laufweg speichern
			}
		}
	}
	public  void hoch()
	{
		position=position-20;
		if (Felder[position]==1 ||Felder[position]==3)
		{
			Figur=(JPanel)meinePanels.get(String.valueOf(position+20));
			Figur.setBackground(Color.white);
			ziel();
			Figur=(JPanel) meinePanels.get(String.valueOf(position));
			Figur.setBackground(Color.red);
			Felder[position]=4;
			Felder[position+20]=1;
		}
		if (Felder[position]==2 )
		{
			if (Felder[position-20]==1||Felder[position-20]==3)
			{
				Box=(JPanel)meinePanels.get(String.valueOf(position-20));//position der"neuen" Box
				Felder[position-20]=2;
				Figur=(JPanel)meinePanels.get(String.valueOf(position+20)); //position der Figue
				Figur.setBackground(Color.white);//position der Figur weis setzen
				if (Box.getBackground().equals(Color.yellow))//abfrage ob neue position der Box=ziel ist
					{
						orginalFelder[position-20]=2; //abändenr der Ziel position in Box position
					}
				Box.setBackground(Color.blue);//neue boc position blau färben
				ziel();
				Figur=(JPanel) meinePanels.get(String.valueOf(position)); // neue position der Figur
				Figur.setBackground(Color.red); //neue position der Figur rot färben
				Felder[position]=4;	//neue position der Figur in Felder speichern
				Felder[position+20]=1; // zurückgelegeter weg in felder als Laufweg speichern
			}
		}
	}
	public void runter()
	{
		position=position+20;
		if (Felder[position]==1 ||Felder[position]==3 )
		{
			Figur=(JPanel)meinePanels.get(String.valueOf(position-20));
			Figur.setBackground(Color.white);
			ziel();
			Figur=(JPanel) meinePanels.get(String.valueOf(position));
			Figur.setBackground(Color.red);
			Felder[position]=4;
			Felder[position-20]=1;
		}
		if (Felder[position]==2)
		{
			if (Felder[position+20]==1||Felder[position+20]==3)
			{
				Box=(JPanel)meinePanels.get(String.valueOf(position+20));//position der"neuen" Box
				Felder[position+20]=2;
				Figur=(JPanel)meinePanels.get(String.valueOf(position-20)); //position der Figue
				Figur.setBackground(Color.white);//position der Figur weis setzen
				if (Box.getBackground().equals(Color.yellow))//abfrage ob neue position der Box=ziel ist
					{
						orginalFelder[position+20]=2; //abändenr der Ziel position in Box position
					}
				Box.setBackground(Color.blue);//neue boc position blau färben
				ziel();
				Figur=(JPanel) meinePanels.get(String.valueOf(position)); // neue position der Figur
				Figur.setBackground(Color.red); //neue position der Figur rot färben
				Felder[position]=4;	//neue position der Figur in Felder speichern
				Felder[position-20]=1; // zurückgelegeter weg in felder als Laufweg speichern
			}
		}
	}
	
	
	
	public void ziel()
	{
		ZielPanel=null;
		
		JPanel lol = new JPanel();
		lol=(JPanel)meinePanels.get(String.valueOf(191));

		for (int i=1;i<401;i++)
		{
			if(ZielFelder[i]==3)
			{
				
				
				Figur=(JPanel) meinePanels.get(String.valueOf(i));
				if (Figur.getBackground().equals(Color.white))
				{
					Figur.setBackground(Color.yellow);
					Felder[i]=3;
				}
			}
			if (orginalFelder[i]==3 )
			{
				
				ZielPanel=(JPanel) meinePanels.get(String.valueOf(i));
				ZielPanel.setBackground(Color.yellow);
			}
		}
	}
	

	public void fertig()
	{
		int ziele=0;
		
		for (int i=1;i<401;i++)
		{
			if (Felder[i]==2 && ZielFelder[i]==3)
			{
				ziele=ziele+1;
				}
		}
		if (ziele==3)
		{
			lvl=lvl+1;
		lvls();
		}
	}
	public void lvls()
	{
		lvl3();
			for (int i=1;i<401;i++)
			{
				Figur=(JPanel) meinePanels.get(String.valueOf(i));
				Figur.setBackground(Color.darkGray);
				
			}
	       
		  if(lvl==0){
	    	  lvl1();  
	      }
	      if (lvl==1)
	      {
	    	  lvl2();
	      }
	      if (lvl==2)
	      {
	    	  lvl3();
	      }
	      
	}



	public void keyPressed(KeyEvent arg0) {
		// TODO Auto-generated method stub
		
	}



	public void keyReleased(KeyEvent arg0) {
		int key = arg0.getKeyCode();
		switch (key){
		case KeyEvent.VK_LEFT: links(); break;
		
		}
		
	}



	public void keyTyped(KeyEvent arg0) {
		// TODO Auto-generated method stub
		
	}
	
}






(Ich hoff das ist nicht zu verwirrend ^^) :###
 

Murray

Top Contributor
qbopa hat gesagt.:
Der button und der keylistener greifen auf die gleiche Methode zu, aber bei dem keylistener funktioniert das irgendwie nicht. Da erscheinen Fehlermeldungen und er bricht ab.
Was erscheinen denn für Fehlermeldungen?
 
Q

qbopa

Gast
Die da ^^:



Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1
at Spiel.links(Spiel.java:519)
at Spiel.keyReleased(Spiel.java:740)
at java.awt.Component.processKeyEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Window.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
 

Murray

Top Contributor
Code:
    position=position-1;  //--- das ist das Problem
    if (Felder[position]==1||Felder[position]==3)  //--- hier knallt es

Irgendwann dürfte position=0 sein, und noch weiter nach links geht es dann nicht.
 
Q

qbopa

Gast
aber warum geht das wenn ich es über Buttons mach? das ist das was ich nicht versteh. ich ruf doch mit dem button auch die Methode links() auf. demzufolge muss der Fehler hier ja auch auftreten oder nicht?
 

Murray

Top Contributor
Funktioniert es mit den Buttons denn überhaupt?

Sowas
Code:
    if ( Button=="<-" )
ist ziemlich übel, da == auf Identität prüft, hier aber die inhaltliche Übereinstimmung gemeint ist.
Besser also:
Code:
    if ( "<-".equals( Button))

Ansonsten: vielleicht schaffst du mit der Tastatur einfach mehr Events in kürzerer Zeit, so dass der Fehler schneller auftritt, weil du eher links aus dem Feld herauskommst.
 

Murray

Top Contributor
Murray hat gesagt.:
vielleicht schaffst du mit der Tastatur einfach mehr Events in kürzerer Zeit, so dass der Fehler schneller auftritt, weil du eher links aus dem Feld herauskommst.
Ach nein, es liegt eher daran, dass du beim Button vor dem Aufruf von links() noch wositdiefigur() aufrufst, was position wieder umsetzt.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
PrograJan Poker Spiel ruückfrage Java Basics - Anfänger-Themen 8
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
I Threads Spiel gol Java Basics - Anfänger-Themen 6
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
J ArrayList vergleichen im spiel Mastermind Java Basics - Anfänger-Themen 2
enesss tictactoe spiel Java Basics - Anfänger-Themen 5
K Java Lotto Spiel; ich komme nicht weiter Java Basics - Anfänger-Themen 15
Jxhnny.lpz TicTacToe Spiel vs Computer. (Probleme) Java Basics - Anfänger-Themen 7
httprt Probleme bei dem erstellen von leveln in meinem Spiel Java Basics - Anfänger-Themen 2
berserkerdq2 Habe ein Spiel entwickelt, dass immer in der 4 Runde einen cast-Fehler erhält Java Basics - Anfänger-Themen 3
berserkerdq2 Spiel hängt sich immer in der 4 Runde auf, obwohl ich jede Runde das gleiche mache Java Basics - Anfänger-Themen 1
Ekooekoo Hilfe spiel Java Basics - Anfänger-Themen 5
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
Kennewick Basketball Spiel Ergebnisse Java Basics - Anfänger-Themen 11
X Erste Schritte Hilfe bei einem kleinen Spiel. Java Basics - Anfänger-Themen 19
D Snake-Spiel ähnliche Aufgabe Hilfe Java Basics - Anfänger-Themen 3
R Hangman-Spiel-zufälliges Wort ermitteln Java Basics - Anfänger-Themen 4
JEP1 Java Dialog Fenster schließen Spiel Java Basics - Anfänger-Themen 0
I Simples Risiko-Spiel Java Basics - Anfänger-Themen 5
Hallolu Pong-Spiel: Schläger schneller werden lassen Java Basics - Anfänger-Themen 9
M Java Spiel wie Wer wird Millionär Java Basics - Anfänger-Themen 1
T Startbildschirm für ein Spiel erstellen Java Basics - Anfänger-Themen 0
Z Kein überprüfen des gesamten Arrays möglich.(Viergewinnt Spiel) Java Basics - Anfänger-Themen 6
G Ufo Spiel programmieren Java Basics - Anfänger-Themen 13
C Java Spiel Java Basics - Anfänger-Themen 3
J Spiel programmieren Java Basics - Anfänger-Themen 16
S Spiel-Programmieren. Wenn ein Objekt den anderen berührt. Java Basics - Anfänger-Themen 6
B Memory Spiel Java Basics - Anfänger-Themen 29
J Memory-Spiel Aktivierung der Methode mit Timer Java Basics - Anfänger-Themen 44
Kamy Ein einfaches "Vier Gewinnt" Spiel für Anfängerin Java Basics - Anfänger-Themen 51
A Breakout-Spiel , Ball mit Platten abprallen lassen Java Basics - Anfänger-Themen 1
S Spiel programmieren mit Java Java Basics - Anfänger-Themen 11
Olis Erste Schritte Simples Memory Spiel möglich? Java Basics - Anfänger-Themen 1
J Spiel mit Button klick starten Java Basics - Anfänger-Themen 9
C Rekursives Backtracking beim Spiel Peg Java Basics - Anfänger-Themen 22
M Spiel programmieren Java Basics - Anfänger-Themen 16
Spencer Reid Feedback zu kleinem Spiel Java Basics - Anfänger-Themen 4
kokojamboo92 Spiel programmieren Java Basics - Anfänger-Themen 1
R Kleines Java Spiel funktioniert nicht. Java Basics - Anfänger-Themen 2
I Spiel Java Basics - Anfänger-Themen 34
H ein einfaches Tic Tac Toe Spiel Java Basics - Anfänger-Themen 1
I Spiel programmieren. Java Basics - Anfänger-Themen 16
B Hilfe bei Escape - Spiel Java Basics - Anfänger-Themen 6
S Java-Spiel Java Basics - Anfänger-Themen 2
M Nim-Spiel geht in den negativen Bereich Java Basics - Anfänger-Themen 1
K Klassen Registrierungsseite für ein Spiel Java Basics - Anfänger-Themen 6
J Programmierung Quiz Spiel Java Basics - Anfänger-Themen 3
J Programmierung Quiz Spiel Java Basics - Anfänger-Themen 2
M Brauche Tipps für ein Spiel Java Basics - Anfänger-Themen 4
S Probleme mit GamGrid Spiel-Erstellung => Actor reagiert nicht auf Tastatur Java Basics - Anfänger-Themen 2
Mxxxt Mosaik Spiel - Steuerpanel wird nicht angezeigt Java Basics - Anfänger-Themen 5
M Erste Schritte Zufallszahl Spiel Problem Java Basics - Anfänger-Themen 7
Z Erste Schritte Kleines 2D. Spiel Objekt Bewegung funktioniert nicht Java Basics - Anfänger-Themen 2
H Spiel Kniffel: Gesamtes Array untersuchen. Java Basics - Anfänger-Themen 15
Tacofan Hangman als fertiges Spiel Java Basics - Anfänger-Themen 7
M Array und Objektorientierung? - TicTacToe Spiel Java Basics - Anfänger-Themen 43
C Klassen Sudoku-Spiel Werte werden nicht gesetzt Java Basics - Anfänger-Themen 4
K Kleines Spiel auf Java programmieren Java Basics - Anfänger-Themen 2
W Tic Tac Toe Spiel ohne Arrays Java Basics - Anfänger-Themen 7
S Im objektorientiertem "Spiel" kämpfen Java Basics - Anfänger-Themen 3
I Klassen Umsetzungsfrage zu Spiel "Zuul" Java Basics - Anfänger-Themen 3
F Mastermind Spiel Java Basics - Anfänger-Themen 9
H Liste ausgeben (Spiel Hey Fisch (software-challenge) ändern Anzahl Fische) Java Basics - Anfänger-Themen 1
F Game-Engine für textbasierendes Spiel: Architektur? Java Basics - Anfänger-Themen 9
K Erste Schritte Frage Antwort Spiel - Fragen zur Planung Java Basics - Anfänger-Themen 2
J Java Spiel Zufallsauswahl für Zugbeginn Java Basics - Anfänger-Themen 3
J Frage Antwort Spiel - Wie Zeitcountdown realisieren? Java Basics - Anfänger-Themen 2
L Erste Schritte Spiel: Glückliches Sieben Java Basics - Anfänger-Themen 3
T Hangman spiel Java Basics - Anfänger-Themen 5
J 2 Pc's - Spiel gegeneinander ?! Java Basics - Anfänger-Themen 3
V Spiel Programmieren Java Basics - Anfänger-Themen 9
P 2D-Spiel und Bildschirmgröße Java Basics - Anfänger-Themen 2
O Methoden Fehlermeldung(Illegal start of expression) bei 4-Gewinnt-Spiel Java Basics - Anfänger-Themen 5
T Blöcke für ein Jump and Run Spiel Java Basics - Anfänger-Themen 8
S 2D-Spiel mit Threads... Java Basics - Anfänger-Themen 3
S 2D-Spiel im Vollbild an größe anpassen? Java Basics - Anfänger-Themen 3
M hangman spiel Java Basics - Anfänger-Themen 1
K JTextField in ein Spiel einfügen Java Basics - Anfänger-Themen 2
S Mosaik Spiel Java Basics - Anfänger-Themen 19
pinar memory spiel Java Basics - Anfänger-Themen 10
T OOP Mein erstes Java-Spiel - Schiffe versenken! Java Basics - Anfänger-Themen 2
K Erste Schritte Wie mache ich weiter? (Spiel-Menü) Java Basics - Anfänger-Themen 9
C Java Applet in html. Pong - old school Spiel Java Basics - Anfänger-Themen 10
J Variablen Invalid Character - Error -> Spiel mit Variablenergebnissen Java Basics - Anfänger-Themen 8
K Schere Stein Papier Spiel Java Basics - Anfänger-Themen 3
A Feedback zum Spiel Java Basics - Anfänger-Themen 5
F Hilfe bei meinem Spiel Java Basics - Anfänger-Themen 3
C Lotto Spiel Java Basics - Anfänger-Themen 23
Jagson Dotcom Spiel - Dots Random setzen Java Basics - Anfänger-Themen 8
Dogge Farben-Spiel Java Basics - Anfänger-Themen 20
K Diverse Bugs in einem Snake Spiel Java Basics - Anfänger-Themen 4
2 Lotto-Spiel Java Basics - Anfänger-Themen 9
X Datentypen Probleme mit Char bei meinem 1. Spiel Java Basics - Anfänger-Themen 20
D Erste Schritte Einstieg in die Java Spiel Programmierung Java Basics - Anfänger-Themen 7
H kleines Spiel [Processing] Java Basics - Anfänger-Themen 7
P NullPointerException in Memory-Spiel Java Basics - Anfänger-Themen 5
R Server/Client für Spiel Java Basics - Anfänger-Themen 2
K Hilfe, komme nicht weiter in meinem JAVA-Spiel Java Basics - Anfänger-Themen 3
J Programm(Spiel) neustarten Java Basics - Anfänger-Themen 8
M Suche Beispiel-Spiel Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben