Hilfe bei Programmierung von Abalone

Status
Nicht offen für weitere Antworten.

Aynami

Mitglied
Hallo!


Ich möchte gerne das Speil Abalone programmieren. Allerdings bereitet mir die Programmierung des Spielbrettes einige Problem.
Das Spielbrett hat die Form eines 6ecks.

Hier könnt ihr euch ein Bild dazu ansehen.

Ich habe mit einer for Schleife versucht, die Kreise mittels "Paintmethode" zu zeichnen, bekomme allerdings nur die obere Hälfte richtig hin.

Hier der Testquelltext:

Code:
public class Kreise extends  Canvas {

	
   	public Kreise(){
		
	
		
	}

	
	public void paint(Graphics g){
		
		  int r = 8;
		  int i, j;
		  int x, y;
		
		  for (i=5; i<10; ++i) {
		     x = 150 - r * i;
		     y = (int) (40 + (i - 1) * 1.7321 * r);
		     for (j=1; j<=i; ++j) {
		       g.setColor(Color.RED);
		       g.drawOval(x,y,2*r,2*r);
		       g.fillOval(x,y,2*r,2*r);
		       
		       x += 2 * r;
		
		     }	
		
		  }
		  
		  for (i=9; i>7; --i) {
			     x = 150 - r * i;
			     y = (int) (67 + (i - 1) * 1.7321 * r);
			     for (j=1; j<=i; ++j) {
			       g.setColor(Color.RED);
			       g.drawOval(x,y,2*r,2*r);
			       g.fillOval(x,y,2*r,2*r);
			       
			       x += 2 * r;
			
			     }	
			
			  }
		  
	}
	
	
	
	
	public static void main(String[] args) {
	
		
		final Frame f = new Frame("GraphicsExample");
		f.setSize(800, 480);
		f.add(new Kreise());
		
		f.addWindowListener(
				new WindowAdapter() {
					public void windowClosing(WindowEvent e)
					{
						f.setVisible(false);
						f.dispose();
						System.exit(0);
					}
				}
			);
		
		f.setVisible(true);
	}

}

Vielleicht kann mir einer von euch weiter helfen.
Wäre über jede Hilfe dankbar!
 

MPW

Top Contributor
hm....also normaler Weise wuerde man einfach ein Bildnehmen, und es da hinhaengen, aber wenn du es umbedingt zeichnen willst... versuch mal den Algorithmus von der oberen Haelfte einfach umzudrehen...
 

André Uhres

Top Contributor
Code:
   private final int R = 20;
    public void paint(Graphics g){
        boolean draw = false;
        int y = 50;
        for (int i = 0; i < 9; i++) {
            int x = 50;
            for (int j = 0; j < 17; j++) {
                draw = !draw;
                boolean skip = false;
                if(((i==0 || i==8) && (j< 3 || j>13)) ||
                   ((i==1 || i==7) && (j< 2 || j>14)) ||
                   ((i==2 || i==6) && (j< 1 || j>15)))
                    skip=true;
                if(draw && !skip)
                    g.drawOval(x,y,R,R);
                x += R;
            }
            y += R*1.7321 ;
        }
    }
 

Aynami

Mitglied
Wow super, damit klappts!
Ich hatte es auch noch anders realisiert, in dem ich ein Zahlenarray gebaut hatte und dieses mit Hilfe von einer doppelten for-schleife und if Anweisungen mit Kreisen gefüllt hatte.
Aber vielen vielen Dank für die Antwort! :D
 
G

Gast

Gast
Hallo, das ist meine Version

public void paint(Graphics g){

int r = 8;
int i, j;
int x, y;
int x_offset=150;
int y_offset=100;
int f=20;
int max=8;
for (i=0; i<=4; ++i) {
y=y_offset+(int)(i*f*0.9);
for (j=0; j<=max-i; ++j) {
x=x_offset+(int)((j+0.5*i)*f);
g.setColor(Color.RED);
g.drawOval(x,y,2*r,2*r);
g.fillOval(x,y,2*r,2*r);
}
}

for (i=1; i<=4; ++i) {
y=y_offset-(int)(i*f*0.9);
for (j=0; j<=max-i; ++j) {
x=x_offset+(int)((j+0.5*i)*f);
g.setColor(Color.RED);
g.drawOval(x,y,2*r,2*r);
g.fillOval(x,y,2*r,2*r);
}
}

}
 

Aynami

Mitglied
Nach einigem Rumprobieren habe ich mich jetzt entschieden, dass Feld mit JPanel zu füllen, denn diese kann ich ja mit einem MouseListener ansprechen und so z.B. die Farbe der Kugeln ändern oder einen anderen Zustand erzeugen.

Die Erzeugung des Panelfeldes sieht so aus:

Code:
    final static  int RAND=1;
    final static int SPIELRAND=4;
    final static int LUECKE =5;
    final static int FELD=6;
	
	
    static int array_leer[][]={
			 
			 {4,4,4,4,4,1,1,1,1,1,1,1,1,1,4,4,4,4,4},
			 {4,4,4,4,1,6,5,6,5,6,5,6,5,6,1,4,4,4,4}, 
			 {4,4,4,1,6,5,6,5,6,5,6,5,6,5,6,1,4,4,4}, 
			 {4,4,1,6,5,6,5,6,5,6,5,6,5,6,5,6,1,4,4}, 
			 {4,1,6,5,6,5,6,5,6,5,6,5,6,5,6,5,6,1,4}, 
			 {1,6,5,6,5,6,5,6,5,6,5,6,5,6,5,6,5,6,1}, 
			 {4,1,6,5,6,5,6,5,6,5,6,5,6,5,6,5,6,1,4}, 
			 {4,4,1,6,5,6,5,6,5,6,5,6,5,6,5,6,1,4,4},
			 {4,4,4,1,6,5,6,5,6,5,6,5,6,5,6,1,4,4,4}, 
			 {4,4,4,4,1,6,5,6,5,6,5,6,5,6,1,4,4,4,4}, 
			 {4,4,4,4,4,1,1,1,1,1,1,1,1,1,4,4,4,4,4}, 
		 };

         
            // Erzeugung eines JPanel Arrays
          JPanel[][] panel = new JPanel[11][19];

          // Füllen des Zahlenarrays mit den JPanel
          for (int i = 0; i < a.array_leer.length; i++) {
			
			for (int j = 0; j < 19; j++) {
   
				  
				
				if (a.array_leer[i][j] == a.FELD) {

				panel[i][j] = new JPanel();
				panel[i][j].setBackground(Color.RED);
				panel[i][j].setBounds(j*18+50,i*35+50,30,30);
				
						
				this.add(panel[i][j]);
				
				
				}
			
		}


Soweit so gut! Wenn ich jetzt meine MouseClicked Methode Fülle, komme ich aber zu einem neuen Problem, wo ich gerade bei der Lösung festhänge und nicht vorwärts komme.
Ich habe mir erstmal zum Test die Position des ersten Panel gemerkt und wenn ich dort klicke, wird die Hintergrundfarbe auf Grün gesetzt und ein Kreis gemalt. Das schaut so aus :

Code:
public void mouseClicked(MouseEvent e) {

		// dient nur zur Bestimmung der x,y Position der Maus
                                System.out.println("x=" + e.getX() + "y=" + e.getY());

		for (int i = 0; i < panel.length; i++) {
			for (int j = 0; j < 19; j++) {

				
	                    if ((e.getX() > 140 && e.getX() < 170) && (e.getY() > 85 && e.getY() < 115)) 
                                        {
			panel[1][5].setBackground(Color.GREEN);
			Graphics g = panel[1][5].getGraphics();
			g.fillOval(0,0,30,30);
		        }	
		}
	             }

		if (e.getButton() == MouseEvent.BUTTON3) {

			repaint();
		}

	}

Mein Problem ist jetzt folgendes: Wenn ich jedes JPanel einzeln ansprechen will, dann müsste ich mir von jedem JPanel die Position merken. Wenn man das per Hand macht, hat man später in der MouseClicked Methode sehr viele if - Anweisungen, was nicht so sonderlich effizient ist.
Mir ist aber auch noch kein passender mathematischer Algorythmus dazu eingefallen um das Ansprechen der verschiedenen JPanel zu verallgemeinern.
Weiß einer von Euch weiter?
Ich hatte noch versucht jedem JPanel einen MouseListener zuzufügen, denn dann müsste ich mir die Koordinaten nicht merken. Aber mit der Variante kam ich auch nicht weiter .... :cry:

Ich würd mich über eure Antworten freuen! :lol:
 

MPW

Top Contributor
Also so sonderlich performant ist das nicht, was du da fabrizierst, mach das besser mal so:

- 1 Panel
- MouseListener
- Bei Klick Position rauskriegen, und das entsprechende Quadrat einfaerben....das wurde ich machen, in dem du bis bei den x und y Positionen des Clicks jeweils bis zum naechsten 10/100 vorwaerts oder zurueck springst oder Arrays machst und eine kleine Kollisionsmethode schreibst.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Hilfe bei Labyrinth Programmierung. Spiele- und Multimedia-Programmierung 9
E Hilfe bei Highscore programmierung Spiele- und Multimedia-Programmierung 3
R Hilfe bei Snake-Programmierung Spiele- und Multimedia-Programmierung 6
M Hilfe bei Spiel Programmierung Spiele- und Multimedia-Programmierung 4
E Hilfe bei einer GUI Programmierung mit Graph Spiele- und Multimedia-Programmierung 30
Atten007 Minecraft Hilfe bei benutzerdefinierten Bannervorlagen in MCreator benötigt Spiele- und Multimedia-Programmierung 0
R Flappy Bird Hilfe Spiele- und Multimedia-Programmierung 1
Atten007 Minecraft Hilfe bei der Fehlerbehebung in MCreator benötigt Spiele- und Multimedia-Programmierung 1
Atten007 Minecraft Hilfe beim MCreator Plugin benötigt Spiele- und Multimedia-Programmierung 0
Atten007 Minecraft Hilfe beim MCreator Plugin benötigt Spiele- und Multimedia-Programmierung 5
A [HILFE] - Minecraft-Problem! Spiele- und Multimedia-Programmierung 1
JEP1 Hilfe bei Spiel Spiele- und Multimedia-Programmierung 1
J TreeNode erstellen [Hilfe beim Konstruktor, Zeile 16] Spiele- und Multimedia-Programmierung 2
Z Minecraft Hilfe bei Minecraft PvP Client Spiele- und Multimedia-Programmierung 21
T Hilfe beim Platzieren der Schiffe Spiele- und Multimedia-Programmierung 14
M Brauche Hilfe was zu Programmieren Spiele- und Multimedia-Programmierung 4
P Snake Java Hilfe Spiele- und Multimedia-Programmierung 4
RalleYTN Brauche Hilfe beim Einlesen von PNGs Spiele- und Multimedia-Programmierung 14
P Hilfe für Seminar Arbeit Spiele- und Multimedia-Programmierung 9
T Pong Hilfe bei einer Website Spiele- und Multimedia-Programmierung 4
T Hilfe bei decompilen von Plugin Spiele- und Multimedia-Programmierung 6
E Brauche Hilfe was soll ich tun Spiele- und Multimedia-Programmierung 7
B HILFE bei Spieleprogrammierung mit Slick2D Spiele- und Multimedia-Programmierung 9
S Würfelspiel; Hilfe Spiele- und Multimedia-Programmierung 3
M Hilfe bei vier gewinnt Spiele- und Multimedia-Programmierung 4
S Hilfe bei Java Gui Spiele- und Multimedia-Programmierung 2
C Visual Story programieren/hilfe Spiele- und Multimedia-Programmierung 5
L Hilfe: Moog VCF Diskretisierungs Algorithmen (Smith/Stilson u.A.) Spiele- und Multimedia-Programmierung 0
J Spielfiguren laufen lassen auf einer html Tabelle mit Hilfe von Servlets Spiele- und Multimedia-Programmierung 2
M Hilfe bei Snake Spiele- und Multimedia-Programmierung 4
T Hintergrundmusik eines Spiels mit Hilfe von JLayer Spiele- und Multimedia-Programmierung 12
S 2D mit Slick - Anfänger sucht Hilfe Spiele- und Multimedia-Programmierung 4
C Generelle Hilfe zur lwjgl Spiele- und Multimedia-Programmierung 0
J Hilfe bei Fußballmanager Spiele- und Multimedia-Programmierung 0
C Hilfe bei einem Mosaikspiel Spiele- und Multimedia-Programmierung 16
J Java Steuerberechnung hilfe Spiele- und Multimedia-Programmierung 17
U Hilfe bei Implementierung eines PointSounds in Java3D Spiele- und Multimedia-Programmierung 1
S Hilfe bei Spiel Spiele- und Multimedia-Programmierung 6
T Aim-Hilfe Spiele- und Multimedia-Programmierung 4
S Shiritori / word chain / Wörterkette Hilfe Spiele- und Multimedia-Programmierung 1
J Hilfe bei mastermind dringend !!!!! Spiele- und Multimedia-Programmierung 3
S Hilfe bei Spielumsetzung Spiele- und Multimedia-Programmierung 6
M Kleines Spongebobspiel / Hilfe gesucht Spiele- und Multimedia-Programmierung 2
L Hilfe bei Entities benötigt Spiele- und Multimedia-Programmierung 6
L Hilfe bei Klassendesign für Spiel Spiele- und Multimedia-Programmierung 2
A Minecraft Hilfe bei Minecraft Mod Spiele- und Multimedia-Programmierung 1
F Einen Sound mit veränderter Tonhöhe und Geschwindigkeit abspielen - Hilfe erbeten Spiele- und Multimedia-Programmierung 29
V Keine Ahnung von OpenGL! Hilfe wäre lieb! Spiele- und Multimedia-Programmierung 8
L Minecraft Minecraft Bukkit Plugin hilfe Spiele- und Multimedia-Programmierung 9
G Acht-Damen-Problem HILFE! Spiele- und Multimedia-Programmierung 11
B Hilfe bei Minecraft Plugin Spiele- und Multimedia-Programmierung 3
C Java Brauche Hilfe Spiele- und Multimedia-Programmierung 5
B Hilfe bei GameGrid Spiele- und Multimedia-Programmierung 11
J Spiel mit Java SWING, LWJGL und JMonkey [Anfänger braucht Hilfe] Spiele- und Multimedia-Programmierung 10
N Hilfe bei Tower Defense Spiele- und Multimedia-Programmierung 22
R hilfe bei 2DSpiel. Spiele- und Multimedia-Programmierung 3
S AirHockey Kollisionsprobleme, bitte um Hilfe Spiele- und Multimedia-Programmierung 2
L Abfrage-Fehler? - Hilfe bei Tetris Spiele- und Multimedia-Programmierung 9
R Hilfe bei Reversi/Othello Spiele- und Multimedia-Programmierung 6
J Hilfe: Rotation X und Y Achse (Java3d) Spiele- und Multimedia-Programmierung 12
B Hilfe bekomme den IF befehl nicht hin Spiele- und Multimedia-Programmierung 10
C RFID Überwachung - Hilfe Spiele- und Multimedia-Programmierung 3
javajavajava Java Lotto Zahl 6 aus 49 - Brauche Hilfe Spiele- und Multimedia-Programmierung 3
radiac FullScreenExlusiveMode HILFE!!! Spiele- und Multimedia-Programmierung 6
E TetrisApplet Thread Hilfe Spiele- und Multimedia-Programmierung 6
H PingPong HILFE !!! Spiele- und Multimedia-Programmierung 3
G GO-Spiel in Java noch fehlerhaft hoffe um hilfe Spiele- und Multimedia-Programmierung 7
N Brauche Hilfe bei kleinem Spiel Spiele- und Multimedia-Programmierung 40
N In einem Kasten springende Bälle programmieren...Hilfe Spiele- und Multimedia-Programmierung 7
L Brauche hilfe mit KeyEvent Spiele- und Multimedia-Programmierung 4
B brauche hilfe bei der tastenzuodnung Spiele- und Multimedia-Programmierung 3
H Decke zeichnen mit Hilfe eines Polygons Spiele- und Multimedia-Programmierung 2
W Hilfe bei Pong mit Bluej Spiele- und Multimedia-Programmierung 4
A Hilfe bei der Methode COLOR (Java) Spiele- und Multimedia-Programmierung 10
S Hilfe: Ich sehe durch die ganze Api's nicht mehr durch! Spiele- und Multimedia-Programmierung 15
N Hilfe bei snake Spiele- und Multimedia-Programmierung 37
C Hilfe bei einfachen Game Spiele- und Multimedia-Programmierung 15
T Bitte um Hilfe bei Animationen Spiele- und Multimedia-Programmierung 10
G Fragespiel, Hilfe ! like Wer wird Millinär Spiele- und Multimedia-Programmierung 12
D Hilfe mit mini-spiel für die Schule. Spiele- und Multimedia-Programmierung 1
F Brauche Hilfe bei Bewegung eines Rechtecks [Applet] Spiele- und Multimedia-Programmierung 5
G Hilfe bei 3Gewinnt! Spiele- und Multimedia-Programmierung 2
C anfänger braucht hilfe für info unterricht Spiele- und Multimedia-Programmierung 21
S Hilfe bei Galgenmännchen Spiele- und Multimedia-Programmierung 4
M 'Mensch ärgere Dich nicht' - Hilfe! Spiele- und Multimedia-Programmierung 12
K Hilfe bei Grafikeinbindung in einem Spiel Spiele- und Multimedia-Programmierung 6
H Ich benötige Hilfe [Noob] Spiele- und Multimedia-Programmierung 9
R Probleme mit Sound in Applikation. HILFE Spiele- und Multimedia-Programmierung 5
B Hilfe gesucht!! (bewegen von grafischen Objekten) Spiele- und Multimedia-Programmierung 3
P Objektorientierte Programmierung umwandeln! Spiele- und Multimedia-Programmierung 22
filtastisch Discord JDA Programmierung Spiele- und Multimedia-Programmierung 2
M Spiel Mühle-Programmierung Java Spiele- und Multimedia-Programmierung 9
Splayfer Discord JDA Programmierung Spiele- und Multimedia-Programmierung 3
F OpenGL (LWJGL) Shader Programmierung GLSL Spiele- und Multimedia-Programmierung 2
T Android-App-Programmierung? Spiele- und Multimedia-Programmierung 3
D Programmierung einer Tor-Anzeige Spiele- und Multimedia-Programmierung 8
J Wie kann ich die Programmierung von Konfiguratoren erlernen? Spiele- und Multimedia-Programmierung 2
E Programmierung eines 2.5D Point&Click Adventures ohne Spieleengine machbar? Spiele- und Multimedia-Programmierung 14
M Programmierung eines "Fantasy Rollenspiels" Spiele- und Multimedia-Programmierung 5
K Minecraft-Forge Mod Programmierung Spiele- und Multimedia-Programmierung 1

Ähnliche Java Themen

Neue Themen


Oben