Archief - Schaken in java

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

cuinhel

Legacy Member
Hoi,

Voor school heb ik gekozen om een schaakspel te maken in java. Ik ga geen AI maken, enkel het spel voor met 2 spelers te spelen.

Ik ben een beginner in java.

Momenteel heb ik mijn schaakbord en de verschillende schaakstukken erop staan. Deze stukken heb ik geplaatst door de vierkantjes een ander kleur te geven.

Nu wil ik deze stukken zichtbaar maken als foto's.

Het programma vindt u hier:
https://rapidshare.com/files/458157228/schaken.rar

Dit is gemaakt in bleuJ.

Zou iemand mij hiermee opweg kunnen helpen?

Alvast bedankt!

Martijn

Edit:

Misschien kan ik er ook beter bij zetten hoe ik het zelf zie.

Ik wil ipv die vierkantjes te foto's van mijn stukken, dus moet ik deze ergens inladen. Dit wil ik aan de hand van een bestand doen, dus dan moet ik bij men spel dat bestand stoppen (waar?) en moet ik deze een lokatie geven( computer/c:/schaken.... iets in die aard).
Hoe doe ik dat? En als dit spel dan op een andere locatie wordt gezet, dan werkt het waarschijnlijk niet meer.

Dan heb ik denk ik ook 2 soorten foto's nodig van elk stuk, 1 met de gekleurde achtergrond en 1 met de witte? Of kan ik de achtergrond van een foto onzichtbaar maken?

Kunnen jullie de code zien als ik hem zo upload op rapidshare?

MilM

Legacy Member
Heb de code niet bekeken, maar je zet gewoon alle images in een subdirectory van de main directory en je gebruikt het relatieve path.

Indien die persoon dan de main directory verzet, geeft dat geen enkel probleem.
Je kunt het path opvragen van de klasse en van daaruit gaan werken om een ander relatief path te vinden.

Welke images heb je?

Enkel één zwart icoontje + één wit icoontje en 6 icoontjes voor de stukken?
Of heb je bijvoorbeeld een icoontje van de witte koningin met zowel zwarte als witte achtergrond en de zwarte koning met zowel witte als zwarte achtergrond (= 4 icoontjes)?

Volgens mij is dat laatste het gemakkelijkste. Je hebt bijvoorbeeld een 2D tabel met daarin de stukken en aan de hand van die tabel vul je gewoon uw panel met de juiste icoontjes op de specifieke posities.

EDIT op uw edit: dat zal dus inderdaad het gemakkelijkste zijn.

cuinhel

Legacy Member
Ik heb de images in een subdirectory gezet en een class getImages aangemaakt.
update:

https://rapidshare.com/files/458175522/schaken.rar

Hoe roep ik nu die images hierin op?

die tabel heb ik al, die staat ergens in men lvl
public Level()
{
rooster = new Schaakstuk[8][8];
rooster[1][0] = new Pion();
rooster[1][1] = new Pion();
rooster[1][2] = new Pion();
rooster[1][3] = new Pion();
rooster[1][4] = new Pion();
rooster[1][5] = new Pion();
rooster[1][6] = new Pion();
rooster[1][7] = new Pion();
rooster[6][0] = new Pion();
rooster[6][1] = new Pion();
rooster[6][2] = new Pion();
rooster[6][3] = new Pion();
rooster[6][4] = new Pion();
rooster[6][5] = new Pion();
rooster[6][6] = new Pion();
rooster[6][7] = new Pion();
rooster[0][0] = new Toren();
rooster[0][1] = new Loper();
rooster[0][2] = new Paard();
rooster[0][3] = new Koningin();
rooster[0][4] = new Koning();
rooster[0][5] = new Paard();
rooster[0][6] = new Loper();
rooster[0][7] = new Toren();
rooster[7][0] = new Toren();
rooster[7][1] = new Loper();
rooster[7][2] = new Paard();
rooster[7][3] = new Koning();
rooster[7][4] = new Koningin();
rooster[7][5] = new Paard();
rooster[7][6] = new Loper();
rooster[7][7] = new Toren();
}

de achtergrond teken ik dan in het View en daarna teken ik de stukken in het View:

private void paintStukken (Graphics g2) // hier wil ik de stukken tekennen
{


for (int i=0; i<8;i++)
{
for (int j=0; j<8;j++)
{
int x = breedte/2 + i*breedte;
int y = breedte/2+ j*breedte;
Schaakstuk vw = l.getSchaakstuk(i,j);
if (vw instanceof Pion)
{
g2.setColor(Color.BLACK);
g2.fillRect(x,y,breedte,breedte);
}
else if (vw instanceof Toren)
{
g2.setColor(Color.BLUE);
g2.fillRect(x,y, breedte, breedte);
}
else if (vw instanceof Loper)
{
g2.setColor(Color.GREEN);
g2.fillRect(x,y,breedte,breedte);
}
else if (vw instanceof Paard)
{
g2.setColor(Color.ORANGE);
g2.fillRect(x,y,breedte,breedte);
}
else if (vw instanceof Koningin)
{
g2.setColor(Color.WHITE);
g2.fillRect(x,y,breedte,breedte);
}
else if (vw instanceof Koning)
{
g2.setColor(Color.BLACK);
g2.fillOval(x,y,breedte,breedte);
}
}
}
}

cuinhel

Legacy Member
ja dat snap ik dus niet, ik zie daar nergens bij staan hoe ze dat inladen van de bestandsmap.

En moet ik deze verschillende images dan in getters zetten? Welke voorwaarde moet ik deze getters meegeven? void? maarja als ik void zeg geven ze zeker niks terug terwijl ze een img moeten teruggeven.

Image img = getImage(

staat mijn afbeelding dan in img?

wat bedoelen ze hiermee?

Image img = getImage(getCodeBase(),"anImage.gif");

where the Applet class method getCodeBase() provides the URL for the location of the applet's class file. The file name in the second argument is appended to this URL. (See Chapter 13 for information about the java.net.URL class.)

cuinhel

Legacy Member
met getters bedoel ik iets gelijk dit:

public int getPunten() {
return punten;
}

(dit is natuurlijk een getter voor iets anders)

zodat ik dan in mijn view kan zeggen
bv
getImages.getImagePion();

dat hij dan de img geeft.

en dan teken die image kan zeggen op de juiste coordinaten en de juiste grootte xD

alvast bedankt voor de hulp !

Wolf2000me

Legacy Member
Zorg dat je je classes altijd met een hoofdletter doet beginnen. Hernoem dus je getImages class naar iets zoals "ImageRetriever".

Verder is het bad practice van je images (en ook andere resources) als subdirectory van je code te plaatsen. Die horen thuis in een resources directory. Hier bestaan tal van standaarden voor, waarvan de meest gebruikte de "Maven standard". Deze luidt als volgt:

Code:
<Project>
- src
   - main
      - java ---> Package structuur met java files
      - resources --> allerhande resources zoals images (zorg ook voor dir structure)

Zie:

need help to find the right path to images (Ant, Maven and Build Tools forum at JavaRanch)

Je zal dit ongetwijfeld niet van de eerste keer goed krijgen. Dat is dan meestal veroorzaakt omwille van een classpath issue (resources niet op het classpath) of een fout in je relatief path.

Welke IDE gebruik je? Eclipse, IntelliJ Community, ... ?

cuinhel

Legacy Member
maar ik snap nu toch nog altijd niet hoe ik die images erin geladen krijg :D

cuinhel

Legacy Member
ik heb het geprobeerd in apparte mappen te zetten maar nu heb ik een bleuj kadertje dat het aan het opstarten is dat niet weg gaat :D

NeverwinterX

Legacy Member
Probeer het eerst maar eens aan de praat te krijgen zonder het in zo'n resource folder te steken. Hoe het met zo'n resource folder in BlueJ zit, zul je moeten opzoeken.

cuinhel zei:
ja dat snap ik dus niet, ik zie daar nergens bij staan hoe ze dat inladen van de bestandsmap.

En moet ik deze verschillende images dan in getters zetten? Welke voorwaarde moet ik deze getters meegeven? void? maarja als ik void zeg geven ze zeker niks terug terwijl ze een img moeten teruggeven.

Image img = getImage(

staat mijn afbeelding dan in img?

wat bedoelen ze hiermee?

Image img = getImage(getCodeBase(),"anImage.gif");

where the Applet class method getCodeBase() provides the URL for the location of the applet's class file. The file name in the second argument is appended to this URL. (See Chapter 13 for information about the java.net.URL class.)

Dat is voor als je een applet maakt. Lees de hele tekst. Er staat duidelijk wat je moet doen. Bekijk desnoods nog eens de API van de gebruikte java klassen: http://download.oracle.com/javase/6/docs/api/

Wolf2000me

Legacy Member
Zie stuk uit de code die ik eerder aanhaalde.

Code:
private static final String CAMINHO_ICONE = "/img/criarLancamento.png"; //(1)

...
private JFrame getJFrame() {   
        if (jFrame == null) {   
            jFrame = new JFrame();   
            jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   
            jFrame.setSize(COMPRIMENTO, LARGURA);   
            jFrame.setContentPane(getJContentPane());   
            jFrame.setTitle("Teste");   
  
            Image imagem = ImageUtil.create(CAMINHO_ICONE);  //(2) 
            jFrame.setIconImage(imagem);   
        }   
    return jFrame;   
    }

en

Code:
public class ImageUtil {   
   public static Image create(String caminho) {   
      java.net.URL imageURL = ImageUtil.class.getResource(caminho);   
      if (imageURL == null) {   
      System.err.println("ficheiro não encontrado: " + caminho);   
         return null;   
    }   
      return new ImageIcon(imageURL).getImage();   
   }   
  
      public static ImageIcon createImageIcon(String caminho) {  //(3) 
         java.net.URL imageURL = ImageUtil.class.getResource(caminho);   
         if (imageURL == null) {   
         System.err.println("ficheiro não encontrado: " + caminho);   
            return null;   
    }   
         return new ImageIcon(imageURL);   
   }   
}

1. relatief path naar de image. Voor jou moet dit "/schaakstukken/image.bmp" zijn. Maar of dit nu in resources of in java staat, dit path blijft hetzelfde.

2. method call van de specifieke class die zoals bij jou de image gaat ophalen en teruggeven als Image object. Dit gaat een subclass zijn van Image want java.awt.Image is abstract.

3. Deze class en method gaat een URL object van je Image maken. Jij kan dit doen:
"Image image = Toolkit.getDefaultToolkit().getImage(url); "


Maar je leert dus wel meer bij moest je dit allemaal zelf uit de link hebben gehaald die ik je gaf.

Let wel dat dit in een "static" context gebeurt. Wanneer je dit niet static wil doen dan doe je ipv:
"ImageUtil.class.getResource(caminho);"
"getClass().getResource(caminho);"

Al werkt het eerste waarschijnlijk ook wel.

Programmeren is 30% redeneren en 70% transpireren ;)


edit:
Ik zou een java beginner nooit aanraden van met rare tools te werken zoals die "BlueJ". Ik ben al jaren programmeur en ik had hier nog nooit eerder van gehoord. Dat wil iets zeggen in de open source java wereld.

Gebruik IntelliJ Community of Eclipse en laat het bluej pionierschap maar aan een ander :D ;)

