WM 2006 - The Memory Game :P läuft nicht.

Status
Nicht offen für weitere Antworten.

PELLE

Bekanntes Mitglied
Hallo,

seit Tagen versuche ich mein Fussball Memory Game zum laufen zu bringen, ohne applet bekomme ichs zum laufen, aber nicht mit Applet (Die Studien-Arbeit soll aber mit applets sein...) :roll:

Datei: MemoryCell.java

Fehlermeldung:
---------------------------------------------------------------------------------------------------

MemoryCell.java:31: cannot find symbol
symbol : method setSize(int,int)
location: class MemoryCell
setSize(80, 80);
^
MemoryCell.java:59: cannot find symbol
symbol : method repaint()
location: class MemoryCell
repaint();
^
MemoryCell.java:70: cannot find symbol
symbol : method repaint()
location: class MemoryCell
repaint();
^
MemoryCell.java:81: cannot find symbol
symbol : method repaint()
location: class MemoryCell
repaint();
^
MemoryCell.java:91: cannot find symbol
symbol : method paintComponent(java.awt.Graphics)
location: class java.lang.Object
super.paintComponent(g);
^
MemoryCell.java:96: cannot find symbol
symbol : method getSize()
location: class MemoryCell
g.fillRect(0, 0, getSize().width, getSize().height);
^
MemoryCell.java:96: cannot find symbol
symbol : method getSize()
location: class MemoryCell
g.fillRect(0, 0, getSize().width, getSize().height);
^
MemoryCell.java:143: cannot find symbol
symbol : method drawImage(java.awt.Image,int,int,int,int,MemoryCell)
location: class java.awt.Graphics
g.drawImage(image, 15, 15, 50, 50, this);
^
MemoryCell.java:147: cannot find symbol
symbol : method paintComponent(java.awt.Graphics)
location: class java.lang.Object
super.paintComponent(g);
^
MemoryCell.java:153: cannot find symbol
symbol : method getSize()
location: class MemoryCell
g.drawRect(0, 0, getSize().width - 1, getSize().height - 1);
^
MemoryCell.java:153: cannot find symbol
symbol : method getSize()
location: class MemoryCell
g.drawRect(0, 0, getSize().width - 1, getSize().height - 1);
^
MemoryCell.java:163: cannot find symbol
symbol : method getSize()
location: class MemoryCell
cp.x = (getSize().width - w) / 2;
^
MemoryCell.java:164: cannot find symbol
symbol : method getSize()
location: class MemoryCell
cp.y = (getSize().height + h) / 2 - fm.getDescent();
^
MemoryCell.java:164: operator + cannot be applied to getSize.height,int
cp.y = (getSize().height + h) / 2 - fm.getDescent();
^
MemoryCell.java:164: operator / cannot be applied to <nulltype>,int
cp.y = (getSize().height + h) / 2 - fm.getDescent();
^
15 errors


---------------------------------------------------------------------------------------------------

Source Code: MemoryCell.java

---------------------------------------------------------------------------------------------------
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Random;
public class MemoryCell
{

     public final static int NONE = -1;
     public final static int RECTANGLE = 0;
     public final static int OVAL = 1;
     public final static int ARC = 2;
     public final static int TRIANGLE = 3;
     public final static int SQUIGGLE = 4;
     public final static int LINES = 5;
     public final static int JAVA = 6;
     public final static int IMAGE = 7;
     protected int symbol;
     protected static Image image;
     protected boolean matched;
     protected boolean hidden;
     protected boolean focused;

     public MemoryCell(int shape)
     {
          super();
          setSymbol(shape);
          matched = false;
          hidden = true;
          focused = false;
          image = Toolkit.getDefaultToolkit().getImage("pokal.jpg");
          setSize(80, 80);

     }

     public void setSymbol(int shape)
     {
         if (shape >= -1 && shape <= 7)
         {
            symbol = shape;
         }
         else
         {
           symbol = NONE;
         }
     }

     public int getSymbol()
     {
         return symbol;
     }
     public boolean matches(MemoryCell otherMemoryCell)
     {
         return symbol == otherMemoryCell.symbol;
     }

     public void setMatched(boolean m)
     {
         matched = m;
         repaint();
     }

     public boolean getMatched()
     {
         return matched;
     }

     public void setHidden(boolean h)
     {
         hidden = h;
         repaint();
     }

     public boolean getHidden()
     {
         return hidden;
     }

     public void setFocused(boolean f)
     {
         focused = f;
         repaint();
     }

     public boolean getFocused()
     {
         return focused;
     }

     public void paintComponent(Graphics g)
     {
         super.paintComponent(g);

         if (hidden)
         {
           g.setColor(Color.darkGray);
           g.fillRect(0, 0, getSize().width, getSize().height);
           g.setColor(Color.lightGray);
           g.setFont(new Font("Timesroman", Font.ITALIC, 36));
           Point p = centerStringPoint("?", g.getFontMetrics());
           g.drawString("?", p.x, p.y);
         }

         else switch (symbol)
         {
            case RECTANGLE:
            g.fillRect(15, 15, 50, 50);
            break;

            case OVAL:
            g.fillOval(15, 15, 50, 50);
            break;

            case ARC:
            g.fillArc(15, 15, 50, 50, 45, 270);
            break;

            case TRIANGLE:
            g.fillPolygon(new int[] {40, 15, 65},
            new int[] {15, 65, 65}, 3);
            break;

            case SQUIGGLE:
            g.drawPolyline(new int[] {15, 25, 35, 45, 55, 65},
            new int[] {15, 65, 15, 65, 15, 65}, 6);
            break;

            case LINES:
            g.drawLine(15, 15, 65, 15);
            g.drawLine(15, 25, 65, 25);
            g.drawLine(15, 35, 65, 35);
            g.drawLine(15, 45, 65, 45);
            g.drawLine(15, 55, 65, 55);
            g.drawLine(15, 65, 65, 65);
            break;

            case JAVA:
            g.setFont(new Font("Timesroman", Font.BOLD, 24));
            Point p = centerStringPoint("Java", g.getFontMetrics());
            g.drawString("Java", p.x, p.y);
            break;

            case IMAGE:
            g.drawImage(image, 15, 15, 50, 50, this);
            break;

            default:
            super.paintComponent(g);
         }
         if (focused)
         {
            if (matched) g.setColor(Color.green);
            else g.setColor(Color.red);
            g.drawRect(0, 0, getSize().width - 1, getSize().height - 1);
         }

     }

     private Point centerStringPoint(String s, FontMetrics fm)
     {
         Point cp = new Point();
         int w = fm.stringWidth(s);
         int h = fm.getHeight() - fm.getLeading();
         cp.x = (getSize().width - w) / 2;
         cp.y = (getSize().height + h) / 2 - fm.getDescent();
         return cp;
     }

}
---------------------------------------------------------------------------------------------------

Datei: Memory.java

Fehlermeldung:

---------------------------------------------------------------------------------------------------

Compiliere H:\Java\WIchtige Java Projekte\Praktikumsarbeit\Memory.java mit Java-Compiler
Memory.java:56: illegal start of expression
protected MemoryCell[] cells;
^
Memory.java:58: illegal start of expression
protected MemoryCell ersteZelle, zweiteZelle;
^
Memory.java:60: illegal start of expression
protected int nMismatched;
^
Memory.java:63: illegal start of expression
public void mousePressed(MouseEvent e)
^
5 errors


---------------------------------------------------------------------------------------------------

Source Code: Memory.java

---------------------------------------------------------------------------------------------------

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Random;

public class Memory extends JApplet
{
    JLabel memoryGameLB = new JLabel("<html>[b]MEMORY WM GAME 2006 - Mir send die die gwenne wellad... :-)[/b]</html>");
    JLabel fehlschlagLB = new JLabel("Anzahl der Fehlschläge: 0");
    protected static Image image;
    protected Button neustart = new Button("neustart");
    
    public void init ()
    {
       add(new MyPanelNorth(), BorderLayout.NORTH);
       add(new MyPanelCenter(), BorderLayout.CENTER);
       add(new MyPanelSouth(), BorderLayout.SOUTH);
       neustart.addActionListener(new ActionListener());
       new Memory();
       //neustart ersteZelle and zweiteZelle & mismatches
       randomize();
       //pack();
       //setResizable(false);
       //setVisible(true);
       
    }

    class MyPanelNorth extends JPanel
    {
        public MyPanelNorth()
        {
           setBackground(Color.black);
           memoryGameLB.setForeground(Color.white);
           add(memoryGameLB);
        }
    }
  
    class MyPanelSouth extends JPanel
    {
        public MyPanelSouth()
        {
          setBackground(Color.red);
          //addMouseListener(new MyMouseEvent());
          add(fehlschlagLB);
          fehlschlagLB.setForeground(Color.white);
        }
    }
    
