in meinem Informatikkurs der 10. Klasse (Realschule) ist es unsere Hausaufgabe, ein Memory Spiel in Java zu programmieren. Es wurde uns gesagt, dass wir es nur probieren sollen.
Könnt ihr mir da weiter helfen? Wir hatten bis jetzt nicht sonderlich viel an Java.
eine berechtigt ehrliche Frage, aber warum sollte man das tun?
schreibe deine eigenen Gedanken, Versuche und konkreten Probleme auf,
dann erscheint die Mühe lohnender, vielleicht schreibt dann eher jemand was
(den ersten Tag kannst du natürlich einfach abwarten auf selbstständige Hilfen )
Normalerweise beginnt eine Aufgabe damit
einen Plan zu machen. zB Analyse des
vorhandenen. Wie funzt das Memory.
Davon kan man sich dan Lösungsansätze
basteln.
Schreibe doch erstmal auf, was du dir dazu schon überlegt hast.
Du wirst ja sicher schon eine ungefähre Vorstellung davon haben, wie das Memory funktionieren soll,
wieviel Zeit ihr habt und wie dein Kenntnisstand ist.
Was habt ihr denn für Vorgaben von eurem Lehrer bekommen? Einfach nur: Programmiert mal nen Memory-Spiel?
Doch sicher ein klein wenig mehr, oder?
Niemand wird dir hier deine Hausaufgaben machen (hoffe ich zumindest), aber wir helfen gern, wenn du konkrete Fragen hast.
Ich weiß ja nicht wie weit du in Java schon bist. Und an was es den hapert: an der Oberfläche oder an dem Auswerten der Züge.
Zur Oberfläche:
Ich würde 5*5 JToggleButtons benützen. Die Bilde der Memory-karten kannst du ihnen als Icon geben. Und für's "Mischen" benützt du die Math.random() kombiniert mit den notwendigen anderen Methoden der Klasse Math
Also unsere Vorgaben sind: Memory Spiel mit 32 Karten, eine Karte hat ne größe von 100x100 Pixel.
Wie mein Wissensstand ist? Wir haben es gerade mal geschafft n Fenster zu erstellen wo "Hallo" drin steht. Also im Prinzip gaanz am Anfang. Leider.
Gibts vielleicht n Tutorial was in die Richtung geht, oder allgemein Tutorials für Java? Das was unser Lehrer erzählt ... man sitzt nur da und denkt "Baaaahnhooof" ;S
hi hatte auch das problem habe mich dann hin gesetzt und verucht mit 4 bildern ein memory zu machen (wens funktioniert mache ich natürlich mehr) also das sind meine ergebnisse nur habe ich 19 fehler und ich habe kp wie ich sie beheben soll also hier das was ich geschrieben habe:
import java.applet.*; import java.awt.*;
public class memory extends Applet {
public memory () {
int d;
Image bild[] = new Image [5];
Public void init()
{
bild[1]=getImage(getDocumentBase)(),"blau".jpg);
bild[2]=getImage(getDocumentBase)(),"rot".jpg);
bild[3]=getImage(getDocumentBase)(),"gelb".jpg);
bild[4]=getImage(getDocumentBase)(),"grün".jpg);
}
public void paint(Graphics g)
{
for (int n=1; n<4; n=n+1)
{
int z = (int) (Math.random()*4+1)();
g.drawImage(Bild[r],70, 40, this);
}
}
}
}
kann mir bitte jemand helfen ist meine erste eigene java arbeit (bezieht sich nicht auf schule oder so) würde mich freuen wenn das geht.
Ok, mal Schritt für Schritt:
1: Anmelden kostet nix - wen du ernsthaft auch in Zukunft was mit Java machen willst würde ich das tun
2: Um Java-Code bitte immer ein
Code:
...
herum machen!
3: Einrücken! Zeilenumbrüche da machen wo sinnvoll...
4: Fehler-Code bitte posten - wir können dir sie erklären - aber für uns ist es oft zuviel Arbeit das Prog. zu speichern und zu kompilieren...
Zu den Fehlern (ich bekomme nur 2):
Code:
memory.java:9: not a statement
Public void init()
memory.java:9: ';' expected
Public void init()
public schreibt man klein - darum hat er es nicht erkannt!
import java.awt.*; import java.applet.*;
public class memory extends Applet
{ int i;
int y;
int z;
Image bild[] =new Image [5];
public void init()
{
bild[1]=getImage(getDocumentBase(),"davis.jpg");
bild[2]=getImage(getDocumentBase(),"firzen.jpg");
bild[3]=getImage(getDocumentBase(),"woody.jpg");
bild[4]=getImage(getDocumentBase(),"julian.jpg");
}
public void paint(Graphics g)
{
for (int i=0; i<8; i=i+1)
{ if (i<9 ){y=i; z=1; }
else{if (i<18) {y=i-9;z=2;}
else{if (i<27) {y=i-18;z=3;}
else{ y=i-27; z=4;}}}
int r = (int)(Math.random()*4+1);
g.drawImage(bild[r], y*110, z*130, this);
}
}
}
[/list]
so habe es bisshen überarbeitet es geht jetzt aber es werden nicht 2 bilder von jedem angezeigt sondern verschieden (manch mal 0 oder sogar 3) wie mache ich jetzt das von jedem bild nur 2 sind und das alles verdeckt ist und das man draufklicken muss um das zu sehen?
for (int i=0; i<8; i=i+1)
{ if (i<9 ){y=i; z=1; }
else{if (i<18) {y=i-9;z=2;}
else{if (i<27) {y=i-18;z=3;}
else{ y=i-27; z=4;}}}
Darf ich fragen was das machen soll?
Wie soll i jemals größer als 7 werden, wenn du 8 als Grenze in der Schleife eingetragen hast?
So schaut das ganze schon mal schöner aus:
Code:
for ( int i=0; i<9; i++)
{
for ( int iy=0; iy<3; iy++)
{
for (int iy=0; iy<3; iy++)
{
int r = (int)(Math.random()*4+1);
g.drawImage(bild[r], iy*100, ix*100, this);
}
}
}
(ist nicht getestet).
Die einfachste (aber nicht eleganteste) Möglichkeit um aus zu schließen das ein Bild. mehr als 2 mal verwendet ist ein zweites byte/int-Array denen du Werte zwischen 0-2 zuordnest, je nachdem wie oft sie schon verwendet wurden.
Zum drauf klicken: JToggleButton (->API)
Probier einfach mal rum...
Ich mus jetzt lernen (blöde Engl.-Prüfung morgen)
for (int iy=0; iy<3; iy++)
^
memory.java:24:39: cannot find symbol
symbol : variable ix
location: class memory
g.drawImage(bild[r], iy*100, ix*100, this);
^
2 errors
das ist der neue code
Code:
import java.awt.*; import java.applet.*;
public class memory extends Applet
{ int i;
int y;
int z;
Image bild[] =new Image [5];
public void init()
{
bild[1]=getImage(getDocumentBase(),"davis.jpg");
bild[2]=getImage(getDocumentBase(),"firzen.jpg");
bild[3]=getImage(getDocumentBase(),"woody.jpg");
bild[4]=getImage(getDocumentBase(),"julian.jpg");
}
public void paint(Graphics g)
{
for ( int i=0; i<9; i++)
{
for ( int iy=0; iy<3; iy++)
{
for (int iy=0; iy<3; iy++)
{
int r = (int)(Math.random()*4+1);
g.drawImage(bild[r], iy*100, ix*100, this);
}
}
}
}
}
Eine der beiden Schleifen sollte als Zählvariable "ix" haben. Im moment haben beide "iy".
Bei
g.drawImage(bild[r], iy*100, ix*100, this);
sollte man die beiden dann aber umgekehrt angeben: Üblicherweise (und so auch hier) kommt bei solchen Methoden ERST x und DANN y.