cuinhel

Legacy Member
nja ik heb het iets anders gedaan denk ik, maar het is nu wel een boelletje geworde denk ik

private void paintStukken (Graphics g2) // hier wil ik de stukken tekennen
{


for (int i=0; i<8;i++)
{
for (int j=0; j<8;j++)
{
int x = breedte/2 + i*breedte;
int y = breedte/2+ j*breedte;
Schaakstuk vw = l.getSchaakstuk(i,j);
if (vw instanceof Pion)
{
if ((i+j)%2 ==0)
{
Image image = Toolkit.getDefaultToolkit().getImage("PionRood.jpg");
g2.drawImage(image, x, y, breedte,breedte , null);
}
else
{
Image image = Toolkit.getDefaultToolkit().getImage("PionWit.jpg");
g2.drawImage(image, x, y, breedte,breedte , null);
}
}
else if (vw instanceof Toren)
{
if ((i+j)%2 ==0)
{
Image image = Toolkit.getDefaultToolkit().getImage("TorenRood.jpg");
g2.drawImage(image, x, y, breedte,breedte , null);
}
else
{
Image image = Toolkit.getDefaultToolkit().getImage("TorenWit.jpg");
g2.drawImage(image, x, y, breedte,breedte , null);
}
}
else if (vw instanceof Loper)
{
if ((i+j)%2 ==0)
{
Image image = Toolkit.getDefaultToolkit().getImage("LoperRood.jpg");
g2.drawImage(image, x, y, breedte,breedte , null);
}
else
{
Image image = Toolkit.getDefaultToolkit().getImage("LoperWit.jpg");
g2.drawImage(image, x, y, breedte,breedte , null);
}
}
else if (vw instanceof Paard)
{
if ((i+j)%2 ==0)
{
Image image = Toolkit.getDefaultToolkit().getImage("PaardRood.jpg");
g2.drawImage(image, x, y, breedte,breedte , null);
}
else
{
Image image = Toolkit.getDefaultToolkit().getImage("PaardWit.jpg");
g2.drawImage(image, x, y, breedte,breedte , null);
}
}
else if (vw instanceof Koningin)
{
if ((i+j)%2 ==0)
{
Image image = Toolkit.getDefaultToolkit().getImage("KoninginRood.jpg");
g2.drawImage(image, x, y, breedte,breedte , null);
}
else
{
Image image = Toolkit.getDefaultToolkit().getImage("KoninginWit.jpg");
g2.drawImage(image, x, y, breedte,breedte , null);
}
}
else if (vw instanceof Koning)
{
if ((i+j)%2 ==0)
{
Image image = Toolkit.getDefaultToolkit().getImage("KoningRood.jpg");
g2.drawImage(image, x, y, breedte,breedte , null);
}
else
{
Image image = Toolkit.getDefaultToolkit().getImage("KoningWit.jpg");
g2.drawImage(image, x, y, breedte,breedte , null);
}
}
else if (vw instanceof PionW)
{
if ((i+j)%2 ==0)
{
Image image = Toolkit.getDefaultToolkit().getImage("PionRoodZ.jpg");
g2.drawImage(image, x, y, breedte,breedte , null);
}
else
{
Image image = Toolkit.getDefaultToolkit().getImage("PionWitZ.jpg");
g2.drawImage(image, x, y, breedte,breedte , null);
}
}
else if (vw instanceof TorenW)
{
if ((i+j)%2 ==0)
{
Image image = Toolkit.getDefaultToolkit().getImage("TorenRoodZ.jpg");
g2.drawImage(image, x, y, breedte,breedte , null);
}
else
{
Image image = Toolkit.getDefaultToolkit().getImage("TorenWitZ.jpg");
g2.drawImage(image, x, y, breedte,breedte , null);
}
}
else if (vw instanceof PaardW)
{
if ((i+j)%2 ==0)
{
Image image = Toolkit.getDefaultToolkit().getImage("PaardRoodZ.jpg");
g2.drawImage(image, x, y, breedte,breedte , null);
}
else
{
Image image = Toolkit.getDefaultToolkit().getImage("PaardWitZ.jpg");
g2.drawImage(image, x, y, breedte,breedte , null);
}
}
else if (vw instanceof KoningW)
{
if ((i+j)%2 ==0)
{
Image image = Toolkit.getDefaultToolkit().getImage("KoningRoodZ.jpg");
g2.drawImage(image, x, y, breedte,breedte , null);
}
else
{
Image image = Toolkit.getDefaultToolkit().getImage("KoningWitZ.jpg");
g2.drawImage(image, x, y, breedte,breedte , null);
}
}
else if (vw instanceof KoninginW)
{
if ((i+j)%2 ==0)
{
Image image = Toolkit.getDefaultToolkit().getImage("KoninginRoodZ.jpg");
g2.drawImage(image, x, y, breedte,breedte , null);
}
else
{
Image image = Toolkit.getDefaultToolkit().getImage("KoninginWitZ.jpg");
g2.drawImage(image, x, y, breedte,breedte , null);
}
}
else if (vw instanceof LoperW)
{
if ((i+j)%2 ==0)
{
Image image = Toolkit.getDefaultToolkit().getImage("LoperRoodZ.jpg");
g2.drawImage(image, x, y, breedte,breedte , null);
}
else
{
Image image = Toolkit.getDefaultToolkit().getImage("LoperWitZ.jpg");
g2.drawImage(image, x, y, breedte,breedte , null);
}
}
}
}
}


