Archief - Spelbord in Gui (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.

Linus41

Legacy Member
Als project hebben wij een rpg ontwikkeld. Nu is al oze code af alleen moeten we ons spelbord in de gui afprinten. Dit werkt niet goed. Ons spelbord bestaat uit een lijst van vakken. Kan iemand ons helpen??
Dit is de code van ons spelbord..

De gui wordt in een apparte klasse aangemaakt..(Java Swing)
package Domein.DomeinModel.Domein;

import java.util.ArrayList;
import java.util.List;


public class Spelbord {
private Personage p;
private Vak[][] bord;
private int dimensiex;
private int dimensiey;
private int eindpositieX;
private int eindpositieY;
private int startpositieX;
private int startpositieY;
private Categorie categorie;
private ArrayList<Personage> tegenstanders = new ArrayList<Personage>();


public Spelbord(String spelbordnaam, int dx, int dy,int startpositieX,int startpositieY,int eindpositieX,int eindpositieY) {

dimensiex = dx;
dimensiey = dy;
this.startpositieX=startpositieX;
this.startpositieY=startpositieY;
this.eindpositieX=eindpositieX;
this.eindpositieY=eindpositieY;

bord = new Vak[dimensiex][dimensiey];


for (int i = 0; i < dimensiex; i++) {

for (int j = 0; j < dimensiey; j++) {

bord[j] = new Vak(i, j);

}
}

}

public Vak[][] getSpelBord() {

return bord;
}
public int getStartpositieX() {
return startpositieX;
}

public void setStartpositieX(int startpositieX) {
this.startpositieX = startpositieX;
}

public int getStartpositieY() {
return startpositieY;
}

public void setStartpositieY(int startpositieY) {
this.startpositieY = startpositieY;
}

public String toString() {
String result = "";

for (int y = 0; y < dimensiex ; y++) {
for (int x = 0; x < dimensiey; x++) {
result = result + bord[x][y].toString();
}
result = result + "\n";
}

return result;

}
public Vak getVak(int x, int y){
return bord[x][y];

}

public boolean isVakVrij(Vak vakToCheck){

boolean res= false;

if (vakToCheck.toString() == "[ ]"){
res=true;
}
else { res = false; }
return res;

}
public boolean isGeldigeZet(Vak vakToCheck, Personage p){
boolean res= true;

int x = p.getVak().getX();
int y = p.getVak().getY();
int xv = Math.abs(x - vakToCheck.getX());
int yv = Math.abs(y - vakToCheck.getY());

//Verticaal
if((yv > 1)&&(y<dimensiey-1)){
res = false;
}
//Horizontaal
if ((xv > 1 )&&(x<dimensiex-1)) {
res = false;
}
//Schuin
if (xv == 1 && yv == 1) {
res = false;
}
return res;
}



public List<Personage> geefBeschikbareTegenstander(Personage p){
int x = p.getVak().getX();
int y = p.getVak().getY();

if(bord[x+1][y].getPersonage() != null)
tegenstanders.add(bord[x+1][y].getPersonage());

if(bord[x-1][y].getPersonage() != null)
tegenstanders.add(bord[x-1][y].getPersonage());

if(bord[x][y+1].getPersonage() != null)
tegenstanders.add(bord[x][y+1].getPersonage());

if(bord[x][y-1].getPersonage() != null)
tegenstanders.add(bord[x][y-1].getPersonage());

return tegenstanders;

}

public void setVak(){
this.setVak();
}

public int getEindpositieX() {
return eindpositieX;
}

public void setEindpositieX(int eindpositieX) {
this.eindpositieX = eindpositieX;
}

public int getEindpositieY() {
return eindpositieY;
}

public void setEindpositieY(int eindpositieY) {
this.eindpositieY = eindpositieY;
}


public Categorie getCategorie() {
return categorie;
}

public void setCategorie(Categorie categorie) {
this.categorie = categorie;
}



}

Arboris

Legacy Member
Je hebt nog geen spelbord, maar toch is de rest van de code er al? Mooi; is een volgorde die ik nooit zou kunnen volhouden :D (als je iteratief werkt, kan je bv eerst ervoor zorgen dat het spelbord op zich werkt; als dat klaar is, kijken of je een manneke kan plaatsen en verplaatsen; en om af te werken dan de vijanden nog implementeren.

Maar daar ging het hier niet over :)

Probeer de volgende link eens door te pluizen :)
Trail: Creating a GUI With JFC/Swing (The Java™ Tutorials)
Voorbeeld van een schaakbord:
Chess Application In Java Swing

En dan gewoon, voor de sport, enkele opmerkingen:
* package namen altijd volledig in kleine letter (geen camelcase, niet starten met hoofdletter)
*
Code:
String result = "";

for (int y = 0; y < dimensiex ; y++) {
for (int x = 0; x < dimensiey; x++) {
result = result + bord[x][y].toString();
}
result = result + "\n";
StringBuffer gebruiken -> beter voor memory gebruik (niet echt nodig, wel properder). (Strings volgen niet de gebruikelijke regels voor objecten ivm memory)
* vakToCheck.toString() == "[ ]"
Bedoel je niet "[ ]".equals(vakToCheck.toString()) ?
Waarom? 1. volgorde -> nullpointersafe (mss niet echt nodig, maar is een goeie gewoonte); 2. Objecten vergelijk je met .equals! (What is the difference between == and .equals() ? (all objects; java)? - Yahoo! Answers

Linus41

Legacy Member
ons spelbord bestaat wel al in console versie. Nu doen we gui...:p
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