Vektor Game

MrBig

Mitglied
Hallo Forum,

da ich momentan Semesterferien habe und somit wieder bisschen mehr Zeit meinem Hobby widmen kann, möchte ich gerne ein kleinen Spiel programmieren.:D

Der Algorithmus ist recht banal, es gibt einen Startwert (erste Zug) zwischen 1 und 6 in meinem Beispiel 4.
Auf diesem baut der nächste Zug auf. Denn jeder neue Zug kann dann entweder wieder 4 sein oder 4+1 oder 4-1. Sprich jeder neue Zug kann entweder genauso groß wie der vorherige Zug ein oder eins größer oder kleiner. :rtfm:

Java:
privat boolean checkNextStep(int alterWert, int neuerWert){
if((neuerWert == alterWert) || (neuerWert == alterWert+1) || (neuerWert == alterWert-1)){
return true;
} else{
return false;
}}

Das Spielfeld soll ein eindimensionales Array sein (variabler länge).
Array[0] = startWert z.B.4
Array[1] = kann jetzt entweder 3, 4 oder 5 sein.

Bis hier ist alles kein Problem, doch bei der Grafischen umsetztung hapert es bei mir.
Die Gui soll eine anreihung von JButtens werden, die erstmal alle setEnable(false) sein sollen,
bis auf die, auf die mein nächster Zug gehen kann.
Hier eine schematische darstellung:
Das erste Feld links wird mit dem Startwert 4 besetzt, somit dürfen nur die Felder 3,4 und 5 aktiv (a) sein, alle anderen inaktiv (x)
1.Zug
[4|x|x|a|a|a|x|x|x|x|x|x|x|x|x|x|x]

2.Zug
Gehe ich jetzt auf das fünfteFeld, muss sich die Gui, als die Buttons wieder anpassen,
das soll dann so aussehen:

[4|x|x|x|x|5|x|x|x|a|a|a|x|x|x|x|x]

Hauptproblem:
Wie kann ich das umsetzten?
Ich hab es bis jetzt leider nur statisch umsetzen gekonnt, und auch nur für den ersten Zug.
Wie kann ich die restlichen Buttons anpassen? :bahnhof:

zweites nebensächliches Problem:
Gerne hätte ich auch einen Tipp, wie ich die Gui z.b. nach 10 Zügen anpassen kann, so dass die 9 Züge die ich zuvor gemacht habe wegfallen und sich das Spielfeld um eine Länge x erweitert.
Ich möchte ja keine endloslange Spagetti auf meinem Display haben.

Vielen Dank schonmal für das durchlesen :applaus::toll:
 

Airborne

Mitglied
ein eindimensionales Array sein (variabler länge).

also eher ein Vector oder eine ArrayList gell? Arrays mit "variabler Länge" sind eher selten. So läßt sich das ganze auch leicht mal "verlängern".

Das mit der GUI ist recht simple:

- Nach jedem Zug muss due GUI aktualisiert werden -> repaint
- für jeden Button muss setEnable(boolean) ausgeführt werden, der Wert des boolean Argument sollte recht leicht zu ermitteln sein. DIe Buttons lösen ja ein Event aus, dass ein ActionListener aufnimmt.
In diesem Fall würde ich nicht die GUI selbst das machen lassen sondern eher eine Worker-Klasse daneben legen. So kann der Button einen Value übergeben ( vielleicht ein Enum? Button.setData() / Button.getData()) und damit einen fixen Mechanismus anstoßen.
 

MrBig

Mitglied
also eher ein Vector oder eine ArrayList gell? Arrays mit "variabler Länge" sind eher selten. So läßt sich das ganze auch leicht mal "verlängern".

Das mit der GUI ist recht simple:

- Nach jedem Zug muss due GUI aktualisiert werden -> repaint
- für jeden Button muss setEnable(boolean) ausgeführt werden, der Wert des boolean Argument sollte recht leicht zu ermitteln sein. DIe Buttons lösen ja ein Event aus, dass ein ActionListener aufnimmt.
In diesem Fall würde ich nicht die GUI selbst das machen lassen sondern eher eine Worker-Klasse daneben legen. So kann der Button einen Value übergeben ( vielleicht ein Enum? Button.setData() / Button.getData()) und damit einen fixen Mechanismus anstoßen.


Okay mit variabel meinte ich zu Spielbeginn wird die Länge festgelgt ;-)
Aber trotzdem Danke für den Einwurf.