het werkt wel

MilM

Legacy Member
Het is inderdaad een boeltje ;)

Ergens moet je beslissen in hoeverre je korte code wilt of iets langere (meer class gericht), maar dit is wat overdreven.

Zeer korte code kan bijvoorbeeld het volgende zijn:
  1. Je maakt een 2D tabel zoals je al hebt
  2. In uw 2d tabel steek je nummers. 0 = leeg veld, 1 = zwarte pion, 2 = zwart paard, 3 = zwarte loper, ..., 7 = witte pion, 8 = ...
  3. En nu maak je een simpele dubbele for lus die gewoon op elke positie de image aanmaakt. Je kan bijvoorbeeld W = witte achtergrond nemen en Z = zwarte achtergrond nemen en als tabel[2][3] = 2, dan weet je dat het een witte achtergrond is (3de rij, 4de kolom is altijd wit) en dat je dus image '2W' moet inladen (image 2W is dan een zwart paard op een witte achtergrond)

Sowieso moeten die if/else lussen gewoon allemaal weg.

Van bovenstaande stappen die ik gegeven heb, kun je bijvoorbeeld ook in plaats van een tabel met int's een tabel van uw eigen klasse maken.

ipv dat er dan op positie [2][3] een 2 staat, heb je een instantie van een eigen klasse waarop je bijvoorbeeld met een getter de naam opvraagt van het stuk (= 'paard') en de kleur van het stuk (='zwart') en je zo dus bijvoorbeeld image 'ZwartPaardOpWit' gaat inladen.

