Problem beim Aufbau des Spielfelds

Hallo liebe Community.
Ich möchte ein Spiel programmieren basierend auf dem Spiel des Lebens aber mit Fragen um am Ende einen Steckbrief auszugeben. Man soll selbst an einem Rad drehen welches sichtbar ist. So viel mal grob zum Ziel des Ganzen.
Jetzt habe ich aber ein Problem beim Aufbau des Spielfelds:
Es wird zwar alles schön und gut erzeugt jedoch kann man den Spieler ( Kreis ) auf dem Feld nicht sehen.
Ich habe keinen Layoutmanager verwendet, da ich entweder keinen passenden gefunden oder überfordert war (*hust* GridBagLayout *hust*). Der Spieler wird auch erzeugt jedoch ist er immer hinter den Rechtecken, also dem Spielfeld.
Jetzt zu der Frage. Welcher Layoutmanager wäre dafür am hilfreichsten und auch am besten zu verstehen? Und kann ich das vielleicht auch ohne Regeln? Die Codes sind nur auf das grafische beschränkt, da dies momentan meine einzige Baustelle ist :D. Im Anhang ist noch ein Bild wie das Spielfeld aussieht bzw. aussehen soll.


Mit freundlichen Grüßen
Tomate

[JAVA]

import javax.swing.*;
import java.awt.*;

class SPIEL {
SPIEL(){
JFrame fenster= new JFrame("Spiel des Lebens");

JPanel spieler1= new KreisPanel(Color.BLUE);
JPanel panel1= new RectPanel(Color.RED);
JPanel panel2= new RectPanel(Color.BLUE);
JPanel panel3= new RectPanel(Color.GREEN);
JPanel panel6= new RectPanel(Color.YELLOW);
JPanel panel7= new RectPanel(Color.BLACK);
JPanel panel8= new RectPanel(Color.GREEN);
JPanel panel9= new RectPanel(Color.RED);
JPanel panel10= new RectPanel(Color.BLUE);
JPanel panel12= new RectPanel(Color.GREEN);
JPanel panel13= new RectPanel(Color.YELLOW);
JPanel panel14= new RectPanel(Color.BLACK);
JPanel panel15= new RectPanel(Color.RED);
JPanel panel16= new RectPanel(Color.WHITE);


fenster.add(panel1);
fenster.add(panel2);
fenster.add(panel3);
fenster.add(panel6);
fenster.add(panel7);
fenster.add(panel8);
fenster.add(panel9);
fenster.add(panel10);
fenster.add(panel12);
fenster.add(panel13);
fenster.add(panel14);
fenster.add(panel15);
fenster.add(panel16);


panel1.setVisible(true);
panel2.setVisible(true);
panel3.setVisible(true);
panel6.setVisible(true);
panel7.setVisible(true);
panel8.setVisible(true);
panel9.setVisible(true);
panel10.setVisible(true);
panel12.setVisible(true);
panel13.setVisible(true);
panel14.setVisible(true);
panel15.setVisible(true);
panel16.setVisible(true);



panel1.setBounds(100,0,200,100);
panel2.setBounds(300,0,200,100);
panel3.setBounds(500,0,200,100);
panel6.setBounds(500,100,200,100);
panel7.setBounds(100,200,200,100);
panel8.setBounds(300,200,200,100);
panel9.setBounds(500,200,200,100);
panel10.setBounds(100,300,200,100);
panel12.setBounds(500,300,200,100);
panel13.setBounds(100,400,200,100);
panel14.setBounds(300,400,200,100);
panel15.setBounds(500,400,200,100);

fenster.add(spieler1);
spieler1.setVisible(true);
fenster.setVisible(true);
fenster.setSize(1000,600);
}
}
[/code]



[JAVA]import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;

import javax.swing.JFrame;
import javax.swing.JPanel;

class RectPanel extends JPanel {
Color j;
RectPanel(Color r){
j=r;
}
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(j);
g2d.fillRect(0, 0, this.getWidth(), this.getHeight());
g2d.setColor(j);

Rectangle2D.Double rechteck = new Rectangle2D.Double(0,0,10,100);

g2d.fill(rechteck);
g2d.draw(rechteck);
}
}
[/code]

