Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding
You last visited: Today at 02:02

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



ZZZnake - Dynamisch geht nix

Discussion on ZZZnake - Dynamisch geht nix within the General Coding forum part of the Coders Den category.

Reply
 
Old   #1


 
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
ZZZnake - Dynamisch geht nix

Moin. Bin seit etwa einer Woche am Lernen von Java und bin es bisher relativ langsam und entspannt angegangen. Heute wollte ich mal nach den ersten 2 Kapiteln des "Java ist auch eine Insel" Buches mal das kleine "ZZZnake" Programm umschreiben - es "dynamisch" machen.

Das heißt das ich die Positionen der Figuren durch eine Zufallszahl festsetzen möchte, die nach jedem generieren anders ist. Die Positionen werden durch die 2 Random Methoden "randomX" und "randomY" generiert. Mein bisheriger Code prüft, ob es bei den Positionen irgendwo eine Kollision gibt und soll die Positionen dann mal testweise ausgeben damit ich sehe ob da alles passt.

Das tut er aber leider nicht, das Programm bricht irgendwo ab.

Hier mal der Ansatz:

mfg
Mostey is offline  
Old 01/22/2013, 15:03   #2
 
Der Anbieter's Avatar
 
elite*gold: 50
Join Date: Sep 2010
Posts: 846
Received Thanks: 223
Gibt es beim Kompilieren keine Fehlermeldung?
Der Anbieter is offline  
Old 01/22/2013, 15:05   #3


 
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
Quote:
Originally Posted by Der Anbieter View Post
Gibt es beim Kompilieren keine Fehlermeldung?
Nein, wüsste auch nicht wo es da eine geben sollte.

Er bricht halt bei der Positionsgenerierung irgendwo ab und das Programm schließt sich.
Mostey is offline  
Old 01/22/2013, 15:33   #4



 
Sedrika's Avatar
 
elite*gold: 18
The Black Market: 103/0/0
Join Date: Sep 2009
Posts: 20,174
Received Thanks: 14,475
Ich hab das ganze mal etwas umgeschrieben. Getestet habe ich es nicht, da ich keinen Java Compiler zurzeit habe.

Code:
import java.text.SimpleDateFormat;
import java.util.Date;
/*
 *  Spiel: Ein Spieler (S) muss 3 Geldstuecke ($) einsammeln ohne von der Schlange (!) gebissen zu werden
 */
public class ZZZZnake {

	public static void main(String[] args) {
		SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
		var nDate = sdf.format(new Date());
		JOptionPane.showMessageDialog(null, "ZZZZZZnake!");
		int confirm = JOptionPane.showConfirmDialog(null, "Spiel starten? | Systemzeit: " + nDate);
		// Confirmrequest
		if (confirm == 0) // Ja = Spielablauf
		{
			positions();
		} 
		else // 1 oder 2 = Nein = Abbruch
		{
			System.exit( 0 );
		}
	}

	public static void positions() {
		Point playerpos = new Point();
		Point schlangenpos = new Point();
		Point geldpos1 = new Point();
		Point geldpos2 = new Point();
		Point geldpos3 = new Point();
		int minXY = 0;
		int maxX = 40;
		int maxY = 10;

		playerpos.setLocation(GetRandomPos( minXY, maxX ), GetRandomPos( minXY, maxY ));
		schlangenpos.setLocation(GetRandomPos( minXY, maxX ), GetRandomPos( minXY, maxY ));
		geldpos1.setLocation(GetRandomPos( minXY, maxX ), GetRandomPos( minXY, maxY ));
		geldpos2.setLocation(GetRandomPos( minXY, maxX ), GetRandomPos( minXY, maxY ));
		geldpos3.setLocation(GetRandomPos( minXY, maxX ), GetRandomPos( minXY, maxY ));
				
		while( geldpos1.getLocation() == playerpos.getLocation() ||
			   geldpos2.getLocation() == playerpos.getLocation() ||
			   geldpos3.getLocation() == playerpos.getLocation() ||
			   playerpos.getLocation() == schlangenpos.getLocation() )
		{
			geldpos1.setLocation(GetRandomPos( minXY, maxX ), GetRandomPos( minXY, maxY ));
			geldpos2.setLocation(GetRandomPos( minXY, maxX ), GetRandomPos( minXY, maxY ));
			geldpos3.setLocation(GetRandomPos( minXY, maxX ), GetRandomPos( minXY, maxY ));
			playerpos.setLocation(GetRandomPos( minXY, maxX ), GetRandomPos( minXY, maxY ));
			System.out.println( "X: " + playerpos.getX() + " Y:" + palyerpos.getY() );
			System.out.println( "X: " + schlangenpos.getX() + " Y:" + schlangenpos.getY() );
			System.out.println( "X: " + geldpos1.getX() + " Y:" + geldpos1.getY() );
			System.out.println( "X: " + geldpos2.getX() + " Y:" + geldpos2.getY() );
			System.out.println( "X: " + geldpos3.getX() + " Y:" + geldpos3.getY() );
		}

	}

	public static int GetRandomPos(int low, int high) {
		return (int) (Math.random() * (high - low) + low);
	}
}
Sedrika is offline  
Old 01/22/2013, 15:40   #5


 
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
Selbes Ergebnis, die Dialoge funktionieren, alles danach allerdings nicht mehr. Finde aber auch dass das genau das selbe ist was ich ja schon geschrieben hatte, halt nur mit anderen Lösungsansätzen.
Mostey is offline  
Old 01/22/2013, 15:44   #6



 
Sedrika's Avatar
 