Zu repain, und enum da hab ich leider noch keine Ahnung von.
Was meinst du mit einer Worker-Klasse?

Ich baue meinen Button mit ActionEvent und übergebe im ActionListner oder ClickAction die Possition, oder? Hmm jetzt muss ich mir mal gedanken machen, wie ich das umsetzen könnte. :rtfm:
 

Airborne

Mitglied
Das sind recht viele wiederverwertbare Dinge in deiner Idee: Die Buttons z.B. sind alle relativ gleich -> Factory zur Herstellung?

Mit Worker meine ich, dass du als ActionListener nicht wie üblich die GUI Klasse selbst anmeldest, sondern eine seperate Klasse neben der GUI.

Das hat den Vorteil, dass du es etwas klarer strukturieren kannst. Denn auch die Action ist ja recht gleichförmig: Rund um den button, der den Event auslöst, sollen die angrenzenden Buttons setEnable(true) werden. Dazu muss der ActionListener wissen, welcher Button den Event ausgelöst hat. Ein ID/eine Nummerierung könnte dazu sinnvoll sein.
 

MrBig

Mitglied
Das sind recht viele wiederverwertbare Dinge in deiner Idee: Die Buttons z.B. sind alle relativ gleich -> Factory zur Herstellung?

Mit Worker meine ich, dass du als ActionListener nicht wie üblich die GUI Klasse selbst anmeldest, sondern eine seperate Klasse neben der GUI.

Das hat den Vorteil, dass du es etwas klarer strukturieren kannst. Denn auch die Action ist ja recht gleichförmig: Rund um den button, der den Event auslöst, sollen die angrenzenden Buttons setEnable(true) werden. Dazu muss der ActionListener wissen, welcher Button den Event ausgelöst hat. Ein ID/eine Nummerierung könnte dazu sinnvoll sein.


Okay, so bisschen hab ich das auch schon gemacht mit dem Spielfeld

Java:
public void drawPanel(){
			int le=6;
			for(int l=0;l<11;l++){
				final JButton btnNewButton = new JButton("?");
				btnNewButton.setBounds(le, ho, 20, 20);
				if (l >= 8 && h >= 4 && h <= 6){
					btnNewButton.setEnabled(true);
					btnNewButton.setLabel("f");
				}else{
					btnNewButton.setEnabled(false);
				}
				btnNewButton.addActionListener(new ButtonLauscher(l));
				btnNewButton.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent e) {
						btnNewButton.setEnabled(false);
						btnNewButton.setLabel("x");
					}
				});
				frame.getContentPane().add(btnNewButton);
				le=le+20;
			}
			ho=ho+20;
		}

Aber wie mache ich das mit dem wiederzeichnen beim drücken?
Und wie kann ich genau diese Button ansteuern?:rtfm:

Vielen DANK schonmal an Airborne!!!!!!:toll:
 

MrBig

Mitglied
[c]Jpanel.repaint();[/c] ist dein Freund, dann sollte sich der neue Wert für den Button durchschlagen.



Hmm ich hänge glaub ich im Kopf ein wenig....
Denke ich hab heute schon wieder zu viel gemacht, so dass ich den Wald vor Bäumen nicht sehe...:oops:


Werde morgen oder in ein paar Stunden nochmal dran gehen. Denke dass es nur etwas kleines ist, was ich bei meiner GUI Test Klasse vergessen oder falsch gemacht habe...

Hier meine Testklasse bis jetzt:
Java:
package Test;

import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JButton;

public class TestGui {

	private JFrame frame;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					TestGui window = new TestGui();
					window.frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the application.
	 */
	public TestGui() {
		initialize();
		makeButtons();
	}