[JAVA]import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Ellipse2D;

import javax.swing.JFrame;
import javax.swing.JPanel;

class KreisPanel extends JPanel {
Color c;
KreisPanel(Color d){
c=d;
}
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(Color.WHITE);
g2d.fillRect(0, 0, this.getWidth(), this.getHeight());
g2d.setColor(c);
int mx = 150;
int my = 150;
int r = 100;
Ellipse2D.Double kreis = new Ellipse2D.Double(150,50,20,20);
g2d.fill(kreis);
g2d.draw(kreis);
}
}
[/code]
 

Anhänge

  • Spielfeld.jpg
    Spielfeld.jpg
    23,4 KB · Aufrufe: 22
So ich habe nun ein GroupLayout verwendet jedoch immernoch das Problem dass ich die Spieler nciht auf dem Spielfeld angezeigt bekomme.
Irgendwelche Vorschläge dazu?
 

Major_Sauce

Bekanntes Mitglied
Das was du machst ist vollkommen unsinnig.
Tut mir leid, soll jetzt nicht negativ sein, aber wieso machst du für jedes Rechteck ein eigenes Panel ?
Mach doch ne for Schleife oder ähnliches, oder mal einfach in der paintComponent() vom "Hauptpanel" jedes mal ein neues Rectangle.
Danach malst du als letztes den Spiele, der wird dann ganz oben drauf gerendert und feddich,
Da brauchst du dann auch kein Layout...

mfg Major
 
Ist ja schön und gut wenn das anders einfacher ist jedoch hab ich leider keinen Plan wovon du redest. ( bin grafisch blutiger Anfänger )
Naja das mit ohne Layoutmanager hab ich auch schon probiert aber wie gesagt ich sehe die Spieler dann nicht. Wäre cool wenn du mir zu dem was du geschrieben hast nen Code Posten könntest, dass ich mir was drunter vorstellen kann. Und mit dem GroupLayout geht da garnix vom Verschieben technisch? Ich tue da mittlerweile halt schon ewig rum hab aber noch keine wirklich funktionierende Lösung gefunden. Sorry wenn ich mich gerade ein bisschen doof anstelle aber wie gesagt grafisch bin ich ein Anfänger.
MFG Tomate
 

Major_Sauce

Bekanntes Mitglied
Folgender maßen:

Du hast oben die Zeile code:

Java:
        g2d.fillRect(0, 0, this.getWidth(), this.getHeight());

Da könntest du ja sowas draus machen:

Java:
        int x = 0;
        int y = 0;

        g2d.fillRect(x, y, x + 64, y + 64);

Nun würde der bei ner x-y-Koordinate anfangen und nen Rechteck mit der Größe von 64x64 malen.
Das noch in ne Schleife und die Farbe änder:

Java:
        for(int x = 0; x < 8; x++){
                for(int y = 0; y < 8; y++){
                        g.setColor(/*irgend ne Farbe*/);
                        g.fillRect(x * 64, y * 64, 64, 64);
                }
        }

Dadurch hast du ein 8x8 Feld mit verschiedenen farben...

mfg Major
 
Zuletzt bearbeitet:
Und das ist dann alles in einem Panel und wenn ich die Spieler adde sind sie drüber?
Aber haben bei der for-Schleife dann nicht alle die gleiche Farbe?
Und kann ich deinen Code theoretisch 1:1 übernehmen?
Wenn ja dann danke schonmal im Vorraus
MFG Tomate
 
Zuletzt bearbeitet:

Major_Sauce

Bekanntes Mitglied
Hey, 1:1 wird nicht reichen...
Die farben musst du jedes mal Ändern.
Wenn du dem Spieler ein neues Panel gibst ist er drüber, es ist aber besser die Spieler auch einfach ohne Panel zu machen, d.h. du machst das gleiche wie bei den Feldern nur eben mit nem Bild oder so und malst sie einfach nach dem du die felder gemalt hast.

mfg Major
 
