Archief - [PROG]JAVA grafisch

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.

_DKsissor_

Legacy Member
ik probeer in java grafisch een dambord weer te geven maar ik blijf maar vastzitten op een error. dit is de code die ik al heb.
De error zegt dat er iets niet klopt met mijn methode toon maar kvind echt niet wat :(. Als iemand me kan helpen :)
bedankt

Code:
import bvp.*;
import java.awt.Color;
public class Dambord {
    public static void main(String[] args) {
    	
      	Figuren schijven = new Figuren("schijven.fig");
     	Figuren cijfers = new Figuren("cijfers32.fig");
     	Figuur basisFiguur = new Figuur(500,500);

basisFiguur.plaatsFiguur(cijfers.getFiguur("0").scaleer(
10,10), 0, 0);
    
    
   
        							
    
        int gridBreedte=schijven.getFiguur("vloer").getBreedte();
        int gridHoogte=schijven.getFiguur("vloer").getHoogte();
Figuur witteSchijf = schijven.getFiguur("witteschijf");		
Figuur zwarteSchijf = schijven.getFiguur("zwarteschijf");
Figuur witteDamSchijf = schijven.getFiguur("wittedamschijf");
Figuur zwarteDamSchijf = schijven.getFiguur("zwartedamschijf");
        
        for (int i=0; i<10;i++) {
            for (int j=0; j<10;j++) {
                if ((i+j)%2==0)
                    basisFiguur.plaatsFiguur(witteSchijf, i*gridBreedte, j*gridHoogte);
                else
                    basisFiguur.plaatsFiguur(zwarteSchijf, i*gridBreedte, j*gridHoogte);
            }
        }
      
        
        
  basisFiguur.toon(Figuur);
    }
    }

Tyfius

Legacy Member
Het kan redelijk handig zijn om ook de klasse Figuren te voorzien, meer specifiek de toon() methode. Daarnaast is ook de exacte foutmelding handig.

_DKsissor_

Legacy Member
mja tis opgelost:). kmoest nog een bord aanmaken waarop ik het toonde. Nu voert ie alles perfect uit , enkel krijgk gewoon een zwart vierkant ipv een dambord :p.
Hoe ik de klasse Figuur kan meegeven weet ik niet , zat in een bepaald grafisch paket waarmee we mochten werken op school.

_DKsissor_

Legacy Member
haha ja was zeer onduidelijke post van mij. :d Mijn projectje begint al wat te vorderen maar kzit nu nog met een klein probleem waar ik al een hele tijd over zit na te denken maar niet precies weet hoe ik het doe. De gebruiker geeft dus iets in van het volgende formaat " beginpositie(1-50)" spatie "X of -" spatie "eindpositie(1-50) . Hoe kan ik controleren dat de invoer juist is opgebouwd uit deze dingen als ik de invoer inlees als String. Kdacht eraan de String op te splitsen in drie delen en dan het eerste en laatste als integer te verwerken en het middelste met een iflus die vergelijkt met '-' en 'X' , maar ik weet niet precies hoe ik die String moet opsplitsen
Pieter

jodeman

Legacy Member
mjah, string inlezen

is zelfs simpeler dan je denkt. Doe gewoon met String.indexOf en check op 'x' en '-'. Dan doe je voor het eerste deel String.substring(0,pos-1) en String.substring(pos+1,String.length) en dan cast je beide dingen naar integer.

_DKsissor_

Legacy Member
maar die x en - hebben toch geen vaste positie als je soms met een getal met een cijfer werkt en soms met een getal met twee cijfers.

MilM

Legacy Member
je zoekt gewoon achter het "x" en "-" teken en op basis van de positie dat teruggegeven wordt, splits ge dan uw String op.

Deze methodes staan allemaal uitgelegd in de API bij String :)

_DKsissor_

Legacy Member
gelukt :) merci eh voor de hulp.
ik post hier nogal rap iets omdat op ons practicumforum gewoon niks gezegd wordt

Ice

Legacy Member
Doe ne match met een regular expression:
bv: [0-9]{1,2}\sx|-\s[0-9]{1,2}
wat wilt zeggen: 0 tot 9 1 of 2 keer, spatie, x of -, spatie, 0 tot 9 1 of 2 keer
Kan zijn dat dit niet 100% de syntax is die java nodig heeft, mor dat moet ge maar ff uitzoeken dan.

MilM