	private void makeButtons() {
			int le=6;
			for(int l=0;l<11;l++){
				final JButton btnNewButton = new JButton("?");
				btnNewButton.setBounds(le, 6, 20, 20);
				if (l <= 1 ){
					btnNewButton.setEnabled(true);
					btnNewButton.setLabel("f");
				}else{
					btnNewButton.setEnabled(false);
				}
				btnNewButton.addActionListener(new ButtonLauscher2(l));
				btnNewButton.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent e) {
						btnNewButton.setEnabled(false);
						btnNewButton.setLabel("x");
						frame.repaint();
					}
				});
				frame.getContentPane().add(btnNewButton);
				le=le+20;
		}
		
	}


	/**
	 * Initialize the contents of the frame.
	 */
	private void initialize() {
		frame = new JFrame();
		frame.setBounds(100, 100, 450, 300);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.getContentPane().setLayout(null);
	}
	
	public class ButtonLauscher2 implements ActionListener {
		public int x;
		public int y;

		public ButtonLauscher2(int r) {
			// TODO Auto-generated constructor stub
			this.y = r;
		}
		public int getButtonX(){
			int newx= x;
			return newx;	
		}
		public int getButtonY(){
			int newy =y;
			return newy;	
		}



		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			System.out.println("Button geklickt!"+getButtonX()+" "+getButtonY()+" ");
		}

	}
	
	

}

:noe:

entschuldigt das Chaos, aber ist ja nur testweise implementiert...
 

Airborne

Mitglied
Und genau ist das Problem - du erzeugst deine Button in dem JFrame direkt und speicherst auch den Zustand dort. Du solltest
Java:
frame.getContentPane().repaint();

aufrufen oder den Zustand der Applikation in einer anderen Klasse speichern.
 

MrBig

Mitglied
Okay, so sieh es jetzt aus und klappt leider noch nicht so ganz

TestGui Klasse:
Java:
package Test2;

import java.awt.EventQueue;

public class TestGui {

	private static JFrame frame;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					TestGui window = new TestGui();
					window.frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the application.
	 */
	public TestGui() {
		//Fenster wird erstellt
		initialize();
		//Array wird erstellt und mit Startwerten gefüllt
		TestArray.testStart();
		//Buttens werden mit den Werten aus dem Array erstellt
		makeButtons();
	}

	private void makeButtons() {
			int le=6;
			for(int l=0;l<TestArray.arraylaenge-1;l++){
				final JButton btnNewButton = new JButton("?");
				btnNewButton.setBounds(le, 6, 20, 20);
				/*
				 * Zeichnet die Buttons
				 * enable wenn sie im möglichen Zug liegen könnten.
				 * oder disable wenn man mit dem nächten Zug nicht drauf kommen kann.
				 */
				if (TestArray.array[l]==0){
					btnNewButton.setEnabled(false);
					btnNewButton.setLabel("f");
				}else{
					btnNewButton.setEnabled(true);
				}
				btnNewButton.addActionListener(new ButtonLauscher2(l));
				btnNewButton.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent e) {
						btnNewButton.setEnabled(false);
						btnNewButton.setLabel("x");
					}
				});
				frame.getContentPane().add(btnNewButton);
				le=le+20;
		}
		
	}


	/**
	 * Initialize the contents of the frame.
	 */
	private void initialize() {
		frame = new JFrame();
		frame.setBounds(100, 100, 600, 60);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.getContentPane().setLayout(null);
	}
	/**
	 * 
	 * @author MrBig
	 * bei Button gedrückt, übergibt es die Array Possition 
	 */
	public class ButtonLauscher2 implements ActionListener {
		public int i;

		public ButtonLauscher2(int i) {
			// TODO Auto-generated constructor stub
			this.i = i;
		}
		/**
		 * Gibt den gedrückten Wert aus
		 */
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			System.out.println("");
			System.out.println("Button geklickt!"+i);
			TestArray.makePoint(i);
			int temp = TestArray.array[i];
			TestArray.array[temp]=TestArray.array[i];
			
			makeButtons();
			frame.getContentPane().repaint();
			TestArray.testArrayAusgabe();
		}

	}
	
	

}


TestArray Klasse:
Java:
package Test2;

public class TestArray {

	static int arraylaenge;
	private static int lastPossition;
	static int[] array;

	/**
	 * @param args
	 */
	
	public static void testStart() {
		// TODO Auto-generated method stub
		arraylaenge = 30;
		array = new int[arraylaenge];
		//Array zurücksetzen
		resetArray();
		//Startwert bei Possition 0 festlegen
		makeStart(5);
		
		//Testausgaben
		//Possition im Array ausgeben
		System.out.println(lastPossition);
		//Array ausgeben
		testArrayAusgabe();
	}

	static void testArrayAusgabe() {
		// TODO Auto-generated method stub
		int z = 0;
		for(int i =0;i<arraylaenge;i++){
			System.out.print(array[z]);
			z++;
		}

	}