Ich hab aber eben das RectPanel und das KreisPanel, wo jeweils der Spieler bzw das Spielfeld dann implementiert wird. Soll ich dass dann in eine Klasse zusammenfügen?
Weil anders kann ich mir nicht vorstellen dass ich das zusammen auf ein Panel bekomme
Kann ich die Rechtecke bzw. Spieler dann auch besonders ansprechen, z.B Spieler eins bewege dich oder Feld 3 werde rot oder geht dass dann nichtmehr wenn ich das so mache wie du gesagt hast. Weil die haben dann ja keinen besonderen Namen oder täusche ich mich da?
.
MFG Tomate
 
Zuletzt bearbeitet:

Major_Sauce

Bekanntes Mitglied
Folgender Maßen:

Java:
        for(int x = 0; x < 8; x++){
                for(int y = 0; y < 8; y++){
                        g.setColor(/*irgend ne Farbe*/);
                        g.fillRect(x * 64, y * 64, 64, 64);
                }
        }

jetzt kannst du natürlich einfach dahinter nun noch die Spieler rendern:

Java:
        xPlayer = 3;
        yPlayer = 4;

        for(int x = 0; x < 8; x++){
                for(int y = 0; y < 8; y++){
                        g.setColor(/*irgend ne Farbe*/);
                        g.fillRect(x * 64, y * 64, 64, 64);
                }
        }

        //Render player
        g.setColor(Color.GREEN);
        g.fillRect(xPlayer * 64 + 10, yPlayer * 64 + 10, 46, 46);

nun kannste auch nen Spieler drüber malen...

mfg Major
 
Ich meine wenn die Methode fertig ist dann hab ich ja mein Spielfeld und die Spieler. Die Spieler muss ich dann mithilfe einer Methode bewegen können. XPlayer und YPlayer sind aber doch lediglich temporäre ints. Ich steh grade wahrscheinlich extrem auf dem Schlauch. Kannst du kurz nen Code für ne Methode Posten, wie du das meinst ? Wäre echt geil von dir.
MFG Tomate
 
iChat jetzt ne Möglichkeit gefunden jedoch habe ich jetzt das Problem, dass bei repaint() nichts passiert. Also wenn ich den Spieler direkt im Konstruktur der Spielfeldaufbauklasse bewege funktioniert alles wunderbar. Wenn ich jedoch die Methode in meiner eigentlichen Spielmethode aufrufe und dann Fenster.repaint() sage passiert nix. Woran kann das denn nun schon wieder liegen?
 

Major_Sauce

Bekanntes Mitglied
Könnten Fehler drin sein, schreibe das gerade hier direkt im Forum:

Java:
public class Player {
    
        private int x;
        private int 
        private Color color;

        public Player(Color color){
                x = 0;
                y = 0;
                this.color = color;
        }

        public void move(int x, int y){
                this.x += x;
                this.y += y;
        }

        public void render(Graphics2D g){
                g.setColor(color);
                g.drawRect(x * 64 + 10, y * 64 + 10, 44, 44);
        }

}

public class Spielfeld extends JPanel {

        private int width;
        private int height;

        private Player player1;
        private Player player2;

        public Spielfeld(int width, int height){
                this.width = width;
                this.height = height;
                player1 = new Player(Color.GREEN);
                player2 = new Player(Color.RED);
        }

        public void render(Graphics2D g){
                for(int  x = 0; x < width; x++){
                        for(int y = 0; y < height; y++){
                                //Hier noch iwie die Farbe von g ändern
                                //g.setColor(Color.BLUE);
                                g.drawRect(x * 64, y * 64, 64, 64);
                        }
                }
                player1.render(g);
                player2.render(g);
        }

        protected void paintComponent(Graphics graphics){
                Graphics2D g = (Graphics2D)graphics;
                render(g);
        }

}

sollte normalerweise funktionieren...

mfg Major
 
Muss ich dann nicht noch die alte Spielerfigur löschen? Wenn ja gibt's ne Methode um ne Farbe in der Umgebung herauszufinden? Aber ansonsten hab ich das Prinzip glaub ich verstanden. Muss ich halt mal ausprobieren :)
Danke schonmal für den Fall das es hilft wenns nicht geht melde ich mich nochmal.
MfG Tomate
 