    class MyPanelCenter extends JPanel  // innere Klasse der JApplet-Klasse
   {

       public MyPanelCenter()//(int shape)  //Konstruktor
       {
           super("Memory Game");

           protected MemoryCell[] cells;
           //ersteZelle und zweiteZelle
           protected MemoryCell ersteZelle, zweiteZelle;
           protected int nMismatched;
           MouseListener ml = new MouseAdapter();

           public void mousePressed(MouseEvent e)
           {
               MemoryCell clickedCell = (MemoryCell)e.getSource();

               public void actionPerformed(ActionEvent e)
               {
                   randomize();
               }

               if (zweiteZelle != null)
               {

                   ersteZelle.setFocused(false);
                   zweiteZelle.setFocused(false);

                   if (!ersteZelle.matches(zweiteZelle))
                   {
                      ersteZelle.setHidden(true);
                      zweiteZelle.setHidden(true);
                      nMismatched++;
                      fehlschlagLB.setText("Anzahl der Fehlversche: "+ nMismatched);
                   }

                   ersteZelle = zweiteZelle = null;

               }

               if (clickedCell.getHidden())
               {
                   clickedCell.setFocused(true);
                   clickedCell.setHidden(false);

                   if(ersteZelle == null)
                   {
                       ersteZelle = clickedCell;
                   }
                   else
                   {
                       zweiteZelle = clickedCell;

                       if (ersteZelle.matches(zweiteZelle))
                       {
                          ersteZelle.setMatched(true);
                          zweiteZelle.setMatched(true);
                       }
                   }
               }
           }   // Ende Abarbeitung des Codes wenn die Maus gedrückt wurde

           ersteZelle  = zweiteZelle = null;


          setLayout(new GridLayout(4, 0, 10, 10));
          cells = new MemoryCell[16];

           for (int c=0; c < cells.length; c++)
           {
               cells[c] = new MemoryCell(MemoryCell.NONE);
               cells[c].addMouseListener(ml);
               add(cells[c]);
           }


       };

       protected void randomize()
       {
            //für alle möglichen Symbol Paare
            int[] symbols = new int[cells.length];
            int pos;
            Random rand = new Random();

            //reinitialize all cells
            for (int c=0; c < cells.length; c++)
            {
                cells[c].setMatched(false);
                cells[c].setHidden(true);
                cells[c].setFocused(false);
                cells[c].setSymbol(MemoryCell.NONE);
                symbols[c] = c % 8;
            }

            for (int s=0; s < symbols.length; s++)
            {
                do
                {
                    pos = rand.nextInt(cells.length);
                }
                while (cells[pos].getSymbol() != MemoryCell.NONE);

                cells[pos].setSymbol(symbols[s]);
            }
            ersteZelle = null;
            zweiteZelle = null;
            if (isVisible())
            repaint();
            nMismatched = 0;
            fehlschlagLB.setText("Number of Mismatches: 0");

       }

   }

}

------------------------------------------------------------------------------------

Frage: Warum sind repaint, getsize,illegal Start of expression etc... in meiner Fehlerlog, würde sehr über rasche Hilfe freuen, danke!!!
 

SebiB90

Top Contributor
1. du kannst nicht innerhalb einer methode nicht variablen mit protected oder irgendeiner anderen sichtbarkeit deklarieren, und methode kannst du da gar nicht deklarieren
2. sollte vllt MemoryCell von JPanel erben?
 

PELLE

Bekanntes Mitglied
ok habe geändert:

MemoryCell.java: Kompiliert jetzt 100 % richtig!

public class MemoryCell extends JPanel //wie du gesagt hast von JPanel geerbt!

Memory.java:

Die Sichtbarkeitsvariablen habe ich gelöscht und welche Methode meinst du überhaupt??? und wo dann deklarieren?

MemoryCell[] cells; //Array von MemoryCell Klasse
MemoryCell ersteZelle, zweiteZelle;
int nMismatched; //Zähler für Fehlversuche
MouseListener ml = new MouseAdapter();
 

SebiB90

Top Contributor
mousePressed nicht in dem konstruktor außer du willst noch ne weitere innere klasse
dann muss nach new MouseAdapter() kein ; sondern { und nach mousePressed() muss dann };
aber die actionPerformed methode in mousePressed was soll die da???
 

PELLE

Bekanntes Mitglied
stimmt shit die gehört nicht in den konstruktor??? seh ich jetzt gerade, weil ich so viele klammern habe und verschachtelungen seh ich den Baum ^^ nicht mehr...
 

PELLE

Bekanntes Mitglied
Code:
  class MyPanelCenter extends JPanel  // innere Klasse der JApplet-Klasse
   {

       public MyPanelCenter()//(int shape)  //Konstruktor
       {
           super("Memory Game");
           MemoryCell[] cells;   //Array von MemoryCell Klasse
           MemoryCell ersteZelle, zweiteZelle;
           int nMismatched; //Zähler für Fehlversuche
           MouseListener ml = new MouseAdapter();
           ersteZelle  = zweiteZelle = null;
           setLayout(new GridLayout(4, 0, 10, 10));
           cells = new MemoryCell[16];
           for (int c=0; c < cells.length; c++)
           {
               cells[c] = new MemoryCell(MemoryCell.NONE);
               cells[c].addMouseListener(ml);
               add(cells[c]);
           }

       }

       public void mousePressed(MouseEvent e)
       {
           MemoryCell clickedCell = (MemoryCell)e.getSource();

           public void actionPerformed(ActionEvent e)
           {
               randomize();
           }

           if (zweiteZelle != null)
           {

               ersteZelle.setFocused(false);
               zweiteZelle.setFocused(false);

               if (!ersteZelle.matches(zweiteZelle))
               {
                  ersteZelle.setHidden(true);
                  zweiteZelle.setHidden(true);
                  nMismatched++;
                  fehlschlagLB.setText("Anzahl der Fehlversuche: "+ nMismatched);
               }

               ersteZelle = zweiteZelle = null;

           }

           if (clickedCell.getHidden())
           {
               clickedCell.setFocused(true);
               clickedCell.setHidden(false);

               if(ersteZelle == null)
               {
                   ersteZelle = clickedCell;
               }
               else
               {
                   zweiteZelle = clickedCell;

                   if (ersteZelle.matches(zweiteZelle))
                   {
                      ersteZelle.setMatched(true);
                      zweiteZelle.setMatched(true);
                   }
               }
           }
       }

       protected void randomize()
       {
            //für alle möglichen Symbol Paare
            int[] symbols = new int[cells.length];
            int pos;
            Random rand = new Random();

            //reinitialize all cells
            for (int c=0; c < cells.length; c++)
            {
                cells[c].setMatched(false);
                cells[c].setHidden(true);
                cells[c].setFocused(false);
                cells[c].setSymbol(MemoryCell.NONE);
                symbols[c] = c % 8;
            }

            for (int s=0; s < symbols.length; s++)
            {
                do
                {
                    pos = rand.nextInt(cells.length);
                }
                while (cells[pos].getSymbol() != MemoryCell.NONE);

                cells[pos].setSymbol(symbols[s]);
            }
            ersteZelle = null;
            zweiteZelle = null;
            if (isVisible())
            repaint();
            nMismatched = 0;
            fehlschlagLB.setText("Number of Mismatches: 0");

       }

   }

}

Error:

Memory.java:75: illegal start of expression
public void actionPerformed(ActionEvent e)
^
Memory.java:118: ';' expected
}
^
------------------

Na die ActionPerform Methode sagt was passieren soll wenn die Mousetaste gepresst wird... oder wie meinst das?

Zeile 118 ist hier im forum zeile 70 wo die klammer ist

ok hast wieder recht die action perform brauche ich hier ja gar net bzw. die methode randomize rufe ich ja schon im kkonstruktor auf und das reicht ja auch um das spielfeld zu initialisieren mit zufallswert für die Zellen!

Ähm, wieso gehört an zeile 118 ein ";" zeichen??? ich setz das hin dann ist die fehlermeldung weg???
 

PELLE

Bekanntes Mitglied
OK, nur noch die Memory.java ist fehlerhaft, die Memory.class compiliert zumindest richtig!

Datei: Memory.java

-----------------------------------------------------------------

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Random;

public class Memory extends JApplet
{
    JLabel memoryGameLB = new JLabel("<html>[b]MEMORY WM GAME 2006 - Mir send die die gwenne wellad... :-)[/b]</html>");
    JLabel fehlschlagLB = new JLabel("Anzahl der Fehlschläge: 0");
    protected static Image image;
    protected Button neustart = new Button("neustart");
  
