Zum Inhalt springen

Problem beim Programmieren von 4gewinnt


Empfohlene Beiträge

Geschrieben

Ich habe einige Probleme beim Programmieren des Spieles 4Gewinnt. Dass Spiel muss mit einer Grafischen Oberfläche erstellt werden und die Steine müssen per mouseevent eingefügt werden.

Außerdem muss dass Programm erkennen, wenn vier steine Waagerecht Senkrecht oder schräg gelegt worden sind und wenn dass der Fall ist, soll eine Nachricht erscheinen, dass derjenige dass Spiel gewonnen hat.

Außerdem muss ich auch noch einen Spielstand mit einbauen, der zählt, wie oft rot oder blau gewonnen haben. Diesen spielstand muss man mittels einen button aber auch wieder auf null setzen können.

Ich habe schon ein Code vorbereitet, aber irgendwie will er die Steine einfach nicht zeichnen. KAnn mir jemand helfen?


import java.applet.Applet;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.Toolkit;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;


public class connect4 extends Applet implements MouseListener {

   /**

    *

    */

   private static final long serialVersionUID = 1L;

   int feld[][] = { { 0, 1, 2, 3, 4, 5, 6 },

                { 0, 0, 0, 0, 1, 0, 0 },

                { 2, 4, 0, 0, 1, 0, 0 },

                { 0, 0, 0, 0, 1, 0, 0 },

                { 0, 0, 0, 0, 0, 0, 0 },

                { 1, 1, 2, 0, 0, 0, 1 }

                };


   public void zeichneSpielfeld(Graphics g) {


      g.drawString("Vier Gewinnt", 260, 18);


      setSize(600,600);


      // g.drawRect(x, y, width, height)


      g.drawRect(85, 85, 420, 420);


      g.drawLine(85, 155, 505, 155);

      g.drawLine(85, 225, 505, 225);

      g.drawLine(85, 295, 505, 295);

      g.drawLine(85, 365, 505, 365);

      g.drawLine(85, 435, 505, 435);

      g.drawLine(85, 505, 505, 505);


      g.drawLine(145, 85, 145, 505);

      g.drawLine(205, 85, 205, 505);

      g.drawLine(265, 85, 265, 505);

      g.drawLine(325, 85, 325, 505);

      g.drawLine(385, 85, 385, 505);

      g.drawLine(445, 85, 445, 505);

   }


   public void paint(Graphics g) {

      Image rot = Toolkit.getDefaultToolkit().getImage("sonne.jpg");

      Image blau = Toolkit.getDefaultToolkit().getImage("mond.jpg");


      for (int x = 0; x < 7; x++) {

         for (int y = 0; y < 6; y++) {

            if (feld[y][x] == 1)

               g.drawImage(rot, 50 * x, 50 * y, this);

            if (feld[y][x] == 2)

               g.drawImage(blau, 50 * x, 50 * y, this);

         }

      }

      zeichneSpielfeld(g);

   }


   public void init() {

      addMouseListener(this);

   }


   public void mouseClicked(MouseEvent arg0) {

      // TODO Auto-generated method stub


   }


   public void mousePressed(MouseEvent arg0) {

      // TODO Auto-generated method stub


      int x = arg0.getX();


      if (x < 50)

         feld[0][0] = 1;

      if (x > 50 && x < 100)

         feld[0][1] = 1;

      if (x > 100 && x < 150)

         feld[0][2] = 1;

      repaint();

   }


   public void mouseReleased(MouseEvent arg0) {

      // TODO Auto-generated method stub


   }


   public void mouseEntered(MouseEvent arg0) {

      // TODO Auto-generated method stub


   }


   public void mouseExited(MouseEvent arg0) {

      // TODO Auto-generated method stub


   }


} 

Geschrieben

Kann man glaub ich auch auf der ContentPane des Applets machen. Bin mir in Bezug auf Applets grad nicht sicher. Auf jeden Fall kann man auf JPanels auch zeichnen. Oder man nimmt ein JLabel.

Hat man da beim Canvas irgendwelche Vorteile? Ist Canvas nicht auch AWT statt Swing?

Des Weiteren würde ich den MouseAdapter statt dem MouseListener implementieren, da du nicht alle Mehtoden des MouseListener überschreiben möchtest.

Geschrieben (bearbeitet)

Ich muss mich da verbessern. Ich denke Du hast deine Bilöder nicht in dem selben Verzeichnis. Ansonsten mach eine Verzeichnisangabe

Kann man glaub ich auch auf der ContentPane des Applets machen.

Na klar kann man das, aber es ist doch schöner wenn man extra eine Malfläche hat.^^

Bearbeitet von chemicalboy16

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

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

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...