	static void makePoint(int speed) {
		// TODO Schreibt den Zug in das Arrayfeld
		if(checkSpeed(speed)){
			giveSpeed(speed);
		}else{
			System.out.println(false);}
	}

	private static void resetArray() {
		// TODO Überschreibt das Array mit Nullen
		int temp = 0;
		for (int i=0; i < arraylaenge; i++){
			array[temp] = 0;
			temp++;}
	}

	private static void giveSpeed(int speed) {
		// TODO Gibt die Zugweite aus
		int tempNewSpeed = array[lastPossition]+speed;
		array[tempNewSpeed]= speed;
		lastPossition = tempNewSpeed;
	}

	static boolean checkSpeed(int speed) {
		// TODO Prüft ob der Zug möglich ist
		if((speed == array[lastPossition]-1)
				|| (speed == array[lastPossition])
				|| speed == array[lastPossition]+1){
			return true;
		} else{
			return false;
		}
	}

	private static void makeStart(int value) {
		// TODO Setzt Startwerte
		array[0] = value;
		lastPossition = 0;
	}

}
 

MrBig

Mitglied
Und genau ist das Problem - du erzeugst deine Button in dem JFrame direkt und speicherst auch den Zustand dort. Du solltest
Java:
frame.getContentPane().repaint();

aufrufen oder den Zustand der Applikation in einer anderen Klasse speichern.


Aber wie kann ich denn die Zustand anders speichern?
Meinst du in einem Array?

Wie kann ich denn den Button anders erzeugen?
Ich könnte eine Klasse erstellen und dann darin eine Methode makeButton(),
aber letzendlich ist es doch das selbe, oder?

Wäre echt super nett, wenn du mir nochmal einen Tipp geben könntest.:toll:
 

Airborne

Mitglied
Deine Klasse "TestGUI" ist Einstiegspunkt und direkt eine GUI Komponente.

Wie wäre es denn wenn der Einstiegspunkt eine eigene Klasse ist, die eben die GUI intialisiert und zusätzlich eine Datenhaltung, in der während der Laufzeit alle Werte gespeichert werden.

Dann kannst du die GUI schütteln wie du gerade lustig bist und hast in der anderen Datenhaltungs-Klasse persistent die nötigen Werte.
 

MrBig

Mitglied
Deine Klasse "TestGUI" ist Einstiegspunkt und direkt eine GUI Komponente.

Wie wäre es denn wenn der Einstiegspunkt eine eigene Klasse ist, die eben die GUI intialisiert und zusätzlich eine Datenhaltung, in der während der Laufzeit alle Werte gespeichert werden.

Dann kannst du die GUI schütteln wie du gerade lustig bist und hast in der anderen Datenhaltungs-Klasse persistent die nötigen Werte.

So habs jetzt getrennt. Aber leider steh ich immernoch auf dem Schlauch :-(
Bei mir wird jetzt zwar die GUI neu gezeichent, aber sie Stimmt leider noch nicht
und viel schlimmer, ich weiss nicht wie ich es schaffen soll, dass ich den nächsten zug machen kann.:eek:

Button Klasse
Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;

public class Button {

	public static void makeStartButton(final int speed) {
		// TODO Auto-generated method stub
		JButton startButton = new JButton("S");
		startButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				Array.makeNewPoint(speed);
				Array.arrayAusgabe();
				for(int i = 1; i < speed+1; i++){
					if (Array.array[i] == 0) {
						JButton button = new JButton("?");
						button.setEnabled(false);
						GUI.frame.getContentPane().add(button);
						GUI.frame.pack();
					} else {
						JButton button = new JButton("?");
						button.setEnabled(true);
						button.addActionListener(new ActionListener() {
							public void actionPerformed(ActionEvent arg0) {
								System.out.println("Button pressed");
							}
						});
						GUI.frame.getContentPane().add(button);
						GUI.frame.pack();
					}
	            	}
			}
		});
		GUI.frame.getContentPane().add(startButton);
	}

	public static void makeButton(int speed) {
		for (int i = 1; i < Array.arraylaenge; i++) {
			if (Array.array[i] == 0) {
				JButton button = new JButton("?");
				button.setEnabled(false);
				GUI.frame.getContentPane().add(button);
			} else {
				JButton button = new JButton("?");
				button.setEnabled(true);
				button.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent arg0) {
						System.out.println("Button pressed");

					}
				});
				GUI.frame.getContentPane().add(button);
				GUI.frame.pack();
			}
		}

	}

}