    public void init ()
    {
       add(new MyPanelNorth(), BorderLayout.NORTH);
       add(new MyPanelCenter(), BorderLayout.CENTER);
       add(new MyPanelSouth(), BorderLayout.SOUTH);

       new Memory();
       //neustart ersteZelle and zweiteZelle & mismatches
       randomize();
       //pack();
       //setResizable(false);
       //setVisible(true);

    }

    class MyPanelNorth extends JPanel
    {
        public MyPanelNorth()
        {
           setBackground(Color.black);
           memoryGameLB.setForeground(Color.white);
           add(memoryGameLB);
        }
    }
  
    class MyPanelSouth extends JPanel
    {
        public MyPanelSouth()
        {
          setBackground(Color.red);
          neustart.addActionListener(new MeinButtonListener());
          add(fehlschlagLB);
          fehlschlagLB.setForeground(Color.white);
        }

        public class MeinButtonListener implements ActionListener
        {
            public void actionPerformed(ActionEvent e)
            {
               // Abragen: if(e.getSource().equals(buttonSettings))
               // oder Anweisungen
            }

        }

    }
    
    class MyPanelCenter extends JPanel  // innere Klasse der JApplet-Klasse
    {

         public MyPanelCenter()//(int shape)  //Konstruktor
         {
             super("Memory Game");
             MemoryCell[] cells;   //Array von MemoryCell Klasse
             MemoryCell ersteZelle, zweiteZelle;
             int nMismatched; //Zähler für Fehlversuche
             MouseListener ML = new MouseAdapter();
             ersteZelle  = zweiteZelle = null;
             setLayout(new GridLayout(4, 0, 10, 10));
             cells = new MemoryCell[16];
             for (int c=0; c < cells.length; c++)
             {
                 cells[c] = new MemoryCell(MemoryCell.NONE);
                 cells[c].addMouseListener(ML);
                 add(cells[c]);
             }

         }

         public void mousePressed(MouseEvent e)
         {
             MemoryCell clickedCell = (MemoryCell)e.getSource();

             if (zweiteZelle != null)
             {

                 ersteZelle.setFocused(false);
                 zweiteZelle.setFocused(false);

                 if (!ersteZelle.matches(zweiteZelle))
                 {
                    ersteZelle.setHidden(true);
                    zweiteZelle.setHidden(true);
                    nMismatched++;
                    fehlschlagLB.setText("Anzahl der Fehlversuche: "+ nMismatched);
                 }

                 ersteZelle = zweiteZelle = null;

             }

             if (clickedCell.getHidden())
             {
                 clickedCell.setFocused(true);
                 clickedCell.setHidden(false);

                 if(ersteZelle == null)
                 {
                     ersteZelle = clickedCell;
                 }
                 else
                 {
                     zweiteZelle = clickedCell;

                     if (ersteZelle.matches(zweiteZelle))
                     {
                        ersteZelle.setMatched(true);
                        zweiteZelle.setMatched(true);
                     }
                 }
             }


         } // Ende Mouse Pressed


    }  

    protected void randomize()
    {
         //für alle möglichen Symbol Paare
         int[] symbols = new int[cells.length];
         int pos;
         Random rand = new Random();

         //reinitialize all cells
         for (int c=0; c < cells.length; c++)
         {
             cells[c].setMatched(false);
             cells[c].setHidden(true);
             cells[c].setFocused(false);
             cells[c].setSymbol(MemoryCell.NONE);
             symbols[c] = c % 8;
         }

         for (int s=0; s < symbols.length; s++)
         {
             do
             {
                 pos = rand.nextInt(cells.length);
             }
             while (cells[pos].getSymbol() != MemoryCell.NONE);

             cells[pos].setSymbol(symbols[s]);
         }
         ersteZelle = null;
         zweiteZelle = null;
         if (isVisible())
         repaint();
         nMismatched = 0;
         fehlschlagLB.setText("Number of Mismatches: 0");

    }   // Ende Random funktion

}

---------------------------------------------------------------------

Errors:

----------------------------------------------------------------------


Compiliere H:\Java\WIchtige Java Projekte\Praktikumsarbeit\Memory.java mit Java-Compiler
Memory.java:65: cannot find symbol
symbol : constructor JPanel(java.lang.String)
location: class javax.swing.JPanel
super("Memory Game");
^
Memory.java:69: java.awt.event.MouseAdapter is abstract; cannot be instantiated
MouseListener ML = new MouseAdapter();
^
Memory.java:86: cannot find symbol
symbol : variable zweiteZelle
location: class Memory.MyPanelCenter
if (zweiteZelle != null)
^
Memory.java:89: cannot find symbol
symbol : variable ersteZelle
location: class Memory.MyPanelCenter
ersteZelle.setFocused(false);
^
Memory.java:90: cannot find symbol
symbol : variable zweiteZelle
location: class Memory.MyPanelCenter
zweiteZelle.setFocused(false);
^
Memory.java:92: cannot find symbol
symbol : variable zweiteZelle
location: class Memory.MyPanelCenter
if (!ersteZelle.matches(zweiteZelle))
^
Memory.java:92: cannot find symbol
symbol : variable ersteZelle
location: class Memory.MyPanelCenter
if (!ersteZelle.matches(zweiteZelle))
^
Memory.java:94: cannot find symbol
symbol : variable ersteZelle
location: class Memory.MyPanelCenter
ersteZelle.setHidden(true);
^
Memory.java:95: cannot find symbol
symbol : variable zweiteZelle
location: class Memory.MyPanelCenter
zweiteZelle.setHidden(true);
^
Memory.java:96: cannot find symbol
symbol : variable nMismatched
location: class Memory.MyPanelCenter
nMismatched++;
^
Memory.java:97: cannot find symbol
symbol : variable nMismatched
location: class Memory.MyPanelCenter
fehlschlagLB.setText("Anzahl der Fehlversuche: "+ nMismatched);
^
Memory.java:100: cannot find symbol
symbol : variable ersteZelle
location: class Memory.MyPanelCenter
ersteZelle = zweiteZelle = null;
^
Memory.java:100: cannot find symbol
symbol : variable zweiteZelle
location: class Memory.MyPanelCenter
ersteZelle = zweiteZelle = null;
^
Memory.java:109: cannot find symbol
symbol : variable ersteZelle
location: class Memory.MyPanelCenter
if(ersteZelle == null)
^
Memory.java:111: cannot find symbol
symbol : variable ersteZelle
location: class Memory.MyPanelCenter
ersteZelle = clickedCell;
^
Memory.java:115: cannot find symbol
symbol : variable zweiteZelle
location: class Memory.MyPanelCenter
zweiteZelle = clickedCell;
^
Memory.java:117: cannot find symbol
symbol : variable zweiteZelle
location: class Memory.MyPanelCenter
if (ersteZelle.matches(zweiteZelle))
^
Memory.java:117: cannot find symbol
symbol : variable ersteZelle
location: class Memory.MyPanelCenter
if (ersteZelle.matches(zweiteZelle))
^
Memory.java:119: cannot find symbol
symbol : variable ersteZelle
location: class Memory.MyPanelCenter
ersteZelle.setMatched(true);
^
Memory.java:120: cannot find symbol
symbol : variable zweiteZelle
location: class Memory.MyPanelCenter
zweiteZelle.setMatched(true);
^
Memory.java:134: cannot find symbol
symbol : variable cells
location: class Memory
int[] symbols = new int[cells.length];
^
Memory.java:139: cannot find symbol
symbol : variable cells
location: class Memory
for (int c=0; c < cells.length; c++)
^
Memory.java:141: cannot find symbol
symbol : variable cells
location: class Memory
cells[c].setMatched(false);
^
Memory.java:142: cannot find symbol
symbol : variable cells
location: class Memory
cells[c].setHidden(true);
^
Memory.java:143: cannot find symbol
symbol : variable cells
location: class Memory
cells[c].setFocused(false);
^
Memory.java:144: cannot find symbol
symbol : variable cells
location: class Memory
cells[c].setSymbol(MemoryCell.NONE);
^
Memory.java:152: cannot find symbol
symbol : variable cells
location: class Memory
pos = rand.nextInt(cells.length);
^
Memory.java:154: cannot find symbol
symbol : variable cells
location: class Memory
while (cells[pos].getSymbol() != MemoryCell.NONE);
^
Memory.java:156: cannot find symbol
symbol : variable cells
location: class Memory
cells[pos].setSymbol(symbols);
^
Memory.java:158: cannot find symbol
symbol : variable ersteZelle
location: class Memory
ersteZelle = null;
^
Memory.java:159: cannot find symbol
symbol : variable zweiteZelle
location: class Memory
zweiteZelle = null;
^
Memory.java:162: cannot find symbol
symbol : variable nMismatched
location: class Memory
nMismatched = 0;
^
32 errors
------------------------------------------------------------------------------------

Es geht drum dass bei mousepress auf eines der 16 memory karten der Code in der MousePressed Methode ausgeführt wird!
 
T

