4 gewinnt

_schneggal_06

Grünschnabel
Hy!
Hab ein Spielbrett mit einem Array für 4 gewinnt gezeichnet (8x8). Dieses besteht nun aus 64 grafiken.
leider hab ich nun auch schon das erste Problem:
Eine Anforderung ist, dass das Spielbrett skalierbar sein muss....
Das Problem ist nun dass wenn ich es wie unten mit getWidth und getHeight mache, es mir jede einzelne Grafik skaliert
und nicht das fertig gezeichnete Spielbrett.
Könnt ihr mir bitte helfen, wie ich das lösen kann?

Code:
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
g.drawImage(play, posX, posY, (int) this.getSize().getWidth(), (int) this.getSize().getHeight(), null);
posX=posX+50;
}
posX=0;
posY=posY+50;
}
 
Hallo,

wenn dein Spielfeld 8X8 groß ist, wäre es doch sinnvoll, die Größe der einzelnen Bilder auf 1/8 der Größe des Spielfeldes zu setzen.

Ich schätze mal getWitdh bzw getHeight gibt dir die Größe des Spielfeldes. Dann solltest du diese durch 8 teilen.

Code:
getWitdh/8
bzw
Code:
getHeight/8

Gruß

Sascha
 
Da musst du schon etwas mehr Code zeigen. Oder zumindest erklären wie du es umgesetzt hast.

Grob gesagt, wird die Größe des Spielfeldes verändert und die Felder passen sich dementsprechend an.

Gruß

Sascha
 
Wenn ich das richtig sehe ist dein Problem, dass du die Images immer zum gleichen Abstand (50) zueinander plazierst, wodurch es kommt, dass sie sich überschneiden und Platz zum Rand übrig lassen... Statt diesen 50 solltest du auch einen Wert nehmen, der von der Größe des Fensters abhängig ist.
 
naja bin ja wie gesagt erst am Anfang...

Das alles ist im NetBeans programmiert.
ich habe ein JPanel und ein JFrame.

würde das Spielbrett aus einer Grafik bestehen, dann geht das mitn skalieren auch:
Code:
g.drawImage(game, posX, posY, (int) this.getSize().getWidth(), (int) this.getSize().getHeight(),null);
(siehe erste Grafik)

hab ich nun aber 64 einzelne felder (Grafik 2) und lege sie mittels Array an (ist laut dem Professor für ein weiterarbeiten sinnvoller)
kann ich das ganze nicht skalieren. (code oben)

gibs da a lösung oder tappe ich total im dunkeln?
 

Anhänge

  • game.jpg
    game.jpg
    123,4 KB · Aufrufe: 17
  • empthy.jpg
    empthy.jpg
    12,8 KB · Aufrufe: 273
Wenn ich das richtig sehe ist dein Problem, dass du die Images immer zum gleichen Abstand (50) zueinander plazierst, wodurch es kommt, dass sie sich überschneiden und Platz zum Rand übrig lassen... Statt diesen 50 solltest du auch einen Wert nehmen, der von der Größe des Fensters abhängig ist.


hast du auch eine Idee wie?
so funktionierts auch net:(
Code:
posX=posX+play.getWidth(this);posY=posY+play.getHeight(this);
 
Die Position ermittelst du ganz einfach.

Code:
int fieldWitdh = (int) this.getSize().getWidth()/8;
int fieldHeight =  (int) this.getSize().getHeight()/8;
int posX = 0;
int posY = 0;
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
g.drawImage(play, posX, posY, fieldWidth, fieldHeight, null);
posX=posX+ fieldWidth;
}
posX=0;
posY=posY+ fieldHeight;
}
 
Zurück