elite*gold: 18
The Black Market: 103/0/0
Join Date: Sep 2009
Posts: 20,174
Received Thanks: 14,475
Ich sehe gerade das hier xD
Code:
if (confirm == 0) // Ja = Spielablauf
änder es mal in
Code:
if (confirm) // Ja = Spielablauf
0 steht für false.

Abbruch ist immer 0.
Sedrika is offline  
Old 01/22/2013, 15:54   #7


 
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
Wir verwenden hier keinen Boolean, daher geht das ohne den Wert in der if Abfrage sowieso nicht. 0 ist in Java nicht immer false. Zumindest nicht bei der Funktion "JOptionPane".

Stimmt schon, habs eben auch nochmal getestet. Der zählt von rechts nach links: Abbruch - Nein - Ja

€: Manchmal könnt ich mir so dermaßen eine reinhauen... echt ey.
Code:
while (geldpos1.equals(playerpos) || geldpos2.equals(playerpos)
				|| geldpos3.equals(playerpos) || playerpos.equals(schlangenpos)) {
			geldpos1.setLocation(randomX(), randomY());
			geldpos2.setLocation(randomX(), randomY());
			geldpos3.setLocation(randomX(), randomY());
			playerpos.setLocation(randomX(), randomY());
			System.out.println(playerpos);
			System.out.println(schlangenpos);
			System.out.println(geldpos1);
			System.out.println(geldpos2);
			System.out.println(geldpos3);

		}
Ich hab ne while Schleife die überprüft ob die Koordinaten alle verschieden sind und nicht aufliegen. Die Ausgabe kommt ja nur wenn sie mindestens einmal irgendwo aufeinander gelegen haben.

Sorry.
Mostey is offline  
Old 01/22/2013, 16:00   #8



 
Sedrika's Avatar
 
elite*gold: 18
The Black Market: 103/0/0
Join Date: Sep 2009
Posts: 20,174
Received Thanks: 14,475
Dann nimm doch mal die Abfrage raus und teste mal so, um zu sehen, ob es an der Abfrage liegt.

Ich verstehe auch nicht, wieso du nicht so abfragst:
Code:
int confirm = JOptionPane.showConfirmDialog(null, "Spiel starten? | Systemzeit: " + nDate, "TITEL", JOptionPane.YES_NO_CANCEL_OPTION);
und dann mit
Code:
if (confirm == JOptionPane.YES_OPTION)
		{
			positions();
		}
		else // if (result == JOptionPane.NO_OPTION)
		{
			System.exit(0);
		}
den Rückgabewert ermittelst.
Sedrika is offline  
Old 01/23/2013, 14:40   #9


 
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
So, nach diesem dummen Fehler meinerseits hab ich mich nochmal an das Minigame gemacht und nun Spielfeld, Figuren und Steuerung hinzugefügt.

Allerdings hab ich so das Gefühl dass das sehr unübersichtlich für andere wird, daher poste ich mal den Source von der Klasse mit den ganzen Methoden und ihr könnt ja mal drüberschauen. Übrigens hab ich sehr viele Probleme mit dem Rückgabewert. Ich würde gern für jede Aufgabe eine seperate Methode machen und das alles in der Main Methode zusammenfassen, allerdings geht das oftmals nicht, da ich bei einigen Funktionen eine Eingabe benötige um die Methode auszuführen, da ich das selbst so festgelegt habe. Naja, seht ihr ja dann schon selbst.

Zur Verständlichkeit ist einiges kommentiert.
Mostey is offline  
Reply


Similar Threads Similar Threads
OriginReallife.De NEU! DYNAMISCH!
09/08/2012 - Grand Theft Auto - 1 Replies
Kommt einfach anschauen unbeschreiblich geil! IP:176.9.46.83:5252
[H] Seite dynamisch gestalten
08/22/2012 - Web Development - 15 Replies
Hallo, ich habe ein Problem. Undzwar will ich eine Seite dynamisch gestalten, sprich alles soll sich an die Auflösung des Monitors/der Fenstergröße stellen. Momentan habe ich den top bereich mit dem header und den main bereich mit der navi und dem content. Bis jetzt ist es ja so wie ich will auf meiner Auflösung (1680x1050) habe ja auch alles auf die Auflösung eingestellt, aber verkleinere ich das Fenster jetzt geht der breite header oben natürlich kleiner so das man am Ende nur die...
[JAVASCRIPT]Mehrere Select Formularfelder dynamisch..????
08/18/2011 - Web Development - 3 Replies
Hi Leutz, hab ne Problem. Habe ca 8 Select Felder mit ungefähr 40 optionen. Jetzt soll es so ablaufen das wenn man z.B. bei select feld eins eine Option gewählt hat, diese nichtmehr bei den anderen 7 zugänglich ist. Also deaktiviert oder unsichtbar gemacht wird. Habe schon einiges mit Vergleichsoperatoren probiert aber ist einfach zuviel code und klappt am Ende nicht. Die selects hole ich mir mit dieser function: JAVA
Gui grösse verändern (dynamisch)
09/21/2009 - AutoIt - 2 Replies
hey ho ich such das jetzt schon ne weile.. ich weis garned ob das überhaupt geht.. (vtl. geht das auch nur bei mir nicht und für alle andern isses so normal dass es nirgend steht xD) ich möchte das fenster von meinem gui nach dem ich das programm ausgeführt habe verändern können (so wie halt bei den windowsfenstern dass dann das pfeilchen kommt welches auf bede seiten zeigt ..) wie genau mand em sagt ... KA vtl. dynamisch oder so xD ich hoffe mal ihr versteht was ich meine und dass...



All times are GMT +1. The time now is 02:03.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.