GUI Klasse
Java:
import javax.swing.JFrame;

public class GUI {

	static JFrame frame;

	/**
	 * Create the application.
	 */
	public GUI() {
		//Array inizialisieren
		Array.initialize(10);
		//Startwert bei Possition 0 festlegen
		Array.makeStart(4);
		
		Array.arrayAusgabe();
		
		//Gui inizialisieren
		initialize();
		
		makeMap();
	}

	private void makeMap() {
		// TODO Auto-generated method stub
		Button.makeStartButton();
		
		Button.makeButton();
		
		
		frame.pack();
	}

	/**
	 * Initialize the contents of the frame.
	 */
	private void initialize() {
		frame = new JFrame();
		frame.setBounds(100, 100, 450, 300);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
	}

}

Array Klasse
Java:
public class Array {

	static int arraylaenge;
	static int lastPossition;
	static int lastSpeed;
	static int[] array;

	/**
	 * @param args
	 */

	public static void initialize(int laenge) {
		// Initialisiert das Spielbrett
		// Die überlegene Länge wird als Arraylänge festgelegt
		arraylaenge = laenge;
		// Array ertsellen mit der Arraylänge
		array = new int[arraylaenge];
		// Array mit Nullen befüllen
		resetArray();
	}

	static void arrayAusgabe() {
		// TODO Gibt das gesammte Array testweise als String aus
		int z = 0;
		for (int i = 0; i < arraylaenge; i++) {
			System.out.print(array[z]);
			z++;
		}
		System.out.println("");
	}

	private static void resetArray() {
		// TODO Überschreibt das Array mit Nullen
		int temp = 0;
		for (int i = 0; i < arraylaenge; i++) {
			array[temp] = 0;
			temp++;
		}
	}

	static void makeStart(int value) {
		// TODO Setzt Startwerte
		array[0] = value;
		lastPossition = 0;
		lastSpeed = value;
	}

	public static boolean checkSpeed(int speed) {
		// TODO Auto-generated method stub
		if ((speed == lastSpeed) || (speed == (lastSpeed - 1))
				|| (speed == (lastSpeed + 1))) {
			return true;
		} else {
			return false;
		}

	}

	public static void makeNewPoint(int speed) {
		// TODO Auto-generated method stub
		if (lastPossition + speed <= array.length){
		if (checkSpeed(speed) == true) {
			lastSpeed = speed;
			lastPossition = lastPossition + speed; 
			array[lastPossition] = lastSpeed;
		} else {
			System.out.println("Fehler mit der Geschwindigkeit!");
		}
	} else {
		System.out.println("Fehler Array zu klein!");
	}
	}

}

und meine Start Klasse
Java:
import java.awt.EventQueue;

public class Start {
	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					GUI window = new GUI();
					GUI.frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

}
 
Zuletzt bearbeitet:

MrBig

Mitglied
So dank Airborne bin ich jetzt schon ein großes Stück weitergekommen.

Mein Spielfeld funktioniert jetzt von der Logik her nur bei den beschleunigungs Zügen.
Sprich nur wenn ich die Folge 5,6,7,8,9, usw. ziehe.???:L

