Zum Inhalt springen

Commander_COM

Mitglieder
  • Gesamte Inhalte

    446
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von Commander_COM

  1. Das ist doch nu aber nicht 2D und nicht an einem Rechner mit 2 Spielern!! @beetFreeQ: Ich hab ne PS2... Kennst du gute Spiele dieser Art für die Playsie?
  2. Hi, ich suche schon seit langem mal wieder ein Spiel, wo man sich zu zweit oder mehr durch ein Level kloppt, und das recht unterhaltsam irgendwie. Früher gabs so was mal im 2D-Stil und hat zu zweit richtig viel Bock gemacht, kann auch 2D-Ballerspiel zu zweit sein, ich find aber irgendwie nichts richtig schönes wie früher... HdR: Rückkehr des Königs hab ich schon durch, das war schon genau die Richtung die ich suche... Kennt ihr noch was in der Art? Grüße
  3. ja, so ist das... Null PointerExept. auch bei diesem Versuch was ist da nur los? ich hab echt keine ahnung
  4. Zeile 111: TF2.setText("Optimaler Weg: "+ Calc.optWegToString()+ " Dauer: " + Calc.optWegDauer()); Calc.... funzt eigentlich
  5. genau das gleiche wie vorher:
  6. wenn ich das tue, gibts eine NullPointerException, weil er das Label net mehr findet! deswegen hatte ich das auch in die methode mit reingenommen... wo liegt mein fehler dann?
  7. Jaraz: Bitte code Tags benutzen! package com.mindobject.pojo; import java.awt.Graphics; import java.awt.Frame; import java.awt.Button; import java.awt.Label; import java.awt.Color; import java.awt.event.WindowEvent; import java.awt.event.WindowAdapter; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.util.Iterator; import java.util.Random; /** * * Klasse zum Zeichen der Umgebung * * @version 1.0 vom 20.05.2005 */ public class Draw extends Frame implements ActionListener { private Button drawknopf; private Button drawlikepicknopf; private Button calcknopf; private Label TF; /** * Standard-Konstruktor zeichnet das Frame und die Buttons */ public Draw() { // Frame-Initialisierung super("Ikosaeder - Aufgabe"); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent evt) { System.exit(0); } }); int frameWidth = 700; int frameHeight = 350; setSize(frameWidth, frameHeight); setResizable(false); setLayout(null); setVisible(true); setLocation(150, 150); Button drawknopf = new Button("Zufälliger Iko."); drawknopf.setBounds(580, 50, 100, 20); drawknopf.addActionListener(this); add(drawknopf); Button drawlikepicknopf = new Button("gegebener Iko."); drawlikepicknopf.setBounds(580, 80, 100, 20); drawlikepicknopf.addActionListener(this); add(drawlikepicknopf); } /** * Methode zum Überschreiben von ActionListener Buttons werden mit Labels * versehen und dann hier eingefügt */ public void actionPerformed(ActionEvent e) { Random generator2 = new Random(); int zufall; int zufall2; Button obj = (Button) e.getSource(); int z; // Button "Draw Ikosaeder" if (obj.getLabel().equals("Zufälliger Iko.")) { // calcknopf.setVisible(true); do { zufall = 1 + generator2.nextInt(20); zufall2 = 1 + generator2.nextInt(20); } while (zufall == zufall2); System.out.println(zufall + " " + zufall2); if (zufall + zufall2 >= 20) { zufall = Math.abs(zufall - zufall2); } else { zufall = zufall + zufall2; } Ikosaeder Iko = new Ikosaeder(); Iko.zufIkosaeder(250); drawDreieck(Iko); faerbeDreieck(Iko.getDreieckn(zufall)); // //Mal zum testen die Nachbarn färben // faerbeDreieck(Iko.getDreieck(Iko.getDreieck(zufall // ).getNachbar1())); // faerbeDreieck(Iko.getDreieck(Iko.getDreieck(zufall // ).getNachbar2())); // faerbeDreieck(Iko.getDreieck(Iko.getDreieck(zufall // ).getNachbar3())); Calculate Calc = new Calculate(); Label TF = new Label(); TF.setBounds(5, 300, 690, 35); TF.setBackground(Color.WHITE); // TF.setEditable(false); // TF.setFocusable(false); add(TF); Calc.berechne(Iko, Iko.getDreieckn(zufall)); System.out.println("--->" + Calc.optWegToString()); TF.setText("Optimaler Weg: " + Calc.optWegToString() + " Dauer: " + Calc.optWegDauer()); TF.repaint(); } // Button "gegebener Iko." if (obj.getLabel().equals("gegebener Iko.")) { // calcknopf.setVisible(true); Ikosaeder Iko = new Ikosaeder(); Iko.gegIkosaeder(250); drawDreieck(Iko); faerbeDreieck(Iko.getDreieckn(12)); // //Mal zum testen die Nachbarn färben // faerbeDreieck(Iko.getDreieck(Iko.getDreieck(12).ge tNachbar1())); // faerbeDreieck(Iko.getDreieck(Iko.getDreieck(12).ge tNachbar2())); // faerbeDreieck(Iko.getDreieck(Iko.getDreieck(12).ge tNachbar3())); Calculate Calc = new Calculate(); Label TF = new Label(); TF.setBounds(5, 300, 690, 35); TF.setBackground(Color.WHITE); // TF.setEditable(false); // TF.setFocusable(false); add(TF); Calc.berechne(Iko, Iko.getDreieckn(12)); System.out.println("--->" + Calc.optWegToString()); TF.setText("Optimaler Weg: " + Calc.optWegToString() + " Dauer: " + Calc.optWegDauer()); TF.repaint(); } } /** * Zeichnet alle Dreiecke des Ikosaeders * * @param iko * Es wird ein Ikosaeder übergeben */ private void drawDreieck(Ikosaeder iko) { Iterator it = iko.getDreieckSet().iterator(); this.getGraphics().clearRect(0, 0, 1000, 1000); while (it.hasNext()) { Dreieck d = (Dreieck) it.next(); this.getGraphics().translate(50, 50); d.zeichne(this.getGraphics()); } } /** * Unterlegt das Startfeld farbig * * @param iko * Ein Ikosaeder * @param nummer * Die Nummer des zu färbenden Dreiecks */ private void faerbeDreieck(Dreieck Drei) { this.getGraphics().translate(50, 50); Drei.fuelle(this.getGraphics()); } /* * public static void main(String[] args) { * * Ikosaeder Iko = new Ikosaeder(150); Draw draw = new Draw(); } */ }
  8. Huhu, ich werd hier noch bekloppt... wie bekomme ich mein awt-Textfield zum aktualisieren???? TF.setText("Optimaler Weg: "+ Calc.optWegToString()+ " Dauer: " + Calc.optWegDauer()); TF.repaint(); geht nicht... steht immer das drin, was er bei allerersten Mal angezeigt hat *grübel* EDIT: mit Label gehts auch nicht!?!
  9. ok, dann passt das so :-P danke an alle soweit für die Mithilfe... immer wieder ein klasse Team hier
  10. So fertig. *puh* Wens interessiert, unten der Quelltext. Mir gefällts zwar vom Stil her nicht so... wegen set-Methoden usw. aber es funktioniert wenigstens... Hat einer vielleicht noch ne Idee, wie ich das mit der set-Methode, bzw. add-Methode wegkriege? Ich vermute, das ist kein schöner objektorientierter Stil, da solche Eigenschaften doch sicher private sein sollten, oder... public void berechne(Ikosaeder Iko, Dreieck d){ aktWeg.addWegpunkt(d); //Wegpunkt addieren laenge=laenge+1; //Weglänge erhöhen LinkedList Nachbarn = new LinkedList(); //Nachbarn initialisieren d.setBetreten(true); //Dreieck ist betreten Dreieck n1 = (Dreieck)Iko.getDreiecki(d.getNachbar1()); //Nachbarn finden, Dreieck n2 = (Dreieck)Iko.getDreiecki(d.getNachbar2()); //die noch nicht Dreieck n3 = (Dreieck)Iko.getDreiecki(d.getNachbar3()); //betreten wurden if (n1.getBetreten()==false)Nachbarn.add(n1); if (n2.getBetreten()==false)Nachbarn.add(n2); if (n3.getBetreten()==false)Nachbarn.add(n3); Iterator it = Nachbarn.iterator(); while(it.hasNext()){ //solange es unbetretene Nachbarn gibt Dreieck n = (Dreieck)it.next(); berechne(Iko, n); //hier ist die Rekursion aktWeg.removeLast(); //beim Zurückgehen Feld wieder freimachen } //Test-abschnitt für Inhalte der Wege /*if(laenge==20){ System.out.println("\n\nLaenge:"+laenge+" Dauer: "+aktWeg.getDauer()+ " Dauer optWeg: "+optWeg.getDauer()+"\n"); aktWeg.toString(); } */ if(optWeg.getDauer()==19 & laenge==20){ //erster Durchlauf optWeg mit optWeg.clone(aktWeg); // aktWeg füllen } if(optWeg.getDauer() > aktWeg.getDauer() & laenge==20){ optWeg.clone(aktWeg); //in den nächsten Durchläufen //den optimalen Weg herausfinden System.out.println(optWeg.toString() + " " + optWeg.getDauer()); } d.setBetreten(false); //Betreten-Tag wieder rückgängig machen laenge--; //Länge dekrementieren wege Rückschritt }
  11. Huhu, kann mir bitte mal jemand beim coden helfen, ich komm noch nicht so ganz klar, das ganze Problem der Wegfindung rekursiv(denn so sollen wirs machen) zu lösen. Ich habe bislang das hier: public class Calculate{ private Weg aktWeg = new Weg(); private Weg optWeg = new Weg(); private int laenge; /** * rekursive Methode zur Wegbestimmung */ public void berechne(Ikosaeder Iko, Dreieck d){ aktWeg.addWegpunkt(d); //Wegpunkt addieren laenge=laenge+1; //Weglänge erhöhen ArrayList Nachbarn = new ArrayList(); //Nachbarn initialisieren Nachbarn.add(Iko.getDreieckn(d.getNachbar1())); Nachbarn.add(Iko.getDreieckn(d.getNachbar2())); Nachbarn.add(Iko.getDreieckn(d.getNachbar3())); for(int i=1;i<=3;i++){ if(laenge<3){ berechne(Iko, (Dreieck)Nachbarn.get(0)); Nachbarn.remove(0); laenge=laenge-1; } } //if(aktWeg.getLaenge() } } Geht leider nicht, weil ich nicht mehr durchblicke... :confused: Erklärung: die Methode bekommt einen Ikosaeder und ein Startdreieck übergeben. Danach werden vom Dreieck die Nachbarn bestimmt.(sind auch dreiecke). Danach soll die gleiche Methode wieder aufgerufen werden mit den Nachbardreiecken. usw... So und da wirds mir irgendwie zu kompliziert. Irgendwann sollen in aktWeg ein Weg gespeichert sein. der kommt dann in optWeg und wird dann dort weiterverarbeitet, aber das soll uns erstmal hier nicht weiter stören. Abbruchbedingungen wären: 1. der Weg ist 20 Dreiecke lang -> gültiger Weg, abspeichern in optWeg 2. das Dreieck wurde schon mal betreten-> Schritt zurück 3. Es geht gar nicht mehr weiter-> verlaufen! Schritt zurück das problem ist, dass ich nicht mehr durchblicke und keine möglichkeiten sehe, irgendwie stück für stück zu programmieren und zu schauen, wies funktioniert, man muss diesen rekursiven Block irgendwie auf einmal richtig am Stück schreiben oder? ich blick nich mehr durch... hilfe.... ich dachte ich mache ne arraylist wo die nachbarn drin sind. und wenn die rekursive schleife zurückspringt, dann löscht er diesen nachbarn. was mache ich aber wenn der weg ein wenig um die ecke geht? irgendwie muss ich speichern, wo der schon drauf war *verzweifel* meine Birne is auch noch total platt.... nach 5-6 stunden nur programmieren kriegt man irgendwie keinen klaren Kopf mehr...
  12. jaaaaaaaaaaaa, danke. das mit dem getGraphics musste man erstmal kapieren, ich wusste vorher immer nicht, wo dieses blöde Graphics g herkommt
  13. Er zeichnet mir das jetzt erstmal (auch wenn die Koordinaten nicht so ganz hinhauen, aber das ist erstmal egal) ABER: wie bekomme ich das hin, dass die Paint-mehtode weiß, dass sie das Set vom Ikosaeder nehmen soll, um sich die Koordinaten zu holen? in der main rufe ich auf: Ikosaeder Iko = new Ikosaeder(150); Draw fenster = new Draw(Iko); mein quelltext der draw.class: public Draw(Ikosaeder Iko){ // Frame-Initialisierung super("Ikosaeder - Aufgabe"); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent evt) { System.exit(0); } }); int frameWidth = 1024; int frameHeight = 768; setSize(frameWidth, frameHeight); setLayout(new BorderLayout()); setVisible(true); } public void paint(Graphics g){ Ikosaeder Iko = new Ikosaeder(150); Iterator it=Iko.getDreieckSet().iterator(); //soll ja hier nicht stehen // will das am liebsten so //aufrufen: public void paint(Graphics g, Ikosaeder Iko){...} //dann malt ers aber nicht mehr :-( //er malt ja jetzt nur im quelltext festgelegt 150er Ikosaeder //soll aber die werte aus der main nehmen //wie bringe ich das der paint-methode bei? while (it.hasNext()){ Dreieck d = (Dreieck)it.next(); d.draw(g); }
  14. Ich raff das einfach net mit der Paint-Methode. Die soll ich nun irgendwie überschreiben, aber ich find auch kein richtiges Tutorial wo mir mal das erklärt wird, was ich eigentlich machen will. soll so aussehen: main{ paint(Dreieck); } public void paint(Dreieck d){ getcoordsvomDreieck; drawpolygon(koordinaten); } was muss ich denn nun tun, damit das so geht? geht das überhaupt so? hilfe?! :confused:
  15. Wie kann ich Dreiecke zeichnen lassen? ich habejetzt eine Ikosaeder.class in der ein TreeSet gefüllt mit Objects des Typs Dreieck ist, deren Koordinaten ich über die Methoden dreieck.getCoord1x(); dreieck.getCoord1y(); für den 1. Punkt bekomme. für 2. und dritten Punkt einfahc die 1 gegen 2/3 ersetzen. Wie schreibe ich jetzt eine Draw.class, die mir z.b. das so hier zeichnet: Draw zeichne = new Draw(); zeichne.drawtriangle(Dreieck); Ergebnis: Ich habe schon das hier: import java.awt.*; import java.awt.event.*; public class Draw extends Frame { public Draw() { super("Ikosaeder"); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent evt) { System.exit(0); } }); int frameWidth = 1024; int frameHeight = 768; setSize(frameWidth, frameHeight); setLayout(new BorderLayout()); setVisible(true); } public void paint( Graphics g ) { g.drawLine( 50,50, 100,100); } public static void main(String[] args) { Draw ExeLevel = new Draw(); } }
  16. Danke soweit erstmal, ich denke ich habe jetzt genügend ansätze. ich mach das jetzt so: Class Dreieck: Erzeugt ein Dreieck(int Nr, double coord 1x, coord1y, coord2x, coord2y, coord3x, coord3y) Class Ikosaeder: Enthält ein TreeSet mit 20 Dreiecken Class Draw: Zieht sich über versch. getMethoden die Koordinaten der Dreiecke im Treeset des Ikosaeders und malt die hin Class Calc: keine Ahnung, hab ich noch nicht weiter nachgedacht
  17. Vielleicht könnte man sich diese Form zunutze machen: sind ja 20 Dreiecke: Daran sieht man genau, welches Dreieck welche Nachbarn haben. Also irgendwie ein System von Dreiecken erzeugen, welche wie oben gemalt werden. Welche Nummer die mal habensollen, ist ja erstmal wurscht. Da hab ich meine Objekte, mit Eckpunkten und Kanten, über die ich Nachbarschaftsbeziehungen herausfinden könnte. Das wäre so jetzt mein Ansatz für die Aufgabe. Nun meine Frage, wie kann ich das mit den Objekten realisieren und zeichnen lassen?
  18. hm... ok ich erzähl mal, was ich mir so für gedanken gemacht habe: Hauptprog.class (hier wird alles gestartet) Draw.class (macht mir ein Frame auf und malt ein Ikosaeder auf siehe oben) Calc.class (berechnet Routen für den Käfer über eine Art Backtracking) *grml* ich ärger mich gerade, dass ich in java kaum einen Plan habe... ich weiß echt nicht, wie ich an das Problem grundsätzlich herangehen soll...
  19. Der Käfer soll nur über benachbarte Seitenflächen laufen können. Zwei Seitenflächen sind dann benachbart, wenn sie eine gemeinsame Kante besitzen. Ich habs mal aufgemalt, wie das dann dargestellt werden soll: *grübel* Da ich mit Java und Grafik noch nicht wirklich was gemacht habe, ist es mir ein Rätsel, wie ich da mit Objekten rumhandle und ganz allgemein mein UML-Diagramm überhaupt aussehen soll, da ich noch nicht mal weiß, was ich alles brauche :-(
  20. Hallo! Ich soll folgende Aufgabe lösen und habe keine Schimmer, wie ich das angehen soll: "Ikosaeder in Java zeichnen. Alle 20 Seitenflächen bekommen eine Nummer drauf. Ein Käfer soll über alle Flächen reisen(aber nur einmal!) Jede Fläche soll Startfläche sein können. Auf jeder Fläche macht der Käfer eine Pause. Länge der Pausen errechnet sich durch Schrittnummer des Käfers multipliziert mit der Zahl der gerade betretenen Seitenfläche. Wechsel von Seitenfläche zu Seitenfläche dauert 1 Sekunde. Das Betreten der Startfläche ist der erste Schritt." Aufgabe: System von Klassen erzeugen, welches ein Ikosaeder in geeigneter Form zeichnet und verwaltet und die Reiseroute des Käfers für die günstigste schnellste Route ausgibt. ----------------------------------------------------------------------- Kann mir da bitte jemand helfen? Ich habe keine Ahnung, wie ich das bewerkstelligen soll, da ich auch in Java noch nicht ganz so fit bin.
  21. da gibts doch sicher auch ein paar imports... html-parser oder so was
  22. JAAAAAAAAAAAAAAAAAAAA DANKE!!!!!!!!!!!!!!!! das wars wonach ich suchte *steinvomherzenfall* *schweb* du bist mein Held!!! vielen vielen Dank!
  23. *g* habe gerade deine signature-links durchgesehen :-P ja das mit dem iterator war mir bekannt, hatte aber gerade die algorithmische idee vorhin und dann programmiert man das schnell und merkt am ende, dass es von vornherein gar nicht gehen kann BÖSER; FAULER ITERATOR:-( ;-)

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...