Page 2 of 3 First 123 Last
  1. #16
    Reaper's Avatar
    Registered
    23/07/09
    Location
    Oostende
    Posts
    2,383
    iTrader
    23 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/851
    2de zit projecten I, altijd tof ^^
    #RIP9lives - met zijn allen een nieuwe start op BeyondGaming
    no votes  

  2. #17
    godf@ther's Avatar
    Registered
    27/05/10
    Location
    /
    Posts
    2,234
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/17
    Quote Originally Posted by Sir.Sleepalot View Post
    This quote is hidden because you are ignoring this member. Show

    Dan in je tweede for-loop ga je alle landen in het huidige continent af via een counter "i". En je test dan voor ALLE continenten of land "i" van een bepaalde speler is. Tenzij ik me vergis (of als alle continenten even veel landen hebben) gaat dit IndexOutOfBoundsExceptions gooien. Volgens mij moet je nog eens goed nadenken over wat je daar juist wil doen, ofwel begrijp ik niet wat je juist bedoelt, ofwel is daar iets heel erg mis...

    Als je je "playersymbool" gaat vergelijken, zou ik '.equals()' gebruiken i.p.v. '==', tenzij je playersymbool een integer is of zo.
    Kan je even uitleggen waarom hij die exception zou gooien? Ik ga namelijk een deel van de code efficienter maken voor mijn presentatie van volgende week.

    Verstuurd vanaf mijn Joyz met Tapatalk 4
    no votes  

  3. #18
    blackrabbit's Avatar
    Registered
    25/07/02
    Location
    Brussel
    Posts
    1,001
    iTrader
    5 (100%)
    Mentioned
    0 Post(s)
    Reputation
    2/2
    Effe snel bekeken: als het aantal landen in elk continent niet hetzelfde is, loopt ge dat risico inderdaad (uw test is sowieso raar als niet alle continenten hetzelfde aantal landen hebben)
    no votes  

  4. #19
    godf@ther's Avatar
    Registered
    27/05/10
    Location
    /
    Posts
    2,234
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/17
    Maar ik snap niet goed waarom hij die fout zou geven als alle landen niet gelijk zijn

    Verstuurd vanaf mijn Joyz met Tapatalk 4
    no votes  

  5. #20
    Jerre Muesli's Avatar
    Registered
    08/09/02
    Location
    -
    Posts
    2,044
    iTrader
    9 (100%)
    Mentioned
    0 Post(s)
    Reputation
    3/6
    // never mind
    no votes  

  6. #21

    Registered
    15/05/06
    Location
    Lint
    Posts
    107
    iTrader
    0
    Mentioned
    0 Post(s)
    Quote Originally Posted by godf@ther View Post
    This quote is hidden because you are ignoring this member. Show
    Maar ik snap niet goed waarom hij die fout zou geven als alle landen niet gelijk zijn

    Verstuurd vanaf mijn Joyz met Tapatalk 4
    de variabele i itereert over alle landen van continent j:
    Code:
    for(int i=0;i<continenten.get(j).getLanden().size();i++)
    En een beetje verder op, gebruik je i om een land op te roepen voor continenten 0, 1, 3, 4 en 5:
    Code:
    if(sp.getSymbool() == continenten.get(2).getLanden().get(i).getSymboolSp eler() && sp.getSymbool() ==
    continenten.get(3).getLanden().get(i).getSymboolSp eler() && (sp.getSymbool() ==
    continenten.get(4).getLanden().get(i).getSymboolSp eler() || sp.getSymbool() ==
    continenten.get(5).getLanden().get(i).getSymboolSp eler() || sp.getSymbool() ==
    continenten.get(0).getLanden().get(i).getSymboolSp eler() || sp.getSymbool() ==
    continenten.get(1).getLanden().get(i).getSymboolSp eler()))
    Niets garandeert dat die continenten een i-de land hebben. Als een van die contenten minder dan i landen heeft, krijg je dus een IndexOutOfBoundsException.
    no votes  

  7. #22
    Mackenzie's Avatar
    Registered
    06/11/09
    Location
    Turnhout
    Posts
    841
    iTrader
    8 (100%)
    Mentioned
    0 Post(s)
    Ik zou het properder doen zoals al is voorgesteld hierboven

    Code:
    for(Continent cont:continenten)
     for(Land l:cont.getLanden)
      land.ownedByPlayer(player);
    of wat dan ook voor die laatste regel als je het enkel voor de current player ofzo wilt checken.

    in die ownedByPlayer check je dan in 1 regel of het symbool van dat land overeenkomt met dat van de meegegeven speler.

    Passieve verantwoordelijkheden zoals dat moet je altijd zo diep mogelijk duwen.
    no votes  

  8. #23
    godf@ther's Avatar
    Registered
    27/05/10
    Location
    /
    Posts
    2,234
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/17
    In de klasse continent heb ik de volgende methode toegevoegd:

    public boolean isVeroverdDoor(String naamSpeler)
    {
    for(Land l : landen)
    {
    if(!l.getNaamSpeler().equals(naamSpeler))
    return false;
    }
    return true;
    }

    ---------------------------------------

    In de klasse Wereldkaart heb ik het volgende gedaan (vorige foute code weggedaan ook trouwens):

    if(sp.getOpdracht().contains("Afrika"))
    {
    if(continenten.get(0).isVeroverdDoor(sp.getNaam()) && continenten.get(1).isVeroverdDoor(sp.getNaam()) &&
    (continenten.get(2).isVeroverdDoor(sp.getNaam()) || continenten.get(3).isVeroverdDoor(sp.getNaam())
    || continenten.get(4).isVeroverdDoor(sp.getNaam()) || continenten.get(5).isVeroverdDoor(sp.getNaam())))
    {
    isGewonnen = true;
    }
    }

    Ik heb er over nagedacht en dit leek me toch de kortste versie om te controleren of de 2 verplichte continenten te controleren of ze veroverd waren en dan nog 1 optionele continent.

    Alvast bedankt voor jullie hulp, hetgeen jullie zeggen houdt ook steek voor me, die fout zal ik in de toekomst dus niet meer maken ^^
    no votes  

  9. #24
    blackrabbit's Avatar
    Registered
    25/07/02
    Location
    Brussel
    Posts
    1,001
    iTrader
    5 (100%)
    Mentioned
    0 Post(s)
    Reputation
    2/2
    Dus uw klasse Wereldkaart (brrr) staat vol met dergelijke code? As in, voor elke mogelijke opdracht? Vind je dat zelf niet 'lelijk'? Of anders gezegd: vind je het makkelijk om je code aan te passen of om een bepaalde opdracht terug te vinden in al die lijnen code?

    Uw Wereldkaart zou eigenlijk niet veel meer moeten zijn dan een collection van uw continenten.
    no votes  

  10. #25
    godf@ther's Avatar
    Registered
    27/05/10
    Location
    /
    Posts
    2,234
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/17
    Mja ik zou nie direct weten hoe ik het nog compacter kan maken? Ik werkte verder op het project van iemand anders (dit moest ik doen) en die had de methode isGewonnen in de klasse Wereldkaart gezet. Daarom had ik al deze code bij in die methode gezet.

    Verstuurd vanaf mijn Joyz met Tapatalk 4
    no votes  

  11. #26
    godf@ther's Avatar
    Registered
    27/05/10
    Location
    /
    Posts
    2,234
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/17
    Ik snap wel wa ge wilt zeggen, deze code in de klasse Continent zetten, maar maakt het een verschil?

    Verstuurd vanaf mijn Joyz met Tapatalk 4
    no votes  

  12. #27
    godf@ther's Avatar
    Registered
    27/05/10
    Location
    /
    Posts
    2,234
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/17
    Oftewel een eigen klasse Opdracht maken, en daar dan alle wincondities in verwerken. Maar da zou wel alles omvergooien van mijn gemaakte code, en daar heb ik spijtig genoeg niet meer de tijd voor
    no votes  

  13. #28
    godf@ther's Avatar
    Registered
    27/05/10
    Location
    /
    Posts
    2,234
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/17
    Nog een vraag:

    Met deze methode:

    public boolean isVeroverdDoor(String naamSpeler)
    {
    boolean isVeroverdDoor = true;
    for(Land l : landen)
    {
    if(!l.getNaamSpeler().equals(naamSpeler))
    isVeroverdDoor = false;
    }
    return isVeroverdDoor;
    }

    Als ik deze dan oproep met Continenten.get(1).isVeroverdDoor()

    Gaat hij dan gwn de landen af die tot dat continent behoren, of gaat hij alle landen af die in het spel zijn?
    no votes  

  14. #29
    godf@ther's Avatar
    Registered
    27/05/10
    Location
    /
    Posts
    2,234
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/17
    Ik heb nu de volgende code:

    - klasse Wereldkaart http://pastebin.com/b5Rt3FT3
    - klasse Continent klasse Continent - Pastebin.com
    Last edited by godf@ther; 04-09-2013 at 18:23.
    no votes  

  15. #30
    Jerre Muesli's Avatar
    Registered
    08/09/02
    Location
    -
    Posts
    2,044
    iTrader
    9 (100%)
    Mentioned
    0 Post(s)
    Reputation
    3/6
    Maak van uw opdrachten een enum en check de win in een specifieke klasse. Bvb WinConditionFactory.getInstance (sp.getOpdracht());
    12 if-else if-else if- stukken zijn niet leesbaar en niet te onderhouden
    no votes  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in