Major_Sauce

Bekanntes Mitglied
Die alte musst du löschen.
Da müsste jetzt normalerweise alles dabei sein.
Das mit der Methode musst du dir selbst zusammebasteln. Zum Bleistift die farben mit Koordinaten in ner Liste speichern ?!

mfg Major
 
Wenn ich so eine Methode, wo Graphics2D oder ähnliches als Parameter drinnen steht, aufrufe, was soll ich da dann reinschreiben?
Ich hab jetzt nämlich in meinem normalen Spiel die Methode spielerBewegen() drinnen die den Spieler nach int unterscheidet und dann den demenstprechenden bewegt jedoch muss ich ja ein Graphics2D Objekt übergeben und uch weiß nicht was ich da reinschreiben soll.
Ist vielleicht ne dumme Frage aber ich hab da gerade echt Probleme damit xD

das ist in meinem Spielfeldaufbau:
Java:
void spielerBewegen(int a , Graphics2D g){

        if ( a==0){
            g.clearRect(player1.gibX(),player1.gibY(),20,20);
            player1.move(200,0);
            render(g);
        }
        if( a==1){
             g.clearRect(player2.gibX(),player2.gibY(),20,20);
            player2.move(200,0);
            render(g);
        }

    }
Das im Spieler:
Java:
public void render(Graphics2D g){
        
     
        g.setColor(spielerfarbe);
        g.fillOval(x , y , 20, 20);
    }
Und das im eigentlichen Spiel:
Java:
 void bewegen(Graphics2D g){
        g= (Graphics2D) g;
        Feld.spielerBewegen(aktuellerSpieler,g);
    }
Ach ja und wenn ich meine bewegen Methode aufrufe kommt ne nullpointer exception wenn ich das Graphics2D mit null mache. Aber ich glaube das liegt daran.
MFG Tomate
 