tüdelü

Gast
Code:
class MyPanelCenter extends JPanel  implements MouseListener// innere Klasse der JApplet-Klasse
    {

         public MyPanelCenter()//(int shape)  //Konstruktor
         {
             MemoryCell[] cells;   //Array von MemoryCell Klasse
             MemoryCell ersteZelle, zweiteZelle;
             int nMismatched; //Zähler für Fehlversuche
             MouseListener ML = new MouseAdapter();
             ersteZelle  = zweiteZelle = null;
             setLayout(new GridLayout(4, 0, 10, 10));
             cells = new MemoryCell[16];
             for (int c=0; c < cells.length; c++)
             {
                 cells[c] = new MemoryCell(MemoryCell.NONE);
                 cells[c].addMouseListener(ML);
                 add(cells[c]);
             }

         }

         public void mousePressed(MouseEvent e)
         {
             MemoryCell clickedCell = (MemoryCell)e.getSource();

             if (zweiteZelle != null)
             {

                 ersteZelle.setFocused(false);
                 zweiteZelle.setFocused(false);

                 if (!ersteZelle.matches(zweiteZelle))
                 {
                    ersteZelle.setHidden(true);
                    zweiteZelle.setHidden(true);
                    nMismatched++;
                    fehlschlagLB.setText("Anzahl der Fehlversuche: "+ nMismatched);
                 }

                 ersteZelle = zweiteZelle = null;

             }

             if (clickedCell.getHidden())
             {
                 clickedCell.setFocused(true);
                 clickedCell.setHidden(false);

                 if(ersteZelle == null)
                 {
                     ersteZelle = clickedCell;
                 }
                 else
                 {
                     zweiteZelle = clickedCell;

                     if (ersteZelle.matches(zweiteZelle))
                     {
                        ersteZelle.setMatched(true);
                        zweiteZelle.setMatched(true);
                     }
                 }
             }


         } // Ende Mouse Pressed

         public void mouseClicked(MouseEvent e)
         {
         }
         public void mouseReleased(MouseEvent e)
         {
         }
         public void mouseEntered(MouseEvent e)
         {
         }
         public void mouseExited(MouseEvent e)
         {
         }
    }
 

PELLE

Bekanntes Mitglied
Code:
class MyPanelCenter extends JPanel implements MouseListener // innere Klasse der JApplet-Klasse
    {

         public MyPanelCenter()//(int shape)  //Konstruktor
         {
             super();
             MemoryCell[] cells;   //Array von MemoryCell Klasse
             MemoryCell ersteZelle, zweiteZelle;
             int nMismatched; //Zähler für Fehlversuche
             ersteZelle  = zweiteZelle = null;
             setLayout(new GridLayout(4, 0, 10, 10));
             cells = new MemoryCell[16];
             for (int c=0; c < cells.length; c++)
             {
                 cells[c] = new MemoryCell(MemoryCell.NONE);
                 cells[c].addMouseListener(this);
                 add(cells[c]);
             }

         }



         public void mousePressed(MouseEvent e)
         {

            MemoryCell clickedCell = (MemoryCell)e.getSource();

            if (zweiteZelle != null)
            {

                ersteZelle.setFocused(false);
                zweiteZelle.setFocused(false);

                if (!ersteZelle.matches(zweiteZelle))
                {
                   ersteZelle.setHidden(true);
                   zweiteZelle.setHidden(true);
                   nMismatched++;
                   fehlschlagLB.setText("Anzahl der Fehlversuche: "+ nMismatched);
                }

                ersteZelle = zweiteZelle = null;

            }

            if (clickedCell.getHidden())
            {
                clickedCell.setFocused(true);
                clickedCell.setHidden(false);

                if(ersteZelle == null)
                {
                    ersteZelle = clickedCell;
                }
                else
                {
                    zweiteZelle = clickedCell;

                    if (ersteZelle.matches(zweiteZelle))
                    {
                       ersteZelle.setMatched(true);
                       zweiteZelle.setMatched(true);
                    }
                }
            }
         }



         public void mouseClicked(MouseEvent e)
         {
         }
         public void mouseReleased(MouseEvent e)
         {
         }
         public void mouseEntered(MouseEvent e)
         {
         }
         public void mouseExited(MouseEvent e)
         {
         }

    }

    protected void randomize()
    {
         //für alle möglichen Symbol Paare
         int[] symbols = new int[cells.length];
         int pos;
         Random rand = new Random();

         //reinitialize all cells
         for (int c=0; c < cells.length; c++)
         {
             cells[c].setMatched(false);
             cells[c].setHidden(true);
             cells[c].setFocused(false);
             cells[c].setSymbol(MemoryCell.NONE);
             symbols[c] = c % 8;
         }

         for (int s=0; s < symbols.length; s++)
         {
             do
             {
                 pos = rand.nextInt(cells.length);
             }
             while (cells[pos].getSymbol() != MemoryCell.NONE);

             cells[pos].setSymbol(symbols[s]);
         }
         ersteZelle = null;
         zweiteZelle = null;
         if (isVisible())
         repaint();
         nMismatched = 0;
         fehlschlagLB.setText("Number of Mismatches: 0");

    }   // Ende Random funktion

}


--------------------------------------------------------------------
Fehler:
--------------------------------------------------------------------

Memory.java:88: cannot find symbol
symbol : variable zweiteZelle
location: class Memory.MyPanelCenter
if (zweiteZelle != null)
^
Memory.java:91: cannot find symbol
symbol : variable ersteZelle
location: class Memory.MyPanelCenter
ersteZelle.setFocused(false);
^
Memory.java:92: cannot find symbol
symbol : variable zweiteZelle
location: class Memory.MyPanelCenter
zweiteZelle.setFocused(false);
^
Memory.java:94: cannot find symbol
symbol : variable zweiteZelle
location: class Memory.MyPanelCenter
if (!ersteZelle.matches(zweiteZelle))
^
Memory.java:94: cannot find symbol
symbol : variable ersteZelle
location: class Memory.MyPanelCenter
if (!ersteZelle.matches(zweiteZelle))
^
Memory.java:96: cannot find symbol
symbol : variable ersteZelle
location: class Memory.MyPanelCenter
ersteZelle.setHidden(true);
^
Memory.java:97: cannot find symbol
symbol : variable zweiteZelle
location: class Memory.MyPanelCenter
zweiteZelle.setHidden(true);
^
Memory.java:98: cannot find symbol
symbol : variable nMismatched
location: class Memory.MyPanelCenter
nMismatched++;
^
Memory.java:99: cannot find symbol
symbol : variable nMismatched
location: class Memory.MyPanelCenter
fehlschlagLB.setText("Anzahl der Fehlversuche: "+ nMismatched);
^
Memory.java:102: cannot find symbol
symbol : variable ersteZelle
location: class Memory.MyPanelCenter
ersteZelle = zweiteZelle = null;
^
Memory.java:102: cannot find symbol
symbol : variable zweiteZelle
location: class Memory.MyPanelCenter
ersteZelle = zweiteZelle = null;
^
Memory.java:111: cannot find symbol
symbol : variable ersteZelle
location: class Memory.MyPanelCenter
if(ersteZelle == null)
^
Memory.java:113: cannot find symbol
symbol : variable ersteZelle
location: class Memory.MyPanelCenter
ersteZelle = clickedCell;
^
Memory.java:117: cannot find symbol
symbol : variable zweiteZelle
location: class Memory.MyPanelCenter
zweiteZelle = clickedCell;
^
Memory.java:119: cannot find symbol
symbol : variable zweiteZelle
location: class Memory.MyPanelCenter
if (ersteZelle.matches(zweiteZelle))
^
Memory.java:119: cannot find symbol
symbol : variable ersteZelle
location: class Memory.MyPanelCenter
if (ersteZelle.matches(zweiteZelle))
^
Memory.java:121: cannot find symbol
symbol : variable ersteZelle
location: class Memory.MyPanelCenter
ersteZelle.setMatched(true);
^
Memory.java:122: cannot find symbol
symbol : variable zweiteZelle
location: class Memory.MyPanelCenter
zweiteZelle.setMatched(true);
^
Memory.java:148: cannot find symbol
symbol : variable cells
location: class Memory
int[] symbols = new int[cells.length];
^
Memory.java:153: cannot find symbol
symbol : variable cells
location: class Memory
for (int c=0; c < cells.length; c++)
^
Memory.java:155: cannot find symbol
symbol : variable cells
location: class Memory
cells[c].setMatched(false);
^
Memory.java:156: cannot find symbol
symbol : variable cells
location: class Memory
cells[c].setHidden(true);
^
Memory.java:157: cannot find symbol
symbol : variable cells
location: class Memory
cells[c].setFocused(false);
^
Memory.java:158: cannot find symbol
symbol : variable cells
location: class Memory
cells[c].setSymbol(MemoryCell.NONE);
^
Memory.java:166: cannot find symbol
symbol : variable cells
location: class Memory
pos = rand.nextInt(cells.length);
^
Memory.java:168: cannot find symbol
symbol : variable cells
location: class Memory
while (cells[pos].getSymbol() != MemoryCell.NONE);
^
Memory.java:170: cannot find symbol
symbol : variable cells
location: class Memory
cells[pos].setSymbol(symbols);
^
Memory.java:172: cannot find symbol
symbol : variable ersteZelle
location: class Memory
ersteZelle = null;
^
Memory.java:173: cannot find symbol
symbol : variable zweiteZelle
location: class Memory
zweiteZelle = null;
^
Memory.java:176: cannot find symbol
symbol : variable nMismatched
location: class Memory
nMismatched = 0;
^
30 errors
 

8ull23y3

Bekanntes Mitglied
Code:
class MyPanelCenter extends JPanel implements MouseListener // innere Klasse der JApplet-Klasse
    {

         private MemoryCell[] cells;   //Array von MemoryCell Klasse
         private MemoryCell ersteZelle, zweiteZelle;
         private int nMismatched; //Zähler für Fehlversuche
         public MyPanelCenter()//(int shape)  //Konstruktor
         {
             super(new GridLayout(4, 0, 10, 10));
             ersteZelle  = zweiteZelle = null;
             cells = new MemoryCell[16];
             for (int c=0; c < cells.length; c++)
             {
                 cells[c] = new MemoryCell(MemoryCell.NONE);
                 cells[c].addMouseListener(this);
                 add(cells[c]);
             }

         }



         public void mousePressed(MouseEvent e)
         {

            MemoryCell clickedCell = (MemoryCell)e.getSource();

            if (zweiteZelle != null)
            {

                ersteZelle.setFocused(false);
                zweiteZelle.setFocused(false);

                if (!ersteZelle.matches(zweiteZelle))
                {
                   ersteZelle.setHidden(true);
                   zweiteZelle.setHidden(true);
                   nMismatched++;
                   fehlschlagLB.setText("Anzahl der Fehlversuche: "+ nMismatched);
                }

                ersteZelle = zweiteZelle = null;

            }

            if (clickedCell.getHidden())
            {
                clickedCell.setFocused(true);
                clickedCell.setHidden(false);

                if(ersteZelle == null)
                {
                    ersteZelle = clickedCell;
                }
                else
                {
                    zweiteZelle = clickedCell;

                    if (ersteZelle.matches(zweiteZelle))
                    {
                       ersteZelle.setMatched(true);
                       zweiteZelle.setMatched(true);
                    }
                }
            }
         }



         public void mouseClicked(MouseEvent e)
         {
         }
         public void mouseReleased(MouseEvent e)
         {
         }
         public void mouseEntered(MouseEvent e)
         {
         }
         public void mouseExited(MouseEvent e)
         {
         }

    }

    protected void randomize()
    {
         //für alle möglichen Symbol Paare
         int[] symbols = new int[cells.length];
         int pos;
         Random rand = new Random();

         //reinitialize all cells
         for (int c=0; c < cells.length; c++)
         {
             cells[c].setMatched(false);
             cells[c].setHidden(true);
             cells[c].setFocused(false);
             cells[c].setSymbol(MemoryCell.NONE);
             symbols[c] = c % 8;
         }

         for (int s=0; s < symbols.length; s++)
         {
             do
             {
                 pos = rand.nextInt(cells.length);
             }
             while (cells[pos].getSymbol() != MemoryCell.NONE);

             cells[pos].setSymbol(symbols[s]);
         }
         ersteZelle = null;
         zweiteZelle = null;
         if (isVisible())
         repaint();
         nMismatched = 0;
         fehlschlagLB.setText("Number of Mismatches: 0");

    }   // Ende Random funktion

}
 

PELLE

Bekanntes Mitglied
nach dem ich meinen code abgeändert habe auf deinen Rat:

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Random;

public class Memory extends JApplet
{
    JLabel memoryGameLB = new JLabel("<html>[b]MEMORY WM GAME 2006 - Mir send die die gwenne wellad... :-)[/b]</html>");
    JLabel fehlschlagLB = new JLabel("Anzahl der Fehlschläge: 0");
    protected static Image image;
    protected Button neustart = new Button("neustart");

    public void init ()
    {
       add(new MyPanelNorth(), BorderLayout.NORTH);
       add(new MyPanelCenter(), BorderLayout.CENTER);
       add(new MyPanelSouth(), BorderLayout.SOUTH);

       new Memory();
       //neustart ersteZelle and zweiteZelle & mismatches
       randomize();
       //pack();
       //setResizable(false);
       //setVisible(true);

    }

    class MyPanelNorth extends JPanel
    {
        public MyPanelNorth()
        {
           setBackground(Color.black);
           memoryGameLB.setForeground(Color.white);
           add(memoryGameLB);
        }
    }

    class MyPanelSouth extends JPanel
    {
        public MyPanelSouth()
        {
          setBackground(Color.red);
          neustart.addActionListener(new MeinButtonListener());
          add(fehlschlagLB);
          fehlschlagLB.setForeground(Color.white);
        }

        public class MeinButtonListener implements ActionListener
        {
            public void actionPerformed(ActionEvent e)
            {
               // Abragen: if(e.getSource().equals(buttonSettings))
               // oder Anweisungen
            }

        }

    }

    class MyPanelCenter extends JPanel implements MouseListener // innere Klasse der JApplet-Klasse
    {

         private MemoryCell[] cells;   //Array von MemoryCell Klasse
         private MemoryCell ersteZelle, zweiteZelle;
         private int nMismatched; //Zähler für Fehlversuche
         public MyPanelCenter()//(int shape)  //Konstruktor
         {
             super(new GridLayout(4, 0, 10, 10));
             ersteZelle  = zweiteZelle = null;
             cells = new MemoryCell[16];
             for (int c=0; c < cells.length; c++)
             {
                 cells[c] = new MemoryCell(MemoryCell.NONE);
                 cells[c].addMouseListener(this);
                 add(cells[c]);
             }

         }



         public void mousePressed(MouseEvent e)
         {

            MemoryCell clickedCell = (MemoryCell)e.getSource();

            if (zweiteZelle != null)
            {

                ersteZelle.setFocused(false);
                zweiteZelle.setFocused(false);

                if (!ersteZelle.matches(zweiteZelle))
                {
                   ersteZelle.setHidden(true);
                   zweiteZelle.setHidden(true);
                   nMismatched++;
                   fehlschlagLB.setText("Anzahl der Fehlversuche: "+ nMismatched);
                }

                ersteZelle = zweiteZelle = null;

            }

            if (clickedCell.getHidden())
            {
                clickedCell.setFocused(true);
                clickedCell.setHidden(false);

                if(ersteZelle == null)
                {
                    ersteZelle = clickedCell;
                }
                else
                {
                    zweiteZelle = clickedCell;

                    if (ersteZelle.matches(zweiteZelle))
                    {
                       ersteZelle.setMatched(true);
                       zweiteZelle.setMatched(true);
                    }
                }
            }
         }



         public void mouseClicked(MouseEvent e)
         {
         }
         public void mouseReleased(MouseEvent e)
         {
         }
         public void mouseEntered(MouseEvent e)
         {
         }
         public void mouseExited(MouseEvent e)
         {
         }

    }

    protected void randomize()
    {
         //für alle möglichen Symbol Paare
         int[] symbols = new int[cells.length];
         int pos;
         Random rand = new Random();

         //reinitialize all cells
         for (int c=0; c < cells.length; c++)
         {
             cells[c].setMatched(false);
             cells[c].setHidden(true);
             cells[c].setFocused(false);
             cells[c].setSymbol(MemoryCell.NONE);
             symbols[c] = c % 8;
         }

         for (int s=0; s < symbols.length; s++)
         {
             do
             {
                 pos = rand.nextInt(cells.length);
             }
             while (cells[pos].getSymbol() != MemoryCell.NONE);

             cells[pos].setSymbol(symbols[s]);
         }
         ersteZelle = null;
         zweiteZelle = null;
         if (isVisible())
         repaint();
         nMismatched = 0;
         fehlschlagLB.setText("Number of Mismatches: 0");

    }   // Ende Random funktion



}








hier die Error log:

Memory.java:147: cannot find symbol
symbol : variable cells
location: class Memory
int[] symbols = new int[cells.length];
^
Memory.java:152: cannot find symbol
symbol : variable cells
location: class Memory
for (int c=0; c < cells.length; c++)
^
Memory.java:154: cannot find symbol
symbol : variable cells
location: class Memory
cells[c].setMatched(false);
^
Memory.java:155: cannot find symbol
symbol : variable cells
location: class Memory
cells[c].setHidden(true);
^
Memory.java:156: cannot find symbol
symbol : variable cells
location: class Memory
cells[c].setFocused(false);
^
Memory.java:157: cannot find symbol
symbol : variable cells
location: class Memory
cells[c].setSymbol(MemoryCell.NONE);
^
Memory.java:165: cannot find symbol
symbol : variable cells
location: class Memory
pos = rand.nextInt(cells.length);
^
Memory.java:167: cannot find symbol
symbol : variable cells
location: class Memory
while (cells[pos].getSymbol() != MemoryCell.NONE);
^
Memory.java:169: cannot find symbol
symbol : variable cells
location: class Memory
cells[pos].setSymbol(symbols);
^
Memory.java:171: cannot find symbol
symbol : variable ersteZelle
location: class Memory
ersteZelle = null;
^
Memory.java:172: cannot find symbol
symbol : variable zweiteZelle
location: class Memory
zweiteZelle = null;
^
Memory.java:175: cannot find symbol
symbol : variable nMismatched
location: class Memory
nMismatched = 0;
^
12 errors
 

PELLE

Bekanntes Mitglied
OK...

1. Das applet wird im javaeditor geladen aber nicht wenn ich die html datei explizit mit dem IE/FF starte!

2. Beim klicken auf die memory karten werden die grafiken nicht angezeigt! und der zähler zählt nicht!

3. Die randomize fkt. wenn ich die in der init methode aufrufe um die startwerte für das memory feld zu setzen, dann kommt ne fehlermeldung???

Memory.java:21: illegal start of expression
/randomize();
^
1 error


Datei: Memory.java


Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Random;

public class Memory extends JApplet
{
    JLabel memoryGameLB = new JLabel("<html>[b]MEMORY WM GAME 2006 - Mir send die die gwenne wellad... :-)[/b]</html>");
    JLabel fehlschlagLB = new JLabel("Anzahl der Fehlschläge: 0");
    protected static Image image;
    protected Button neustart = new Button("neustart");

    public void init ()
    {
       add(new MyPanelNorth(), BorderLayout.NORTH);
       add(new MyPanelCenter(), BorderLayout.CENTER);
       add(new MyPanelSouth(), BorderLayout.SOUTH);

       new Memory();
       //neustart ersteZelle and zweiteZelle & mismatches
      randomize();


    }

    class MyPanelNorth extends JPanel
    {
        public MyPanelNorth()
        {
           setBackground(Color.black);
           memoryGameLB.setForeground(Color.white);
           add(memoryGameLB);
        }
    }

    class MyPanelSouth extends JPanel
    {
        public MyPanelSouth()
        {
          setBackground(Color.red);
          neustart.addActionListener(new MeinButtonListener());
          add(fehlschlagLB);
          fehlschlagLB.setForeground(Color.white);
        }

        public class MeinButtonListener implements ActionListener
        {
            public void actionPerformed(ActionEvent e)
            {
               // Abragen: if(e.getSource().equals(buttonSettings))
               // oder Anweisungen
            }

        }

    }

    class MyPanelCenter extends JPanel implements MouseListener // innere Klasse der JApplet-Klasse
    {

         private MemoryCell[] cells;   //Array von MemoryCell Klasse
         private MemoryCell ersteZelle, zweiteZelle;
         private int nMismatched; //Zähler für Fehlversuche
         public MyPanelCenter()//(int shape)  //Konstruktor
         {
             super(new GridLayout(4, 0, 10, 10));
             ersteZelle  = zweiteZelle = null;
             cells = new MemoryCell[16];
             for (int c=0; c < cells.length; c++)
             {
                 cells[c] = new MemoryCell(MemoryCell.NONE);
                 cells[c].addMouseListener(this);
                 add(cells[c]);
             }

         }

         protected void randomize()
         {
             //für alle möglichen Symbol Paare
             int[] symbols = new int[cells.length];
             int pos;
             Random rand = new Random();

             //reinitialize all cells
             for (int c=0; c < cells.length; c++)
             {
                 cells[c].setMatched(false);
                 cells[c].setHidden(true);
                 cells[c].setFocused(false);
                 cells[c].setSymbol(MemoryCell.NONE);
                 symbols[c] = c % 8;
             }

             for (int s=0; s < symbols.length; s++)
             {
                 do
                 {
                     pos = rand.nextInt(cells.length);
                 }
                 while (cells[pos].getSymbol() != MemoryCell.NONE);

                 cells[pos].setSymbol(symbols[s]);
             }
             ersteZelle = null;
             zweiteZelle = null;
             if (isVisible())
             repaint();
             nMismatched = 0;
             fehlschlagLB.setText("Number of Mismatches: 0");

         }   // Ende Random funktion



         public void mousePressed(MouseEvent e)
         {

            MemoryCell clickedCell = (MemoryCell)e.getSource();

            if (zweiteZelle != null)
            {

                ersteZelle.setFocused(false);
                zweiteZelle.setFocused(false);

                if (!ersteZelle.matches(zweiteZelle))
                {
                   ersteZelle.setHidden(true);
                   zweiteZelle.setHidden(true);
                   nMismatched++;
                   fehlschlagLB.setText("Anzahl der Fehlversuche: "+ nMismatched);
                }

                ersteZelle = zweiteZelle = null;

            }

            if (clickedCell.getHidden())
            {
                clickedCell.setFocused(true);
                clickedCell.setHidden(false);

                if(ersteZelle == null)
                {
                    ersteZelle = clickedCell;
                }
                else
                {
                    zweiteZelle = clickedCell;

                    if (ersteZelle.matches(zweiteZelle))
                    {
                       ersteZelle.setMatched(true);
                       zweiteZelle.setMatched(true);
                    }
                }
            }

         }


         public void mouseClicked(MouseEvent e)
         {
         }
         public void mouseReleased(MouseEvent e)
         {
         }
         public void mouseEntered(MouseEvent e)
         {
         }
         public void mouseExited(MouseEvent e)
         {
         }


    }

}




Datei: MemoryCell.java (kompiliert 100 % ok)

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Random;
public class MemoryCell extends JPanel
{

     public final static int NONE = -1;
     public final static int RECTANGLE = 0;
     public final static int OVAL = 1;
     public final static int ARC = 2;
     public final static int TRIANGLE = 3;
     public final static int SQUIGGLE = 4;
     public final static int LINES = 5;
     public final static int JAVA = 6;
     public final static int IMAGE = 7;
     protected int symbol;
     protected static Image image;
     protected boolean matched;
     protected boolean hidden;
     protected boolean focused;

     public MemoryCell(int shape)
     {
          super();
          setSymbol(shape);
          matched = false;
          hidden = true;
          focused = false;
          image = Toolkit.getDefaultToolkit().getImage("pokal.jpg");
          setSize(80, 80);

     }

     public void setSymbol(int shape)
     {
         if (shape >= -1 && shape <= 7)
         {
            symbol = shape;
         }
         else
         {
           symbol = NONE;
         }
     }

     public int getSymbol()
     {
         return symbol;
     }
     public boolean matches(MemoryCell otherMemoryCell)
     {
         return symbol == otherMemoryCell.symbol;
     }

     public void setMatched(boolean m)
     {
         matched = m;
         repaint();
     }

     public boolean getMatched()
     {
         return matched;
     }

     public void setHidden(boolean h)
     {
         hidden = h;
         repaint();
     }

     public boolean getHidden()
     {
         return hidden;
     }

     public void setFocused(boolean f)
     {
         focused = f;
         repaint();
     }

     public boolean getFocused()
     {
         return focused;
     }

     public void paintComponent(Graphics g)
     {
         super.paintComponent(g);

         if (hidden)
         {
           g.setColor(Color.darkGray);
           g.fillRect(0, 0, getSize().width, getSize().height);
           g.setColor(Color.lightGray);
           g.setFont(new Font("Timesroman", Font.ITALIC, 36));
           Point p = centerStringPoint("?", g.getFontMetrics());
           g.drawString("?", p.x, p.y);
         }

         else switch (symbol)
         {
            case RECTANGLE:
            g.fillRect(15, 15, 50, 50);
            break;

            case OVAL:
            g.fillOval(15, 15, 50, 50);
            break;

            case ARC:
            g.fillArc(15, 15, 50, 50, 45, 270);
            break;

            case TRIANGLE:
            g.fillPolygon(new int[] {40, 15, 65},
            new int[] {15, 65, 65}, 3);
            break;

            case SQUIGGLE:
            g.drawPolyline(new int[] {15, 25, 35, 45, 55, 65},
            new int[] {15, 65, 15, 65, 15, 65}, 6);
            break;

            case LINES:
            g.drawLine(15, 15, 65, 15);
            g.drawLine(15, 25, 65, 25);
            g.drawLine(15, 35, 65, 35);
            g.drawLine(15, 45, 65, 45);
            g.drawLine(15, 55, 65, 55);
            g.drawLine(15, 65, 65, 65);
            break;

            case JAVA:
            g.setFont(new Font("Timesroman", Font.BOLD, 24));
            Point p = centerStringPoint("Java", g.getFontMetrics());
            g.drawString("Java", p.x, p.y);
            break;

            case IMAGE:
            g.drawImage(image, 15, 15, 50, 50, this);
            break;

            default:
            super.paintComponent(g);
         }
         if (focused)
         {
            if (matched) g.setColor(Color.green);
            else g.setColor(Color.red);
            g.drawRect(0, 0, getSize().width - 1, getSize().height - 1);
         }

     }

     private Point centerStringPoint(String s, FontMetrics fm)
     {
         Point cp = new Point();
         int w = fm.stringWidth(s);
         int h = fm.getHeight() - fm.getLeading();
         cp.x = (getSize().width - w) / 2;
         cp.y = (getSize().height + h) / 2 - fm.getDescent();
         return cp;
     }

}
 

8ull23y3

Bekanntes Mitglied
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Random;

public class Memory extends JApplet
{
    JLabel memoryGameLB = new JLabel("<html>[b]MEMORY WM GAME 2006 - Mir send die die gwenne wellad... :-)[/b]</html>");
    JLabel fehlschlagLB = new JLabel("Anzahl der Fehlschläge: 0");
    protected static Image image;
    protected Button neustart = new Button("neustart");
    private MyPanelCenter mpc = new MyPanelCenter();
    public void init ()
    {
       add(new MyPanelNorth(), BorderLayout.NORTH);
       add(mpc, BorderLayout.CENTER);
       add(new MyPanelSouth(), BorderLayout.SOUTH);

       new Memory();
       //neustart ersteZelle and zweiteZelle & mismatches
       mpc.randomize();


    }

    class MyPanelNorth extends JPanel
    {
        public MyPanelNorth()
        {
           setBackground(Color.black);
           memoryGameLB.setForeground(Color.white);
           add(memoryGameLB);
        }
    }

    class MyPanelSouth extends JPanel
    {
        public MyPanelSouth()
        {
          setBackground(Color.red);
          neustart.addActionListener(new MeinButtonListener());
          add(fehlschlagLB);
          fehlschlagLB.setForeground(Color.white);
        }

        public class MeinButtonListener implements ActionListener
        {
            public void actionPerformed(ActionEvent e)
            {
               // Abragen: if(e.getSource().equals(buttonSettings))
               // oder Anweisungen
            }

        }

    }

    class MyPanelCenter extends JPanel implements MouseListener // innere Klasse der JApplet-Klasse
    {

         private MemoryCell[] cells;   //Array von MemoryCell Klasse
         private MemoryCell ersteZelle, zweiteZelle;
         private int nMismatched; //Zähler für Fehlversuche
         public MyPanelCenter()//(int shape)  //Konstruktor
         {
             super(new GridLayout(4, 0, 10, 10));
             ersteZelle  = zweiteZelle = null;
             cells = new MemoryCell[16];
             for (int c=0; c < cells.length; c++)
             {
                 cells[c] = new MemoryCell(MemoryCell.NONE);
                 cells[c].addMouseListener(this);
                 add(cells[c]);
             }

         }

         protected void randomize()
         {
             //für alle möglichen Symbol Paare
             int[] symbols = new int[cells.length];
             int pos;
             Random rand = new Random();

             //reinitialize all cells
             for (int c=0; c < cells.length; c++)
             {
                 cells[c].setMatched(false);
                 cells[c].setHidden(true);
                 cells[c].setFocused(false);
                 cells[c].setSymbol(MemoryCell.NONE);
                 symbols[c] = c % 8;
             }

             for (int s=0; s < symbols.length; s++)
             {
                 do
                 {
                     pos = rand.nextInt(cells.length);
                 }
                 while (cells[pos].getSymbol() != MemoryCell.NONE);

                 cells[pos].setSymbol(symbols[s]);
             }
             ersteZelle = null;
             zweiteZelle = null;
             if (isVisible())
             repaint();
             nMismatched = 0;
             fehlschlagLB.setText("Number of Mismatches: 0");

         }   // Ende Random funktion



         public void mousePressed(MouseEvent e)
         {

            MemoryCell clickedCell = (MemoryCell)e.getSource();

            if (zweiteZelle != null)
            {

                ersteZelle.setFocused(false);
                zweiteZelle.setFocused(false);

                if (!ersteZelle.matches(zweiteZelle))
                {
                   ersteZelle.setHidden(true);
                   zweiteZelle.setHidden(true);
                   nMismatched++;
                   fehlschlagLB.setText("Anzahl der Fehlversuche: "+ nMismatched);
                }

                ersteZelle = zweiteZelle = null;

            }

            if (clickedCell.getHidden())
            {
                clickedCell.setFocused(true);
                clickedCell.setHidden(false);

                if(ersteZelle == null)
                {
                    ersteZelle = clickedCell;
                }
                else
                {
                    zweiteZelle = clickedCell;

                    if (ersteZelle.matches(zweiteZelle))
                    {
                       ersteZelle.setMatched(true);
                       zweiteZelle.setMatched(true);
                    }
                }
            }

         }


         public void mouseClicked(MouseEvent e)
         {
         }
         public void mouseReleased(MouseEvent e)
         {
         }
         public void mouseEntered(MouseEvent e)
         {
         }
         public void mouseExited(MouseEvent e)
         {
         }


    }

}
 

PELLE

Bekanntes Mitglied
Ok der algorythmus geht nur wird das bild nicht angezeigt sprich eine fläche bleibt grau wo das bild sein müsste, daher muss dass noch in den MemoryCell Construktor:

image = Toolkit.getDefaultToolkit().getImage("pokal.jpg");

doch dennoch wird das bild nicht gezeigt?
 
G

Guest

Gast
ok jetzt das nächste problem, dass die Methode randomize von der actionperform meth. des neustartBN button nicht aufgerufen werden kann, da diese in einer anderen inneren klasse liegt, wie kann ich das lösen?

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Random;

public class Memory extends JApplet
{
    JLabel memoryGameLB = new JLabel("<html>[b]MEMORY WM GAME 2006 - Mir send die die gwenne wellad... :-)[/b]</html>");
    JLabel fehlschlagLB = new JLabel("Anzahl der Fehlschläge: 0");
    protected static Image image;
    protected Button neustartBN = new Button("Neustart");
    private MyPanelCenter mpc = new MyPanelCenter();
    public void init ()
    {
       add(new MyPanelNorth(), BorderLayout.NORTH);
       add(mpc, BorderLayout.CENTER);
       add(new MyPanelSouth(), BorderLayout.SOUTH);

       new Memory();
       //neustart ersteZelle and zweiteZelle & mismatches
       mpc.randomize();


    }

    class MyPanelNorth extends JPanel
    {
        public MyPanelNorth()
        {
           setBackground(Color.black);
           memoryGameLB.setForeground(Color.white);
           add(memoryGameLB);
        }
    }

    class MyPanelSouth extends JPanel
    {
        public MyPanelSouth()
        {
          setBackground(Color.red);
          neustartBN.addActionListener(new MeinButtonListener());
          add(neustartBN);
          add(fehlschlagLB);
          fehlschlagLB.setForeground(Color.white);
        }

        public class MeinButtonListener implements ActionListener
        {
            public void actionPerformed(ActionEvent e)
            {
               if(e.getSource().equals(neustartBN))
               {
                  randomize();
               }
            }

        }

    }

    class MyPanelCenter extends JPanel implements MouseListener // innere Klasse der JApplet-Klasse
    {

         private MemoryCell[] cells;   //Array von MemoryCell Klasse
         private MemoryCell ersteZelle, zweiteZelle;
         private int nMismatched; //Zähler für Fehlversuche
         public MyPanelCenter()//(int shape)  //Konstruktor
         {
             super(new GridLayout(4, 0, 10, 10));
             ersteZelle  = zweiteZelle = null;
             cells = new MemoryCell[16];
             for (int c=0; c < cells.length; c++)
             {
                 cells[c] = new MemoryCell(MemoryCell.NONE);
                 cells[c].addMouseListener(this);
                 add(cells[c]);
             }

         }

         protected void randomize()
         {
             //für alle möglichen Symbol Paare
             int[] symbols = new int[cells.length];
             int pos;
             Random rand = new Random();

             //reinitialize all cells
             for (int c=0; c < cells.length; c++)
             {
                 cells[c].setMatched(false);
                 cells[c].setHidden(true);
                 cells[c].setFocused(false);
                 cells[c].setSymbol(MemoryCell.NONE);
                 symbols[c] = c % 8;
             }

             for (int s=0; s < symbols.length; s++)
             {
                 do
                 {
                     pos = rand.nextInt(cells.length);
                 }
                 while (cells[pos].getSymbol() != MemoryCell.NONE);

                 cells[pos].setSymbol(symbols[s]);
             }
             ersteZelle = null;
             zweiteZelle = null;
             if (isVisible())
             repaint();
             nMismatched = 0;
             fehlschlagLB.setText("Anzahl der Fehlversuche 0");

         }   // Ende Random funktion



         public void mousePressed(MouseEvent e)
         {

            MemoryCell clickedCell = (MemoryCell)e.getSource();

            if (zweiteZelle != null)
            {

                ersteZelle.setFocused(false);
                zweiteZelle.setFocused(false);

                if (!ersteZelle.matches(zweiteZelle))
                {
                   ersteZelle.setHidden(true);
                   zweiteZelle.setHidden(true);
                   nMismatched++;
                   fehlschlagLB.setText("Anzahl der Fehlversuche: "+ nMismatched);
                }

                ersteZelle = zweiteZelle = null;

            }

            if (clickedCell.getHidden())
            {
                clickedCell.setFocused(true);
                clickedCell.setHidden(false);

                if(ersteZelle == null)
                {
                    ersteZelle = clickedCell;
                }
                else
                {
                    zweiteZelle = clickedCell;

                    if (ersteZelle.matches(zweiteZelle))
                    {
                       ersteZelle.setMatched(true);
                       zweiteZelle.setMatched(true);
                    }
                }
            }

         }


         public void mouseClicked(MouseEvent e)
         {
         }
         public void mouseReleased(MouseEvent e)
         {
         }
         public void mouseEntered(MouseEvent e)
         {
         }
         public void mouseExited(MouseEvent e)
         {
         }


    }

}


Fehler:

Memory.java:53: cannot find symbol
symbol : method randomize()
location: class Memory.MyPanelSouth.MeinButtonListener
randomize();
^
1 error
 

8ull23y3

Bekanntes Mitglied
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Random;

public class Memory extends JApplet
{
    private JLabel memoryGameLB = new JLabel("<html>[b]MEMORY WM GAME 2006 - Mir send die die gwenne wellad... :-)[/b]</html>");
    private JLabel fehlschlagLB = new JLabel("Anzahl der Fehlschläge: 0");
    protected static Image image;
    protected Button neustartBN = new Button("Neustart");
    private MyPanelCenter mpc = new MyPanelCenter();

    public void init ()
    {
       add(new MyPanelNorth(), BorderLayout.NORTH);
       add(mpc, BorderLayout.CENTER);
       add(new MyPanelSouth(mpc), BorderLayout.SOUTH);

       new Memory();
       //neustart ersteZelle and zweiteZelle & mismatches
       mpc.randomize();
       mpc.setBackground(Color.yellow);

    }

    class MyPanelNorth extends JPanel
    {
        public MyPanelNorth()
        {
           setBackground(Color.black);
           memoryGameLB.setForeground(Color.white);
           add(memoryGameLB);
        }
    }

    class MyPanelSouth extends JPanel
    {
        public MyPanelSouth(MyPanelCenter mpc)
        {
          setBackground(Color.red);
          neustartBN.addActionListener(new MeinButtonListener(mpc));
          add(neustartBN);
          add(fehlschlagLB);
          fehlschlagLB.setForeground(Color.white);
        }

        public class MeinButtonListener implements ActionListener
        {
            private MyPanelCenter mpc;
            public MeinButtonListener(MyPanelCenter mpc)
            {
              this.mpc = mpc;
            }
            public void actionPerformed(ActionEvent e)
            {
               if(e.getSource().equals(neustartBN))
               {
                 mpc.randomize();
               }
            }

        }

    }

    class MyPanelCenter extends JPanel implements MouseListener // innere Klasse der JApplet-Klasse
    {

         private MemoryCell[] cells;   //Array von MemoryCell Klasse
         private MemoryCell ersteZelle, zweiteZelle;
         private int nMismatched; //Zähler für Fehlversuche
         public MyPanelCenter()//(int shape)  //Konstruktor
         {
             setLayout(new GridLayout(4, 0, 10, 10));
             ersteZelle  = zweiteZelle = null;
             cells = new MemoryCell[16];
             for (int c=0; c < cells.length; c++)
             {
                 cells[c] = new MemoryCell(MemoryCell.NONE);
                 cells[c].addMouseListener(this);
                 add(cells[c]);
             }

         }

         public void randomize()
         {
             //für alle möglichen Symbol Paare
             int[] symbols = new int[cells.length];
             int pos;
             Random rand = new Random();

             //reinitialize all cells
             for (int c=0; c < cells.length; c++)
             {
                 cells[c].setMatched(false);
                 cells[c].setHidden(true);
                 cells[c].setFocused(false);
                 cells[c].setSymbol(MemoryCell.NONE);
                 symbols[c] = c % 8;
             }

             for (int s=0; s < symbols.length; s++)
             {
                 do
                 {
                     pos = rand.nextInt(cells.length);
                 }
                 while (cells[pos].getSymbol() != MemoryCell.NONE);

                 cells[pos].setSymbol(symbols[s]);
             }
             ersteZelle = null;
             zweiteZelle = null;
             if (isVisible())
             repaint();
             nMismatched = 0;
             fehlschlagLB.setText("Anzahl der Fehlversuche 0");

         }   // Ende Random funktion



         public void mousePressed(MouseEvent e)
         {

            MemoryCell clickedCell = (MemoryCell)e.getSource();

            if (zweiteZelle != null)
            {

                ersteZelle.setFocused(false);
                zweiteZelle.setFocused(false);

                if (!ersteZelle.matches(zweiteZelle))
                {
                   ersteZelle.setHidden(true);
                   zweiteZelle.setHidden(true);
                   nMismatched++;
                   fehlschlagLB.setText("Anzahl der Fehlversuche: "+ nMismatched);
                }

                ersteZelle = zweiteZelle = null;

            }

            if (clickedCell.getHidden())
            {
                clickedCell.setFocused(true);
                clickedCell.setHidden(false);

                if(ersteZelle == null)
                {
                    ersteZelle = clickedCell;
                }
                else
                {
                    zweiteZelle = clickedCell;

                    if (ersteZelle.matches(zweiteZelle))
                    {
                       ersteZelle.setMatched(true);
                       zweiteZelle.setMatched(true);
                    }
                }
            }

         }


         public void mouseClicked(MouseEvent e)
         {
         }
         public void mouseReleased(MouseEvent e)
         {
         }
         public void mouseEntered(MouseEvent e)
         {
         }
         public void mouseExited(MouseEvent e)
         {
         }


    }

}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Habe Probleme beim Bild laden! *Update 30.11.2006* AWT, Swing, JavaFX & SWT 28
K JavaFX Memory Spiel AWT, Swing, JavaFX & SWT 12
B Memory Spielerwechsel AWT, Swing, JavaFX & SWT 4
E showAndWait is not allowed during animation or layout processing Memory FX AWT, Swing, JavaFX & SWT 2
C Memory Karten nach Paar offen bleiben sonst wieder umdrehen AWT, Swing, JavaFX & SWT 1
N Hilfe bei Memory-Spiel AWT, Swing, JavaFX & SWT 18
eskimo328 Java6 Methode in Java5 verwenden (memory leak JInternalFrame) AWT, Swing, JavaFX & SWT 4
B Swing Memory-Spiel AWT, Swing, JavaFX & SWT 2
M Swing Memory Spiel in Eclipse AWT, Swing, JavaFX & SWT 5
2 Memory Leak mit BufferedImage !! AWT, Swing, JavaFX & SWT 15
B Game of Life in JavaFX AWT, Swing, JavaFX & SWT 5
K Game of Life AWT, Swing, JavaFX & SWT 4
beatles Swing JTextField - Game Status aus Array anzeigen AWT, Swing, JavaFX & SWT 3
J Frage zu Java Projekt [2D Game] AWT, Swing, JavaFX & SWT 3
F Swing Ein 2D-Game Menü mit framefüllenden Button AWT, Swing, JavaFX & SWT 6
M Tipps Zur Umsetzung einer GUI für ein Trading Card Game AWT, Swing, JavaFX & SWT 7
J Graphisches Game Menü AWT, Swing, JavaFX & SWT 9
P 2D-Grafik Gezielter Repaint einzelner Frames in Java-Game AWT, Swing, JavaFX & SWT 6
D JTextField über ein Game AWT, Swing, JavaFX & SWT 11
P Game of Life - PaintComponent-Problem / Timer? AWT, Swing, JavaFX & SWT 8
vandread Swing Probleme mit "Game of Life" programmieren AWT, Swing, JavaFX & SWT 8

Ähnliche Java Themen

Neue Themen


Oben