
DieterS
Mitglieder-
Gesamte Inhalte
9 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Alle Inhalte von DieterS
-
Hi, hab leider schon wieder ein Problem. Könnt ihr mir sagen, warum bei der anzeigen-Methode der Klasse HELD zwar das Rechteck, aber nicht das Bild angezeigt wird. Ich kann den Fehler einfach nicht finden. import java.awt.*; import javax.swing.*; public class HELD { int x, y; String name; double leben, staerke, gesundheit; GEGENSTAND waffe, schild, ruestung; Image bild; public HELD(String name, int leben, String dateiname, JApplet p) { this.name = name; gesundheit = 100; this.leben = leben; waffe = null; schild = null; ruestung = null; bild = p.getImage(p.getCodeBase(), dateiname); } public void anzeigen(Graphics g, JApplet p) { g.fillRect(x*32+10,y*32+30,32,32); g.drawImage(bild, x*32+14, y*32+30, 24, 32, p); } public void plaziere(int x, int y) { this.x = x; this.y = y; } } import java.awt.*; import javax.swing.*; public class DUNGEON { FELD[][] feld; int breite, hoehe; HELD spieler; public DUNGEON(int breite, int hoehe, JApplet p) { spieler = null; this.breite = breite-1; this.hoehe = hoehe-1; feld = new FELD[20][20]; // alle Felder erzeugen for (int x = 0; x <= breite; x++) { for (int y = 0; y <= hoehe; y++) { feld[x][y] = new FELD(x*32+10,y*32+30,1); } } // Koordinaten und Typ für die Felder festlegen } public void aufbauen() { for (int x=1; x<=breite-1; x++) { for (int y=1; y<=hoehe-1; y++) { if (!( x==6 || x==12 || y==4 || y==8 || y==11 || y==14)) { feld[x][y].setzeTyp(0); } else { if (y==11 && (x==13 || x==14)) { feld[x][y].setzeTyp(0); } else { if (y==14 && !(x==6 || x==7|| x==8 || x==10 || x==11 || x==12)) { feld[x][y].setzeTyp(0); } } } } } // Bereiche erstellen feld[3][4].setzeTyp(2); feld[8][4].setzeTyp(2); feld[14][4].setzeTyp(2); feld[12][6].setzeTyp(2); feld[6][7].setzeTyp(2); feld[9][8].setzeTyp(2); feld[3][11].setzeTyp(2); feld[9][11].setzeTyp(2); feld[12][13].setzeTyp(2); feld[6][12].setzeTyp(2); feld[9][15].setzeTyp(3); // Türen plazieren } public void anzeigen(Graphics g, JApplet p) { for (int x = 0; x <= breite; x++) { for (int y = 0; y <= hoehe; y++) { feld[x][y].anzeigen(g, p); } } if (spieler != null) { spieler.anzeigen(g,p); } } public void hinterlegeGegenstand(int x, int y, GEGENSTAND neu) { feld[x][y].hinterlegeGegenstand(neu); } public void plaziereHeld(int x, int y, HELD neu) { spieler = neu; spieler.plaziere(x,y); } } import java.awt.*; import javax.swing.*; public class FELD { private int feldtyp, x, y; GEGENSTAND ding; public FELD(int x, int y, int feldtyp) { this.x = x; this.y = y; this.feldtyp = feldtyp; } public void anzeigen(Graphics g, JApplet p) { if(feldtyp==0) { g.setColor(new Color(255,255,255)); // Farbe für ein freies Feld } else { if (feldtyp==1) { g.setColor(new Color(130,130,130)); // Farbe für eine Mauer } else { if (feldtyp==2) { g.setColor(new Color(255,255,0)); // Farbe für eine offene Tür } else { if (feldtyp==3) { g.setColor(new Color(0,0,0)); // Farbe für eine geschlossene Tür } } } } g.fillRect(x,y,32,32); // zeichnet die Farbe des Feldes g.setColor(new Color(0,0,0)); g.drawRect(x,y,32,32); } public void setzeTyp(int typ) { feldtyp = typ; } } public class SPIEL extends JApplet { DUNGEON test; HELD spieler; public void init() { test = new DUNGEON(16,16,this); test.aufbauen(); spieler = new HELD("Peter",100, "Bilder/Schwert", this); test.plaziereHeld(1,1,spieler); } public void paint(Graphics g) { g.drawString("Adventure-Spiel", 10, 20); test.anzeigen(g, this); } }
-
Danke, es klappt jetzt. public GEGENSTAND ablegen(int typ) { if (waffe != null && waffe.gibTyp()==typ) { GEGENSTAND waffeNeu; waffeNeu = waffe; waffe = null; return waffeNeu; } else { if (schild != null && schild.gibTyp()==typ) { GEGENSTAND schildNeu; schildNeu = schild; schild = null; return schildNeu; } else { if (ruestung != null && ruestung.gibTyp()==typ) { GEGENSTAND ruestungNeu; ruestungNeu = ruestung; ruestung = null; return ruestungNeu; } else { return null; } } } }
-
Und wie kann ich das verhindern?
-
Danke, ich habs jetzt geändert. Stimmt das dann so? public GEGENSTAND ablegen(int typ) { GEGENSTAND gegenstand; if (waffe.gibTyp()==typ) { gegenstand = waffe; waffe = null; } else { if (schild.gibTyp()==typ) { gegenstand = schild; schild = null; } else { if (ruestung.gibTyp()==typ) { gegenstand = ruestung; ruestung = null; } else { gegenstand = null; } } } return gegenstand; }
-
Hi! sorry fals ich nerve, aber ich stecke schon wieder fest. Die Aufgabe ist jetzt: "Schreiben Sie eine Methode ablegen() mit folgendem Funktionskopf: public Gegenstand ablegen(int typ) welche einen Gegenstand - sofern überhaupt angelegt - wieder entfernt und gleichzeitig als Parameter zurückgibt." Könnt ihr mir bitte sagen, was ich übersehen/falsch gemacht habe. Meine Lösung ist bis jetzt: import java.awt.*; public class GEGENSTAND { String bezeichnung; private double angriffswert, verteidigungswert, goldwert, zustand, faktor; private int typ; public GEGENSTAND(int typ, String bez, double angriffswert, double verteidigungswert, double goldwert) { zustand = 100; bezeichnung = bez; this.typ = typ; this.angriffswert = angriffswert; this.verteidigungswert = verteidigungswert; this.goldwert = goldwert; } public void anzeigen(Graphics g, int x, int y) { g.drawString(bezeichnung + " mit dem Angriffswert " + (int)angriffswert + ", den Verteidigungswert " + (int)verteidigungswert + " und ist " + (int)goldwert + " Gold wert.", x,y); } public void beschaedigen(int prozent) { zustand = zustand*(100-prozent)/100; angriffswert = angriffswert*(100-prozent)/100; verteidigungswert = verteidigungswert*(100-prozent)/100; goldwert = goldwert*(100-prozent)/100; } private void ursprungswerteFaktorBerechnen() { faktor = 100/zustand; } public double reparaturKosten() { ursprungswerteFaktorBerechnen(); return goldwert*faktor-goldwert; } public void reparieren() { ursprungswerteFaktorBerechnen(); angriffswert = angriffswert*faktor; verteidigungswert = verteidigungswert*faktor; goldwert = goldwert*faktor; zustand = 100; } public int gibTyp() { return typ; } public boolean istWaffe() { return (typ==1); } public boolean istSchild() { return (typ==2); } public boolean istRuestung() { return (typ==3); } } import java.awt.*; public class HELD { String name; double leben; GEGENSTAND waffe, schild, ruestung; public HELD(String name) { this.name = name; leben = 100; waffe = null; schild = null; ruestung = null; } public void anzeigen(Graphics g, int x, int y) { g.drawString("Der Held heißt " + name,x,y); g.drawString("Er hat " + (int)leben + " Lebenspunkte" ,x,y+20); g.drawString("Er hat folgende Ausrüstung: ",x,y+40); waffe.anzeigen(g,x,y+60); schild.anzeigen(g,x,y+80); ruestung.anzeigen(g,x,y+100); } public void anlegen(GEGENSTAND neu) { if (neu.istWaffe()) { waffe = neu; } else { if (neu.istSchild()) { schild = neu; } else { if (neu.istRuestung()) { ruestung = neu; } } } } public GEGENSTAND ablegen(int typ) { if (waffe.gibTyp()==typ) { return waffe; waffe = null; } else { if (schild.gibTyp()==typ) { return schild; schild = null; } else { if (ruestung.gibTyp()==typ) { return ruestung; ruestung = null; } } } } }
-
Bin jetzt doch noch allein drauf gekommen, trotzdem danke für eure Tipps. Wenn ich mich nicht wieder irre, müsste es so stimmen. import java.awt.*; public class GEGENSTAND { String bezeichnung; private double angriffswert, verteidigungswert, goldwert, zustand; public GEGENSTAND(String bez, int angriffswert, int verteidigungswert, int goldwert) { zustand = 100; bezeichnung = bez; this.typ = typ; this.angriffswert = angriffswert; this.verteidigungswert = verteidigungswert; this.goldwert = goldwert; } public void anzeigen(Graphics g, int x, int y) { g.drawString(bezeichnung + " hat den Angriffswert " + (int)angriffswert + ", den Verteidigungswert " + (int)verteidigungswert + " und ist " + (int)goldwert + " Gold wert.", x,y); } } Falls ich nochmal Probleme haben sollte, meld ich mich einfach wieder. Wers mal selbst machen will, der Link ist: BlueJ-Lehrgang von Ulrich Helmich, Adventuregame Folge 1 Gruß Dieter
-
Danke für deine Hilfe, aber was genau muss ich bei anzeigen ändern? Muss ich dann angriffswert und so auch als String einfügen? import java.awt.*; public class Gegenstand { String bezeichnung, angrwert, vertwert, gwert; private double angriffswert, verteidigungswert, goldwert, zustand; public Gegenstand (String bez, int angriffswert, int verteidigungswert, int goldwert) { zustand = 100; bezeichnung = bez; this.angriffswert = angriffswert*zustand/100; this.verteidigungswert = verteidigungswert*zustand/100; this.goldwert = goldwert*zustand/100; angrwert = "this.angriffswert"; vertwert = "this.verteidigungswert"; gwert = "this.goldwert"; } public void anzeigen(Graphics g, int x, int y) { g.drawString(bezeichnung,x,y); g.drawString(angrwert,x+10,y+10); g.drawString(vertwert,x+10,y+10); g.drawString(gwert,x+10,y+10); } }
-
meinst du so? import java.awt.*; public class GEGENSTAND { String bezeichnung; private double angriffswert, verteidigungswert, goldwert, zustand; public GEGENSTAND(int typ, String bez, int angriffswert, int verteidigungswert, int goldwert) { bezeichnung = bez; this.typ = typ; this.angriffswert = angriffswert*zustand; this.verteidigungswert = verteidigungswert*zustand; this.goldwert = goldwert*zustand; zustand = 100; } public void anzeigen(Graphics g, int x, int y) { g.drawString(bezeichnung,x,y); } } [/PHP]
-
Hi, ich mache gerade ein Onlinetutorial um ein Adventurespiel zu erstellen, steh im moment aber irgendwie total auf der Leitung und check die Aufgabe nicht. Normalerweise bin ich ziemlich gut in info, aber wäre nett, wenn ihr mir erklären würdet, wie die Aufgabe geht. Die Aufgabe ist: Stellen Sie die Klassen Spiel und Gegenstand soweit wie oben beschrieben fertig, erzeugen Sie in der BlueJ-Umgebung mehrere konkrete Gegenstände und testen Sie den Konstruktor sowie die von Ihnen programmierte Ausgabe-Methode eingehend. Hinweis: Sie müssen sowohl den Konstruktor wie auch die anzeigen()-Methode erweitern, um diese Aufgabe zu lösen. Ich habe die folgenden 2 Klassen spiel und Gegenstand schon so wie es beschrieben war fertig gestellt, check den Rest aber irgendwie nicht. import java.awt.*; import javax.swing.*; public class Spiel extends JApplet { Gegenstand schwert; public void init() { schwert = new Gegenstand("Excalibur"); } public void paint(Graphics g) { g.drawString("Spiel V 1.01", 20, 20); schwert.anzeigen(g,20,50); } } import java.awt.*; public class Gegenstand { String bezeichnung; public Gegenstand(String bez) { bezeichnung = bez; } public void anzeigen(Graphics g, int x, int y) { g.drawString(bezeichnung,x,y); } }