Aber sobald ich gleiche Züge (4,4,4,usw.) oder bremsende Züge (4,3,2,1) ziehen möchte funktioniert es nicht so gut. ;(

Ich müsste dann die schon vorhandenen Buttons abändern und das klappt nicht.
Wie kann ich die einzelnen Buttons ansteuern?

hier die neuen Klassen:
Start wie gehabt
Java:
import java.awt.EventQueue;

public class Start {
	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					GUI window = new GUI();
					GUI.frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

}

GUI
Java:
package Test1;

import javax.swing.JFrame;

public class GUI {

	static JFrame frame;
	int speed;

	/**
	 * Create the application.
	 */
	public GUI() {
		speed = 4;
		//Array inizialisieren
		Array.initialize(50);
		//Startwert bei Possition 0 festlegen
		Array.makeStart(speed);
		
		Array.arrayAusgabe();
		
		//Gui inizialisieren
		initialize();
		
		makeMap();
	}

	private void makeMap() {
		// TODO Auto-generated method stub
		Button.makeStartButton(speed);
		
		frame.pack();
		frame.repaint();
	}

	/**
	 * Initialize the contents of the frame.
	 */
	private void initialize() {
		frame = new JFrame();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
	}

}

Klasse Array
Java:
package Test1;

public class Array {

	static String Speed;
	static int arraylaenge;
	static int lastPossition;
	static int lastSpeed;
	static int[] array;

	/**
	 * @param args
	 */

	public static void initialize(int laenge) {
		// Initialisiert das Spielbrett
		// Die überlegene Länge wird als Arraylänge festgelegt
		arraylaenge = laenge;
		// Array ertsellen mit der Arraylänge
		array = new int[arraylaenge];
		// Array mit Nullen befüllen
		resetArray();
	}

	static void arrayAusgabe() {
		// TODO Gibt das gesammte Array testweise als String aus
		int z = 0;
		for (int i = 0; i < arraylaenge; i++) {
			System.out.print(array[z]);
			z++;
		}
		System.out.println("");
	}

	private static void resetArray() {
		// TODO Überschreibt das Array mit Nullen
		int temp = 0;
		for (int i = 0; i < arraylaenge; i++) {
			array[temp] = 0;
			temp++;
		}
	}

	static void makeStart(int value) {
		// TODO Setzt Startwerte
		array[0] = value;
		lastPossition = 0;
		lastSpeed = value;
	}

	public static boolean checkSpeed(int speed) {
		// TODO Auto-generated method stub
		if ((speed == lastSpeed) || (speed == (lastSpeed - 1))
				|| (speed == (lastSpeed + 1))) {
			return true;
		} else {
			return false;
		}

	}

	public static void makeNewPoint(int speed) {
		// TODO Auto-generated method stub
		if (lastPossition + speed <= array.length){
		if (checkSpeed(speed) == true) {
			lastSpeed = speed;
			lastPossition = lastPossition + speed;
			array[lastPossition-1] = lastSpeed-1;
			array[lastPossition] = lastSpeed;
			array[lastPossition+1] = lastSpeed+1;
		} else {
			System.out.println("Fehler mit der Geschwindigkeit!");
		}
	} else {
		System.out.println("Fehler Array zu klein!");
	}
	}

}

und hier die ganz neue Klasse
Button
Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;

public class Button {

	public static void makeStartButton(final int speed) {
		// TODO Auto-generated method stub
		// Das Passiert beim Drücken vom StartButton
		if (Array.lastPossition == 0) {
			final JButton startButton = new JButton(
					Integer.toString(Array.lastSpeed));
			startButton.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent arg0) {
					startButton.setEnabled(false);
					System.out.println("Start button pressed");
					System.out.println(Array.lastPossition);
					System.out.println(Array.lastSpeed);
					Array.makeNewPoint(speed);
					Array.arrayAusgabe();
					for (int i = 1; i < speed + 2; i++) {
						final int temp = i;
						if (Array.array[temp] == 0) {
							JButton button = new JButton("x");
							button.setEnabled(false);
							GUI.frame.getContentPane().add(button);
							GUI.frame.pack();
						} else {
							final JButton button = new JButton(Integer
									.toString(Array.array[temp]));
							button.setEnabled(true);
							button.addActionListener(new ActionListener() {
								public void actionPerformed(ActionEvent arg0) {
									button.setEnabled(false);
									System.out.println("Other button");
									System.out.println(Array.lastSpeed);
									System.out.println(Integer
											.toString(Array.array[temp]));
									Array.makeNewPoint(temp);
									Array.arrayAusgabe();
									makeStartButton(temp);
								}
							});
							GUI.frame.getContentPane().add(button);
							GUI.frame.pack();
						}
					}
				}
			});
			GUI.frame.getContentPane().add(startButton);
		} else {
			System.out.println("Übergabespeed: " + speed);
			for (int i = 1; i < speed + 2; i++) {
				final int i2 = i;
				if(i < speed-1){
					String text = Integer.toString(i);
					final JButton button = new JButton(text);
					button.setEnabled(false);
					GUI.frame.getContentPane().add(button);
					GUI.frame.pack();
				}
				if(i >= speed-1){
				String text = Integer.toString(i);
				final JButton button = new JButton(text);
				button.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent arg0) {
						button.setEnabled(false);
						System.out.println("Other button");
						makeStartButton(i2);
					}
				});
				GUI.frame.getContentPane().add(button);
				GUI.frame.pack();
				}
			}
		}
	}

}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Vektor skalieren Spiele- und Multimedia-Programmierung 15
J Vektor für Gravitation erzeugen Spiele- und Multimedia-Programmierung 34
P Java3D - Zylinder genau wie Vektor ausrichten Spiele- und Multimedia-Programmierung 5
T Mein Vektor-Zeichenprogramm ist zu langsam Spiele- und Multimedia-Programmierung 4
H Der Vektor ist schuld...Problem mit durchsuchen von Vektor Spiele- und Multimedia-Programmierung 2
L Spider game, Ist es verloren? Spiele- und Multimedia-Programmierung 4
J SNAKE-GAME-LOOP / (Applet zu Application) Spiele- und Multimedia-Programmierung 4
P Snake Game Verbessern Spiele- und Multimedia-Programmierung 15
E Organisation für Game Spiele- und Multimedia-Programmierung 1
G [Game-Multiplayer] Welt vom Server zum Client senden. Spiele- und Multimedia-Programmierung 0
C 3d Game Engine : PERFORMANTE Räumliche Verdeckung Spiele- und Multimedia-Programmierung 5
R Durch String Platform Game erstellen Spiele- und Multimedia-Programmierung 8
G Component System Java 2D Game LibGDX Spiele- und Multimedia-Programmierung 6
G Collision Detection in einem 2D Sandbox Game. Spiele- und Multimedia-Programmierung 2
J Problem mit Game Of Life Spiele- und Multimedia-Programmierung 3
B "Snake"-Game Logikfehler Spiele- und Multimedia-Programmierung 1
R Game Loop verhält sich eigenartig Spiele- und Multimedia-Programmierung 1
H Game Crash Spiele- und Multimedia-Programmierung 7
B Game of Life: Was mache ich falsch? Spiele- und Multimedia-Programmierung 3
$ Einstieg in Java Game Development Spiele- und Multimedia-Programmierung 11
BraunBerry Java Game Pixel "einfärben" Spiele- und Multimedia-Programmierung 6
BraunBerry Java Game verbesserte Kollisionserkennung Spiele- und Multimedia-Programmierung 18
BraunBerry Java Game Waypoint System Spiele- und Multimedia-Programmierung 3
T Moddable Game Spiele- und Multimedia-Programmierung 6
P java lwjgl Game Spiele- und Multimedia-Programmierung 0
T Game-Rendering Spiele- und Multimedia-Programmierung 5
I 2D-Side-Scrolling-Game in Chunks splitten Spiele- und Multimedia-Programmierung 9
Z 2D Pixer art RPG Game - Alpha auf Indie DB spielbar Spiele- und Multimedia-Programmierung 0
F Game of Life Spiele- und Multimedia-Programmierung 1
S Game/Cheat Spiele- und Multimedia-Programmierung 20
wolfgang63 Mit JavaFX einfaches Game programmieren Spiele- und Multimedia-Programmierung 5
D Textfield im Game ,Problem: while-Schleife Spiele- und Multimedia-Programmierung 3
O Pause Menu im 2D Game, bitte um Rat! Spiele- und Multimedia-Programmierung 4
J Java Game performance Probleme Spiele- und Multimedia-Programmierung 7
K Online Game? Spiele- und Multimedia-Programmierung 1
R Game Loop scheitert.. Spiele- und Multimedia-Programmierung 2
Androbin Verschwindender Spieler in 2D-Game Spiele- und Multimedia-Programmierung 7
Sogomn Game Loop Spiele- und Multimedia-Programmierung 2
M Jump 'n' Run Game - Blöcke? Spiele- und Multimedia-Programmierung 7
J Verständnissfragen zur Game-Loop Spiele- und Multimedia-Programmierung 2
N Game GUI Programmieren Spiele- und Multimedia-Programmierung 16
Black_ixx ManaWar Action Game Spiele- und Multimedia-Programmierung 5
M Multiplayer-Game auf Website Spiele- und Multimedia-Programmierung 2
M Multiplayer Game mit Frontend auf HTML5 - ohne ständigen Client Request - Möglich?! Spiele- und Multimedia-Programmierung 12
P Mein Android Game Spiele- und Multimedia-Programmierung 3
N Animationen für ein 2D game Spiele- und Multimedia-Programmierung 6
S Problem mit Zeitsteuerung der Game Loop Spiele- und Multimedia-Programmierung 4
Kenan89 Kleines Game Spiele- und Multimedia-Programmierung 26
F Bot updaten von einem Browser game Spiele- und Multimedia-Programmierung 7
Samake03 [Game]"Plumbo - Lost in Depth" Preview und Fragen Spiele- und Multimedia-Programmierung 18
K Game Engine für selbstprogrammiertes Spiel Spiele- und Multimedia-Programmierung 27
A Music für Android game Spiele- und Multimedia-Programmierung 3
A Wie wird die Person im Game animiert, dass sie ihre Körperteile bewegen? Spiele- und Multimedia-Programmierung 3
K 3D Game wie Minecraft Spiele- und Multimedia-Programmierung 3
T Torquemada´s erstes Game (Pong) Spiele- und Multimedia-Programmierung 5
X Möglichst komplette 2D Game Engine? Spiele- und Multimedia-Programmierung 12
Kr0e Red Dwarf Game Server Spiele- und Multimedia-Programmierung 5
M Euer erstes Game Spiele- und Multimedia-Programmierung 16
M Netzwerk-Game mit UDP Spiele- und Multimedia-Programmierung 8
ruerob Eure Meinung über Applet-game Spiele- und Multimedia-Programmierung 12
J das erste Game Spiele- und Multimedia-Programmierung 2
M Einen Hobby Game - / Grafik Designer zu finden (Screenshot vom Spiel) Spiele- und Multimedia-Programmierung 7
S Game Client für kleine Competition Spiele- und Multimedia-Programmierung 3
J 2D-Game-Engine? Spiele- und Multimedia-Programmierung 2
F Game mit LWJGL/JOGL in executable JAR packen, wie? Spiele- und Multimedia-Programmierung 6
P 2D Game - Alternative zur TileMap? Spiele- und Multimedia-Programmierung 2
W Memory Game Spiele- und Multimedia-Programmierung 4
Steev EGE - Easy Game Engine Spiele- und Multimedia-Programmierung 2
Developer_X X-Shooter Game Spiele- und Multimedia-Programmierung 21
C 2D Multiplayer Game Spiele- und Multimedia-Programmierung 5
O Mein erstes Game Spiele- und Multimedia-Programmierung 10
Developer_X PingPong-the Game by Developer-X Spiele- und Multimedia-Programmierung 170
K My First Game "ORB" vielen Dank Quaxli Spiele- und Multimedia-Programmierung 23
hdi Das java-forum.org 2D-Game Projekt/Tutorial Spiele- und Multimedia-Programmierung 6
hdi Quiclix : Game download Spiele- und Multimedia-Programmierung 5
A Java 2D Game Spiele- und Multimedia-Programmierung 4
K Game-Tutorial von Quaxli Fragen Spiele- und Multimedia-Programmierung 18
G Suche passende Game api Spiele- und Multimedia-Programmierung 9
K Java Game Programming Buch Spiele- und Multimedia-Programmierung 3
C Hilfe bei einfachen Game Spiele- und Multimedia-Programmierung 15
L Kleines RTS Game -> Netzwerkproblem Spiele- und Multimedia-Programmierung 5
P Suche Leute für ein Hobby-Projekt (Browser Game) Spiele- und Multimedia-Programmierung 4
Q online game programieren Spiele- und Multimedia-Programmierung 8
G Welche Game Api Spiele- und Multimedia-Programmierung 9
S 3d applet - online game Spiele- und Multimedia-Programmierung 4
C Open-Source Game Spiele- und Multimedia-Programmierung 2
sparrow 3D-Game-Engine Spiele- und Multimedia-Programmierung 20
J Isometric Tile Game (x,y) inklusive Z cordinaten? Spiele- und Multimedia-Programmierung 2
M Java online multiplayer game Spiele- und Multimedia-Programmierung 2
J java netzwerk strategie game programmiert Spiele- und Multimedia-Programmierung 4
D Jump and Run Game -- Kollisionsabfrage Spiele- und Multimedia-Programmierung 30
B Snake-Game fürs Handy Spiele- und Multimedia-Programmierung 3
F Online Game mit Java? Spiele- und Multimedia-Programmierung 11
M Space PingPong Game --> Performance ok? Spiele- und Multimedia-Programmierung 44
R 2D Game Oberfläche. Wie am besten? Spiele- und Multimedia-Programmierung 2
H LWJGL - Lightweight Java Game Library! Ist Java3D jetzt out? Spiele- und Multimedia-Programmierung 4

Ähnliche Java Themen

Neue Themen


Oben