In dat geval kun je met betekenisvolle namen werken voor de images.

Een eigen klasse aanmaken voor elk stuk zou ik sowieso niet doen.
Ik zou gewoon één klasse 'Stuk' (of 'Piece' of 'Schaakstuk' of 'ChessPiece') aanmaken met daar gewoon een variabale voor welk stuk het is en welke kleur.

Dat is voldoende en het properste in mijn ogen.

Arboris

Legacy Member
(ik heb geen code bekeken, dus wat volgt kan helemaal naast de kwestie zijn)

En zou je dan het gedrag van de verschillende stukken ergens anders steken? Bijvoorbeeld een controle of een zet wel correct is.
Misschien dat het wel handig is om de verschillende classes (toren/pion/...) te laten overerven van 'Stuk' (met een abstract method in 'controleerMove' ofzoiets), maar ik zou zeker een aparte implementatie maken voor ieder verschillend type van stuk.

cuinhel

Legacy Member
Ik zal proberen het wat fatsoenlijker te maken en bedankt voor de tips.
Dan zal ik straks een update geven ;).

Wat ik nu heb is 1 hoofdstuk (schaakstukken) en dan alle andere stukken die daar van erven. Maar ik heb de zwarte stukken en witte stukken appart, dus ik heb een koningzwart en een koningwit.

Dit moet dan dus niet?

@ Aboris
dit heb ik al ;) maar zetten komen later. Eerst proberen alles tegoei zichtbaar te krijgen.

cuinhel

Legacy Member
in mijn level staat dit:

rooster = new Schaakstuk[8][8];
rooster[1][0] = new PionW();
rooster[1][1] = new PionW();
rooster[1][2] = new PionW();
rooster[1][3] = new PionW();
rooster[1][4] = new PionW();
rooster[1][5] = new PionW();
rooster[1][6] = new PionW();
rooster[1][7] = new PionW();
rooster[6][0] = new Pion();
rooster[6][1] = new Pion();
rooster[6][2] = new Pion();
rooster[6][3] = new Pion();
rooster[6][4] = new Pion();
rooster[6][5] = new Pion();
rooster[6][6] = new Pion();
rooster[6][7] = new Pion();
rooster[0][0] = new TorenW();
rooster[0][1] = new LoperW();
rooster[0][2] = new PaardW();
rooster[0][3] = new KoninginW();
rooster[0][4] = new KoningW();
rooster[0][5] = new PaardW();
rooster[0][6] = new LoperW();
rooster[0][7] = new TorenW();
rooster[7][0] = new Toren();
rooster[7][1] = new Loper();
rooster[7][2] = new Paard();
rooster[7][3] = new Koning();
rooster[7][4] = new Koningin();
rooster[7][5] = new Paard();
rooster[7][6] = new Loper();
rooster[7][7] = new Toren();

Maar dan heb ik ook voor elk zwart stuk een class nodig en voor elk wit.

kan ik dit ook zo doen?