Legacy Member
Lussen? :p
De oplossing staat hier nochtans boven ze. (is wel van "0 tot pos" ipv "0 tot pos-1")

"Doe gewoon met String.indexOf en check op 'x' en '-'. Dan doe je voor het eerste deel String.substring(0,pos) en String.substring(pos+1,String.length) en dan cast je beide dingen naar integer."

Dus eerst indexOf gebruiken om te zoeken achter de positie van uw "-" en "X" en aan de hand van die waarde (=pos) uw String opsplitsen.
Daar komt geen lus bij te pas.

En vang je uw casten naar int's op ? (indien gebruiker iets fouts ingeeft)

Je kan eventueel ook met 3 combobox'en werken indien het niet verplicht met een string moet.

Ice

Legacy Member
Code:
private static final Pattern inputPattern = Pattern.compile("[0-9]{1,2}\\sx|-\\s[0-9]{1,2}");
public boolean isValidInput(String inputString) {
 Matcher m = inputPattern.matcher(inputString);
return m.matches();
}
Vergelijk dit eens met uw indexOf methodes + substring + casten en denkt dan nog eens na over wat het eenvoudigste is.

ps. Der zal wel iet mis zijn met dat regexp pattern, dunno 100% of het de juiste java syntax is.

N`Kr1pt

Legacy Member
killgore zei:
eens beter formatten en comments leren gebruiken :p.

de code moet voor zich spreken, commentaar moet ovrbodig zijn.
althans zo zegt men in het eXtreme Programming wereldje:

Intention is communicated directly in the code, not by commentary in the code.


niet dat ik zo een fan ben van XP

killgore

Legacy Member
ik ben tot op zekere hoogte fan van XP, maar daar ga ik totaal niet akkoord.

vb: Tech-code zonder commentaar is onleesbaar, om het even hoe je schrijft.

_DKsissor_

Legacy Member
kheb mijn code nu ook aangepast veel commentaar , lusjes mooi samenhorend getypt maar tis nog maar het eerste semester dat ik een programeertaal echt leer dusja is wat wennen om dat drek in een mooi jasje te steken.
Doe gewoon met String.indexOf en check op 'x' en '-'. Dan doe je voor het eerste deel String.substring(0,pos) en String.substring(pos+1,String.length) en dan cast je beide dingen naar integer."
das idd wel een slim idee :d zo ga ik het ffe aanpassen. :d
En het klopt wel dat ik alles nog wat moeilijk enzo doe maar ik ga pas als het af is het programma eenvoudiger schrijven.

Mijn programma kan nu zetten en slagen verwerken , als een pionnetje de achterste rij haalt wordt het een dam maar nu moet ik nog een formule voor de beweging van een dam zoeken :p. Ze hadden ons aangeraden een meerdimensionale tabel te gebruiken en nu snap ik waarom. Dan had ik mooi met coordinaten kunnen werken :p nu zit ik een array waar ik voor alles bijna een formule moet zoeken met nog eens zeer veel voorwaarden altijd , maarja een ezel zal zich wel geen twee keer aan dezelfde steen stoten :p

[edit: heeft er trouwens iemand een idee hoe je zou kunnen programeren dat slaan verplicht is, moet je dan heel je bord voor elke zet scannen als er twee schijven van een andere kleur tegen elkaar staan en zich erachter een leeg vakje bevindt , maar dat lijkt me nogal omslachtig.]

killgore

Legacy Member
rammsein zei:
[edit: heeft er trouwens iemand een idee hoe je zou kunnen programeren dat slaan verplicht is, moet je dan heel je bord voor elke zet scannen als er twee schijven van een andere kleur tegen elkaar staan en zich erachter een leeg vakje bevindt , maar dat lijkt me nogal omslachtig.]

Neen he, eigenlijk moet je pas achter elke zet scannen of door die zet een slagkans ontstaat & deze opslaan in een lijst :).

Bavo aka Joske

Legacy Member
Inderdaad, dan moet je enkel de veranderde situatie controleren.

[BAT] Hydra

Legacy Member
Je vragen zijn nog redelijk, maar let wel op dat je niet teveel gaat vragen aan anderen. Het is niet de eerste keer dat ze studenten 0 geven op hun practicum bvp omdat ze weten dat het practicum (gedeeltelijk) uitbesteed is aan andere personen...

_DKsissor_

Legacy Member
mja het is een proefpracticum en ik heb alle code op dit klein stukje van hierboven na zelf 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