Zuletzt bearbeitet:
Ach ja und was bedeutet das += in deinem Code da oben. Ich hab einfach ein x = x+xn draus gemacht. Also aus dem this.x+=x
Naja wäre cool wenn du mir die Fragen alle beantworten könntest :D.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
O Problem beim Aufrufen des Spiels von einem Menü Spiele- und Multimedia-Programmierung 7
G LIBGDX Problem beim resizen des Frames Spiele- und Multimedia-Programmierung 3
T LWJGL 2.9.2: Seltsamer Effekt beim Rendern (VertexShader Problem?) Spiele- und Multimedia-Programmierung 3
N Problem mit Kollisionsabfrage beim Fallen Jump & Run Spiele- und Multimedia-Programmierung 5
L Problem beim Rätsellöser Spiele- und Multimedia-Programmierung 3
D Problem beim bewegen einer Figur Spiele- und Multimedia-Programmierung 2
K Problem beim Anzeigen von Bildern Spiele- und Multimedia-Programmierung 5
D Problem mit Überprüfung beim Lottospiel Spiele- und Multimedia-Programmierung 6
D Problem beim Öffnen einer PHP für eine Highscore Spiele- und Multimedia-Programmierung 5
aze Problem beim Laden von Obj File Spiele- und Multimedia-Programmierung 3
S Problem beim laden eines Bildes in einer Methode Spiele- und Multimedia-Programmierung 14
B Problem beim Programmieren von 4Gewinnt Spiele- und Multimedia-Programmierung 5
G Problem beim Zeichnen von LineArrays Spiele- und Multimedia-Programmierung 9
C Problem beim picken Spiele- und Multimedia-Programmierung 10
B Problem beim Programmieren Von Mühle Spiele- und Multimedia-Programmierung 6
B problem beim Memory Logik Spiele- und Multimedia-Programmierung 13
J Problem beim Instaliren Spiele- und Multimedia-Programmierung 8
N Rundenstrategiespiel - Problem beim Drehen eines Bildes Spiele- und Multimedia-Programmierung 18
C Graphische Benutzerschnittstelle, Problem beim Zeichnen Spiele- und Multimedia-Programmierung 4
A [HILFE] - Minecraft-Problem! Spiele- und Multimedia-Programmierung 1
C Plugin Problem Spiele- und Multimedia-Programmierung 2
J JLayer Problem Spiele- und Multimedia-Programmierung 1
Meeresgott LWJGL 3 Problem mit einer Texture Spiele- und Multimedia-Programmierung 4
G Low Poly 3D LWJGL Shader Problem Spiele- und Multimedia-Programmierung 4
G LIBGDX Texturen Problem Spiele- und Multimedia-Programmierung 1
C AutoClicker Problem Spiele- und Multimedia-Programmierung 2
S OOP Logik Problem Spiele- und Multimedia-Programmierung 5
G LIBGDX Viewport Problem Spiele- und Multimedia-Programmierung 3
J Problem mit Game Of Life Spiele- und Multimedia-Programmierung 3
N Problem mit 2D Spiel Spiele- und Multimedia-Programmierung 17
C Minecraft Minecraft Plugin Problem Spiele- und Multimedia-Programmierung 17
R Pong Spiel Problem Spiele- und Multimedia-Programmierung 1
V Problem mit BufferStrategy Spiele- und Multimedia-Programmierung 2
Streeber Problem mit Transparenz/TextDrawing in LWJGL/Slick2d (OpenGL) Spiele- und Multimedia-Programmierung 1
E A-Stern Algorithmus Problem und Implementierung einer Map Spiele- und Multimedia-Programmierung 6
W Generelles Problem: Entscheidungsfindung Spiele- und Multimedia-Programmierung 4
T Problem bei Kollisionsabfrage Spiele- und Multimedia-Programmierung 4
C Vier Gewinnt Problem mit Ordnerstruktur Spiele- und Multimedia-Programmierung 2
T Problem mit Eclipse (java)-(minecraft) Spiele- und Multimedia-Programmierung 3
I Textbasiertes Spiel - Umsetzungsfrage & Schleifen Problem Spiele- und Multimedia-Programmierung 26
M Sound Problem Spiele- und Multimedia-Programmierung 3
M Sound Engin Problem 2 Spiele- und Multimedia-Programmierung 2
J Problem bei der GUI - Zu viele Spielbretter Spiele- und Multimedia-Programmierung 2
D LWJGL gluLookAt "Umschauen" Problem Spiele- und Multimedia-Programmierung 0
D Problem mit Würfelanimierung in LWJGL Spiele- und Multimedia-Programmierung 7
C Zeldaklon Problem mit Wand-Kollision Spiele- und Multimedia-Programmierung 8
0 Boxen übereinander stapelt Problem Spiele- und Multimedia-Programmierung 5
D Textfield im Game ,Problem: while-Schleife Spiele- und Multimedia-Programmierung 3
R 2D platformer - enemy damage -> TIMER PROBLEM Spiele- und Multimedia-Programmierung 3
S LWJGL Kamera Problem - Alles verzerrt Spiele- und Multimedia-Programmierung 4
B LWJGL StackOverFlow Problem nach 30sekunden. (Pong) Spiele- und Multimedia-Programmierung 2
Seikuassi LWJGL-Problem Spiele- und Multimedia-Programmierung 2
L Minecraft Minecraft Plugin programmieren (Craftbukkit 1.7.2) Problem Spiele- und Multimedia-Programmierung 4
B Minecraft mehr Ram zuweißen Problem Spiele- und Multimedia-Programmierung 0
K Bukkit Plugin Problem Spiele- und Multimedia-Programmierung 3
Y Problem mit repaint() in run() Spiele- und Multimedia-Programmierung 2
X Kleines Problem mit Java Reflections und einem eigenen Eventhandler Spiele- und Multimedia-Programmierung 1
T Problem mit Kollisionsabfrage der NPC Spiele- und Multimedia-Programmierung 1
J Minecraft Problem mit dem JRE - Minecraft Spiele- und Multimedia-Programmierung 3
TheSorm Problem mit 2 classen NullPointerException Spiele- und Multimedia-Programmierung 1
S Problem mit 4 gewinnt(MinMax Algorithmus) Spiele- und Multimedia-Programmierung 2
N Problem in der Main.class Spiele- und Multimedia-Programmierung 1
J Blöcke, Hitboxen, Koolisionsabfrage - Problem Spiele- und Multimedia-Programmierung 8
S Problem mit 3d-Polygon Spiele- und Multimedia-Programmierung 2
A Problem mit Sound Spiele- und Multimedia-Programmierung 5
C Nxt Duell Problem Spiele- und Multimedia-Programmierung 4
F LWJGL Problem mit Erstellen eines Objekts und der Kamera Spiele- und Multimedia-Programmierung 5
ruerob Problem bei Fade-Out von Sounds Spiele- und Multimedia-Programmierung 3
L [Slick2D] Problem bei Speicherfreigabe Spiele- und Multimedia-Programmierung 2
M Bukkit Plugin Problem Spiele- und Multimedia-Programmierung 22
T Java3D Rendering Problem Spiele- und Multimedia-Programmierung 7
J Problem bei pixelgenauer Kollisionsabfrage Spiele- und Multimedia-Programmierung 10
F Problem mit dem Abspielen von byte[] (Audioprogrammierung) Spiele- und Multimedia-Programmierung 2
C Problem mit Abspielen von Audio-Dateien Spiele- und Multimedia-Programmierung 3
R Problem bei Farbe ändern/4Gewinnt Spiele- und Multimedia-Programmierung 5
R StringIndexOutOfBoundsException - Problem Spiele- und Multimedia-Programmierung 2
S Problem mit Sichtfeld/Licht in einem Raster Spiele- und Multimedia-Programmierung 5
G Acht-Damen-Problem HILFE! Spiele- und Multimedia-Programmierung 11
A TileMap KeyListener - Problem Spiele- und Multimedia-Programmierung 2
J Problem mit Threads Spiele- und Multimedia-Programmierung 8
S Problem mit Zeitsteuerung der Game Loop Spiele- und Multimedia-Programmierung 4
Fu3L Problem mit 3D Noise Spiele- und Multimedia-Programmierung 4
T Problem bei LinkedList / JPanel Spiele- und Multimedia-Programmierung 4
T Problem mit ClassLoader und LWJGL Spiele- und Multimedia-Programmierung 5
M Scrolling Repaint Problem Spiele- und Multimedia-Programmierung 2
Samake03 [Problem] layeredPane bzw. Viewport Spiele- und Multimedia-Programmierung 3
Helgon glTexParameter / glTexImage2D Problem Spiele- und Multimedia-Programmierung 11
T Jmonkey opengl problem Spiele- und Multimedia-Programmierung 13
M Problem mit Kamera (glMultMatrix (OpenGL/ LWJGL)/ Quaternionen) Spiele- und Multimedia-Programmierung 5
M Problem mit Gameserver / Datensynchronisation Spiele- und Multimedia-Programmierung 10
G Mein erstes minigame -> problem mit Methode Spiele- und Multimedia-Programmierung 3
X Geometry Wars Clone Problem Spiele- und Multimedia-Programmierung 4
H Problem mit JMonkeyEngine3 und OgreXML Spiele- und Multimedia-Programmierung 3
D [JOGL 2.0] Kleines Problem mit freier Flugsteuerung Spiele- und Multimedia-Programmierung 3
A JAVA3D TransformGroup <--> Group Problem Spiele- und Multimedia-Programmierung 3
U [JOGL 1.1.1a]Kleines Problem mit Text Overlays: Spiele- und Multimedia-Programmierung 19
T Problem mit JnR-Steuerung / KeyListener Spiele- und Multimedia-Programmierung 6
D Problem Mit Miensweeper Clone & rekursive Methode Spiele- und Multimedia-Programmierung 4
M Performance Problem bei BufferedImage Spiele- und Multimedia-Programmierung 7
T Problem mit Speicherverbrauch Spiele- und Multimedia-Programmierung 5

Ähnliche Java Themen

Neue Themen


Oben