BlueJ , Gokspel , Dobbelsteen

Status
Niet open voor verdere reacties.

ikke123321

Gebruiker
Lid geworden
19 okt 2007
Berichten
5
Hallo , ik zit vast met een probleem en eigenlijk snap ik er ook niet veel van , kan iemand mij helpen. Het zit zo : Ik heb 2 klassen gemaakt , 1ste noemt dobbelsteen en daar moet gewoon één keer kunnen werpen en resultaten zien en bij de 2de noemt ik Gokspel en bij gokspel moet er drie dobbelstenen gegooid worden en de resultaat laten zien.
Als alle 3 dobbelstenen gelijk aan mekaar zijn dan wint u 100 euro , als twee dobbelstenen gelijk aan mekaar zijn dan wint u 10 euro , en als drie dobbelstenen een straat vorme daarmee bedoel ik bv. 4 5 6 of 2 3 4 dan wint ge 50 euro. ik zal jullie nu mijn code laten zien , kan jullie mij erop wijzen wat ik fout gedaan had.
public class Dobbelsteen
{
private int aantal;
public Dobbelsteen()
{

}
public void gooi(){
aantal = (int)(1 + Math.random() * 6);

}
public int getAantal(){
return aantal;
}
}
public class Gokspel
{
private int dobbelsteen1;
private int dobbelsteen2;
private int dobbelsteen3;
private int worp1=0;
private int worp2=0;
private int worp3=0;
private Dobbelsteen dobbel1;
private Dobbelsteen dobbel2;
private Dobbelsteen dobbel3;
public Gokspel()
{

}

public String Speel()
{
dobbel1.gooi();
dobbel2.gooi();
dobbel3.gooi();

worp1 = dobbel1.getAantal();
worp2 = dobbel2.getAantal();
worp3 = dobbel3.getAantal();


return ( "U heeft" + "" + worp1 + "," + worp2 + "," + worp3 + " " + "Gegooid");

}
public String checkWinst()
{
if (worp1 == worp2 && worp2 == worp3)
{
return ( "U heeft 100 Euro Gewonnen");
}
if (worp1 == worp2 || worp1 == worp3 || worp2 == worp3)
{
return ("U heeft 10 Euro Gewonnen");
}
if (worp1 == (worp2-1) && worp1 == (worp3-2)||worp1 == (worp3-1) && worp1 == (worp2-2)||worp2 == (worp1-1) && worp2 == (worp3-2)|| worp2 == (worp1-2) && worp2 == (worp2-1)|| worp3 == (worp1-1) && worp3 == (worp2-2)|| worp3 == (worp1-2) && worp3 == (worp2-1))
{
return ("U heeft 50 Euro Gewonnen");
}
else
return ("U heeft niets gewonnen");


}
}
 
Wat wil er dan niet ?


Ik heb je classes iets aangepast. Iets code efficiënter.
Als je mijn aanpassingen niet begrijpt moet je het zeggen :)

Code:
public class Gokspel {
    
    private int worp1 = 0;
    private int worp2 = 0;
    private int worp3 = 0;
    private Dobbelsteen dobbel1;
    private Dobbelsteen dobbel2;
    private Dobbelsteen dobbel3;
    public Gokspel() {
        dobbel1 = new Dobbelsteen();
        dobbel2 = new Dobbelsteen();
        dobbel3 = new Dobbelsteen();
    }
    
    public String Speel() {
        worp1 = dobbel1.gooi();
        worp2 = dobbel2.gooi();
        worp3 = dobbel3.gooi();
        return ( "U heeft" + "" + worp1 + "," + worp2 + "," + worp3 + " " + "Gegooid");
    }
    public String checkWinst() {
        if (worp1 == worp2 && worp2 == worp3) {
            return ( "U heeft 100 Euro Gewonnen");
        } else if (worp1 == worp2 || worp1 == worp3 || worp2 == worp3) {
            return ("U heeft 10 Euro Gewonnen");
        } else if (( worp1 == (worp2-1) && worp1 == (worp3-2) ) ||
                ( worp1 == (worp3-1) && worp1 == (worp2-2) ) ||
                ( worp2 == (worp1-1) && worp2 == (worp3-2) ) ||
                ( worp2 == (worp1-2) && worp2 == (worp2-1) ) ||
                ( worp3 == (worp1-1) && worp3 == (worp2-2) ) ||
                ( worp3 == (worp1-2) && worp3 == (worp2-1) ) ){
            return ("U heeft 50 Euro Gewonnen");
        } else
            return ("U heeft niets gewonnen");
    }
}

Code:
public class Dobbelsteen {
    public Dobbelsteen() {
        
    }
    public int gooi(){
        return (int)(1 + Math.random() * 6);
        
    }
}
 
Laatst bewerkt:
Niet om het een of ander, maar ik zou de dobbelstenen in een Vector of Array proppen (al maakt dit op zich weinig uit).

Daarnaast zou ik de worpen wél in een array (van 3) opslaan, omdat je bij het vergelijken simpel de array door kunt fietsen en de vorige waarde met de volgende kunt vergelijken (ivm je straat etc.).
 
Dank u Killermenace , het werkt nu.
Ik wil nog iets toevoegen. Ik noem het randomize. Het moet bv. je geeft het aantal in hoeveel keer het moet gooien en daarna moet er resultaat uitkomen hoeveel je bv. 1 gegooid hebt en hoeveel keer 2 enzovoort.
public class Randomize
{
private int waarde1 =0;
private int waarde2 =0;
private int waarde3 =0;
private int waarde4 =0;
private int waarde5 =0;
private int waarde6 =0;
private int aantal =0;
private Dobbelsteen dobbelaar;
public Randomize()
{

}

public void Simuleer(int aantal)
{
this.aantal = aantal;

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

int waarde = dobbelaar.gooi();
switch (waarde)
{
case 1 : {waarde1++;
break;
}
case 2 : {waarde2++;
break;
}
case 3 : {waarde3++;
break;
}
case 4 : {waarde4++;
break;
}
case 5 : {waarde5++;
break;
}
case 6 : {waarde6++;
break;
}
}
}

}

}
Btw het werkt niet geeft een fout aan bij ' int waarde = dobbelaar.gooi(); ' Het geeft een nullpointerexception: null aan. wat betekent het ? iemand een oplossing ?
 
public Randomize()
{
dobbelaar = new Dobbelsteen
}

Die nullpointer exception wil hier zeggen dat ge een member functie ( of methode ) wilt aanroepen van de klasse Dobbelsteen zonder dat ge eerst een instantie ( of object dacht ik? ) hebt aangemaakt. Ge probeert dus eigenlijk een functie van iets onbestaand aan te roepen. Ongeveer hetzelfde als een iemand de opdracht geven van uw huis nu te behangen als de plannen nog maar net bij de architect liggen.

Altijd de new operatie uitvoeren als ge een array of een object wilt gebruiken!
Deze fout had ge trouwens ook in uw andere code gemaakt...
 
Je zal dan deze moeten instantieren:

Code:
private Dobbelsteen dobbelaar = new Dobbelsteen();

of zoals bzub aangeeft kan je het ook in de contructor doen, maar dan wel met () achter de Dobbelsteen :)

Code:
public Randomize()
{
dobbelaar = new Dobbelsteen[COLOR="Red"]()[/COLOR];
}
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan