'Vier Gewinnt' programmieren

sowas z.b.

http://aktuell.de.selfhtml.org/artikel/css/mouseover/beispiel1.htm

aber mit java. ich will aber, dass ein bild in einer position erscheint, wo noch keins vorhanden ist, also wenn ich mit dem mauszeiger z.b. über die position x=60 Y=70 fahre will ich dass dort dann ein bild aufpopt ^^

[quote=Unregistriert]sowas z.b.

http://aktuell.de.selfhtml.org/artikel/css/mouseover/beispiel1.htm

aber mit java. ich will aber, dass ein bild in einer position erscheint, wo noch keins vorhanden ist, also wenn ich mit dem mauszeiger z.b. über die position x=60 Y=70 fahre will ich dass dort dann ein bild aufpopt ^^[/quote]

bzw. x1=60 y1=80 x2=80 y2=60

ka wie genau ich dass erklären soll. sollte eigentlich klar sein was ich meine. Geht dass überhaupt mit java ?!?

Aber klar geht das mit Java. Es gibt kaum etwas, was sich mit Java nicht lösen ließe. Ich werde dir mal ein kleines Beispiel schreiben.

hmm… schreibst du dass beispiel noch?

habe schon dass gesamte internet danach durchforstet, es hat irgendwas mit mouseEntered und MouseExit zu tun, aber wie genau man dass jetzt schreibt, weiss ich nicht.

kannst du mir nochmal helfen =)

Das glaube ich nicht, ich habe mehrmals Beispiele irgendwo im Netz verteilt. :wink:

Wie du schon richtig erkannt hast, kann man das mit einem MouseListener machen.
Dabei ist es egal, ob es sich dabei um einen Shape-Typ, wie bspw. Rectangle, oder um ein Label, Panel oder Button handelt. Der Ablauf ist eigentlich immer der gleiche.

Gezeichnet wird wie folgt:

protected void paintComponent(Graphics g) {
   super.paintComponent(g);
   if(image != null) {
      g.drawImage(image, 0, 0, this);
   }
}

Wenn es sich nicht um eine Swing- sondern eine AWT-Komponente handelt, heißt die zu überschreibende Methode nicht mehr paintComponent() sondern paint().

Die eigentliche Aktion passiert im Code des Listeners:

public void mouseEntered(MouseEvent e) {
   image = mouseoverImage; // ein vorher geladenes Bild
   repaint(); // Neuzeichnen auslösen
}

public void mouseExited(MouseEvent e) {
   image = normalImage; // ein vorher geladenes Bild
   repaint(); // Neuzeichnen auslösen
}

Wie man es letztendlich implementiert, hägt davon ab, was man erreichen möchte und mit welchen Komponenten man operiert.

Hier mal ein Beispiel mit einem JButton:

import javax.imageio.*;
import javax.swing.*;
import java.awt.*;
import java.net.*;
import java.io.*;

public class MouseoverDemo extends JFrame {
   private Image normalImage, mouseoverImage;
   private JButton button;
   
   public MouseoverDemo(String title) {
      super(title);
      setLayout(new GridBagLayout());
      setSize(400, 300);
      setLocationRelativeTo(null);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      try {
         normalImage = ImageIO.read(new URL("http://hoerzu.images.dvbdata.com/1052522/1052522_320x240.jpg"));
         mouseoverImage = ImageIO.read(new URL("http://hoerzu.images.dvbdata.com/1052457/1052457_320x240.jpg"));
      }
      catch(IOException e) {
         e.printStackTrace();
         JOptionPane.showMessageDialog(this,
         "Fehler beim Lesen einer Ressource aus dem Internet!",
         "IOException",
         JOptionPane.ERROR_MESSAGE);
      }

      button = new JButton(new ImageIcon(normalImage));
      button.setRolloverIcon(new ImageIcon(mouseoverImage));
      button.setPressedIcon(new ImageIcon(mouseoverImage));
      
      add(button);
   }
   
   public static void main(String[] args) {
      new MouseoverDemo("Mouseover mit einem Button").setVisible(true);
   }
}

Wenn du etwas nicht verstanden hast, fragst du noch mal.

Ich möchte diesen Code gerne in mein vier gewinnt applet einbauen und ich möchte dass alles in einer Datei haben, ohne mehrere Classes.

Ich habe den code jetzt so geschrieben und es werden keine fehler angezeigt, aber die bilder laden trotzdem nicht.

     public void paintComponent(Graphics g) {

        super.paintComponents(g);

        if(image != null) {
           g.drawImage((Image) image, 54, 76, this);
           
        }

     }
     
     public void mouseEntered(final MouseEvent me) {
        image = mouseoverImage; // ein vorher geladenes Bild

        repaint(); // Neuzeichnen auslösen
     }
     public void mouseExited(final MouseEvent me) {

        image = normalImage; // ein vorher geladenes Bild

        repaint(); // Neuzeichnen auslösen
     }
     public void mouseReleased(final MouseEvent me) {
     }
     

     public class MouseoverDemo extends JFrame {

        private Image normalImage, mouseoverImage;

        private JButton button;

        

        public MouseoverDemo(String title) {

           super(title);

           setLayout(new GridBagLayout());

           setSize(400, 300);

           setLocationRelativeTo(null);

           setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      

           try {

              normalImage = ImageIO.read(new URL("images.jpeg"));

              mouseoverImage = ImageIO.read(new URL("images.jpeg"));

           }

           catch(IOException e) {

              e.printStackTrace();

              JOptionPane.showMessageDialog(this,

              "Fehler beim Lesen einer Ressource aus dem Internet!",

              "IOException",

              JOptionPane.ERROR_MESSAGE);

           }

      

           button = new JButton(new ImageIcon(normalImage));

           button.setRolloverIcon(new ImageIcon(mouseoverImage));

           button.setPressedIcon(new ImageIcon(mouseoverImage));

          

           add(button);

        }

        

        public void main(String[] args) {

           new MouseoverDemo("Mouseover mit einem Button").setVisible(true);

        }

     }

Was du oben geschrieben ist, ist unbrauchbar und hat auch nichts mit einem Applet zu tun. Es könnte mal eine Applikation werden… :wink:
Kannst du mir mal deinen 4 Gewinnt-Code zeigen, damit ich mal sehe, wo es be dir klemmt?

ich bin noch nicht fertig mit dem code, habe bis jetzt die oberfläche fertig mit paint und ich will dass ganze spiel in einer einzigen java datei unterbringen, nicht wie in deinem beispiel in mehreren dateien.

Dass muss doch irgendwie möglich sein mit integer und so ^^

In der Objektorientierten Programmierung werden Probleme auf Klassen abgebildet, die dem realen Leben recht nah sind.
Alles in eine Klasse zu stopfen halte ich nicht für richtig und beinhaltet ein verkehrtes Konzept.
Warum sollte ich dir bei etwas Falschem helfen?

Hallo… ICh muss bis ende April 4 Gewinnt für die Schule programmieren… ICh kann java aber nur sehr schlecht hab keine ahnung wie was geht. ICh stehe da auch nur schwach ausreichend. Brauche also ein Qhelltext der mir meine Oberfläche das Gitter ausgibt und wo die ganzen Aktionen schon fertig drin sind die auch gehen. Brauche das wirklich dringend denn aus den sachen vorher werde ich nicht schlau wenn ich das einfüge oder so kommen 95 fehler. Kann mir jemand ein fertiges Programm schicken oder irgendwo Hochladen. AM besten als Applet komplett fertig oder als Aplication. Brauche wirklich dringend Hilfe.

Mit freundlichen Grüßen,

Chris

Wenn du Hilfe brauchst, brauchst doch nichts Fertiges. Der wahre Schüler will etwas lernen. :wink:
Deshalb bekommst du auch kein fertiges Programm, aber eine Gegenfrage.

Wo hast du was eingefügt?
Von „wem“ wurden die nach welcher Aktion ausgegeben?
Und wie lauten die Fehlermeldungen?

Wenn du nicht mal die Grundlagen beherrscht, meinst du, dass du es verdient hast, eine gute Note zu bekommen?
Übrigens ist der gesamte Quellcode, den ich für dieses Beispiel geschrieben habe, auf der 1. Seite dem letzten Beitrag als zip-Datei angehängt.

Hey LEkton sorry war im Urlaub… aber is echt wichtig für mich da ne gute Note zu bekommen. Wär cool wenn du mir helfen könntest. Denn ich möchte gerne nach den Sommerferien in die USA gehn zum Austausch für ein Jahr… ICh habe mich damit schon befasst und ich kann schonw as Bmi rechner und so erstellen aber das is echt heftig. Mein Lehrer meinte versuchs mal bitte. Wollte eigentlich anderes Projekt machen welches einfacher ist. Ein Porto-Rechner der Post… Kilo des Packkets und dann Porto…

Bitte Helf mir !

Ich denke schon, dass ich dir helfen kann. Ich weiß nur nicht, was du jetzt von mir erwartest…

Hey … Ja am Besten wäre es wenn du mir dein oder ein Vier Gewinnt schickst. das ich dann schon fertig habe also die Komplette Datei (Java + jfm)! Dann hätte ich alles joa und müsste mich dann nur noch mit der Erläuterung beschäfitgen warum wie was wo… Somit hätte ich die Aufgabe und würd mich dann so mit der Erläuterung mit der Programmierung näher beschäftigen. Wär sehr nett von dir wenn du mir helfen könntest.

Bitte, Bitte ist echt sehr wichtig für mich.

Mit freundlichen Grüßen

Chris

Huhu, Unregistrierter!

Wenn er das machen würde, müsste ich an seinem Verstand zweifeln - und das tue ich nicht.:wink:

Anstatt dich mit der Materie zu beschäftigen, fährst du in den Urlaub und lässt andere denken.
Nööö - so nicht!

Viel Spaß noch mit deiner schlechten Note, verdient hast du sie. :slight_smile:

Edit: Eine menschlich zu entschlüsselnde Orthographie wäre doch auch nicht zu viel verlangt, oder? Merk dir das für deine nächste Frage!

Sorry AJngo so meinte ich das nicht… Er soll nichts für mich programmieren er hat das schon programmiert und es wär cool wenn er mir vllt damit behilflich sein könnte…

Bitte helft mir!

Wie gesagt, alles, was bisher in diesem Thread veröffentlich wurde, kannst du nutzen und verändern. Zum Teil sind ja auch bereits lauffähige/ausführbare Sachen dabei.
Wenn ich mal Zeit habe, kann ich noch die Erkennung eines gewonnenen Spiels einbauen. Eine KI werde ich jedoch nicht implementieren.

Da müsste jetzt von dir eine konkrete Frage kommen, sonst weiß ich nicht, wo ich ansetzen soll.

HI was is eine Ki??? … Aber ich weiß nicht wie ich das alles aus dem Thread zu einem zusammen bauen kann? … ICh brauche das wirklich dringend… bitte helf mir!

Mfg Chris

Du willst ein komplett fertiges Programm und das bekommst du hier nicht. Da kannst du noch hundertmal bitten.
Lex hat dir alles notwendige gegeben(für meinen Geschmack schon zuviel - aber so ist er nunmal).
Und nun? Selbst ist der Mann/Frau. Geh hin und lerne! Bis Ende April ist noch ein bischen.

Also ehrlich, ich weiß nicht, was du noch brauchst. Ich habe den Quellcode gepostet, ich habe eine ausführbare Jar-Datei gepostet, was soll ich noch machen?

KI bedeutet künstliche Intelligenz. Das Programm könnte einen Gegenspieler simulieren und Züge berechnen und ausführen.
Soweit will ich hier nicht gehen.