rooster = new Schaakstuk[8][8];
rooster[1][0] = new Pion(1);
rooster[1][1] = new Pion(1);
rooster[1][2] = new Pion(1);
rooster[1][3] = new Pion(1);
rooster[1][4] = new Pion(1);
rooster[1][5] = new Pion(1);
rooster[1][6] = new Pion(1);
rooster[1][7] = new Pion(1);
rooster[6][0] = new Pion(2);
rooster[6][1] = new Pion(2);
rooster[6][2] = new Pion(2);
rooster[6][3] = new Pion(2);
rooster[6][4] = new Pion(2);
rooster[6][5] = new Pion(2);
rooster[6][6] = new Pion(2);
rooster[6][7] = new Pion(2);
rooster[0][0] = new Toren(1);
rooster[0][1] = new Loper(1);
rooster[0][2] = new Paard(1);
rooster[0][3] = new Koningin(1);
rooster[0][4] = new Koning(1);
rooster[0][5] = new Paard(1);
rooster[0][6] = new Loper(1);
rooster[0][7] = new Toren(1);
rooster[7][0] = new Toren(2);
rooster[7][1] = new Loper(2);
rooster[7][2] = new Paard(2);
rooster[7][3] = new Koning(2);
rooster[7][4] = new Koningin(2);
rooster[7][5] = new Paard(2);
rooster[7][6] = new Loper(2);
rooster[7][7] = new Toren(2);

cuinhel

Legacy Member
MilM zei:
Een eigen klasse aanmaken voor elk stuk zou ik sowieso niet doen.
Ik zou gewoon één klasse 'Stuk' (of 'Piece' of 'Schaakstuk' of 'ChessPiece') aanmaken met daar gewoon een variabale voor welk stuk het is en welke kleur.

Dat is voldoende en het properste in mijn ogen.

Hoe zou dat dan werken? Je moet toch de getters enz aanpassen als het andere stukken zijn, dit doe je dan toch in andere classen?

cuinhel

Legacy Member
MilM zei:
Het is inderdaad een boeltje ;)

Ergens moet je beslissen in hoeverre je korte code wilt of iets langere (meer class gericht), maar dit is wat overdreven.

Zeer korte code kan bijvoorbeeld het volgende zijn:
  1. Je maakt een 2D tabel zoals je al hebt
  2. In uw 2d tabel steek je nummers. 0 = leeg veld, 1 = zwarte pion, 2 = zwart paard, 3 = zwarte loper, ..., 7 = witte pion, 8 = ...
  3. En nu maak je een simpele dubbele for lus die gewoon op elke positie de image aanmaakt. Je kan bijvoorbeeld W = witte achtergrond nemen en Z = zwarte achtergrond nemen en als tabel[2][3] = 2, dan weet je dat het een witte achtergrond is (3de rij, 4de kolom is altijd wit) en dat je dus image '2W' moet inladen (image 2W is dan een zwart paard op een witte achtergrond)



Dat is voldoende en het properste in mijn ogen.

Dit begrijp ik toch ook niet zo goed. Als ik vraag wat er staat, moet ik daarna toch nogaltijd vragen wat het is, dus dan moet daar weer een if (vw instanceof ...) komen te staan, en daarin moet ik dan afvragen als het een 1 of 2 is qua variabele ( speler 1 of 2) wat hij heeft meegekregen. En dan moet ik nog afvragen als hij een witte of een rode achtergrond heeft.

Dus dan wordt het nog een redelijk lange code, en een soep.

cuinhel

Legacy Member
als ik het goed begrijp moet het dan zo:

private void paintStukken (Graphics g2) // hier wil ik de stukken tekennen
{


for (int i=0; i<8;i++)
{
for (int j=0; j<8;j++)
{
int x = breedte/2 + i*breedte;
int y = breedte/2+ j*breedte;
Schaakstuk vw = l.getSchaakstuk(i,j);
hier moet ik dan de speler opvragen, maar dit is voor iedere classe verschillend?
if ((i+j)%2 ==0)
{
Image image = Toolkit.getDefaultToolkit().getImage("hier moet dan het schaakstuk+welkespeler+welkeachtergrond in komen te staan?");
g2.drawImage(image, x, y, breedte,breedte , null);
}
else
{
Image image = Toolkit.getDefaultToolkit().getImage("hier moet dan het schaakstuk+welkespeler+welkeachtergrond in komen te staan?");
g2.drawImage(image, x, y, breedte,breedte , null);
}


}
}
}

Maar ik weet dus niet wat ik dan moet zetten op de stukken waar ik tekst heb geschreven.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan