Advertisement
Guest User

Untitled

a guest
Nov 27th, 2014
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.49 KB | None | 0 0
  1.  
  2. /**
  3.  * De Toren bestaat uit een reek getallen die je van klein naar groot moeten bouwen.
  4.  * In het begin staat de toren in een foute volgorde. De speler krijgt dan telkens een getal aangeboden
  5.  * en moet dit getal ofwel in de toren plaatsen ofwel weg gooien.
  6.  * Wanneer hij/zij het weggooit, krijgt hij wel een strafbeurt.
  7.  *
  8.  * Dit is vooral een oefening op arrays en de for-lus.
  9.  * Deze klasse werkt volledig op uitzondering van de 5 laatste methodes. Die moet de student zelf implementeren?
  10.  *
  11.  *
  12.  * @author Kris Aerts
  13.  * @version 14/1/2013
  14.  */
  15. public class Toren
  16. {
  17.     private int aantal, beurten; // aantal vakjes in de toren en aantal beurten
  18.     private int[] toren;  // de vakjes in de toren
  19.     private int bovengrens; // de bovengrens voor de getallen in de toren
  20.    
  21.     private int volgende; // het volgende getal dat de speler krijgt aangeboden
  22.    
  23.     /**
  24.      * Constructor for objects of class Toren met hoogte 8 en bovengrens 40
  25.      */
  26.     public Toren()
  27.     {
  28.         aantal = 10;
  29.         bovengrens = 40;
  30.         init();
  31.     }
  32.    
  33.     /**
  34.      * Constructor for objects of class Toren
  35.      *
  36.      * @param hoogte de hoogte van de toren (= het aantal vakjes)
  37.      * @param bovengrens een bovengrens voor de getallen in de toren
  38.      */
  39.     public Toren(int aantal, int bovengrens) {
  40.         this.aantal = aantal;
  41.         this.bovengrens = bovengrens;
  42.     }
  43.    
  44. // een eerste setter: de toren initialiseren (afhankelijk van aantal en bovengrens)
  45.     /**
  46.      * initialiseer de toren
  47.      *
  48.      */
  49.     public void init() {
  50.         toren = new int[aantal];
  51.         for (int i=0; i<aantal; i++) {
  52.            int getal = 1+(int)(Math.random()*bovengrens);
  53.            toren[i] = getal;
  54.         }
  55.        
  56.         volgende = 1+(int)(Math.random()*bovengrens);
  57.     }
  58.    
  59. // getters
  60.     /**
  61.      * converteer de toren in een string
  62.      *
  63.      * @return de toren in tekstvorm
  64.      */
  65.     public String toString() {
  66.         String uitvoer = "De toren na " + beurten + " beurten\n\n";
  67.         for (int i=0; i<aantal; i++) {
  68.            uitvoer = uitvoer + toren[i] + " ";    
  69.         }
  70.         return uitvoer;
  71.     }
  72.    
  73.     /**
  74.      * hoe hoog is de toren?
  75.      *
  76.      * @return het aantal vakjes van de toren
  77.      */
  78.     public int getHoogte() {
  79.         return aantal;
  80.     }
  81.    
  82.     /**
  83.      * wat is de bovengrens voor de getallen in de toren?
  84.      *
  85.      * @return de bovengrens
  86.      */
  87.     public int getBovengrens() {
  88.         return bovengrens;
  89.     }
  90.    
  91.     /**
  92.      * hoeveel beurten heeft de speler al gespeeld?
  93.      *
  94.      * @return het aantal beurten (inclusief de strafbeurten)
  95.      */
  96.     public int getBeurten() {
  97.        return beurten;    
  98.     }
  99.    
  100.     /**
  101.      * wat is het volgende getal dat de speler in de toren mag plaatsen?
  102.      *
  103.      * @return het volgende getal (van 1 tot de bovengrens)
  104.      */
  105.     public int getVolgende() {
  106.        return volgende;    
  107.     }
  108.  
  109.     /**
  110.      * geef het getal op de opgegeven positie
  111.      *
  112.      * @param positie de positie: 1 is het hoogste en getHoogte() is het laagste
  113.      *
  114.      */
  115.     public int getGetal(int positie) {
  116.        if (positie < 0 || positie > aantal) return -1;
  117.        
  118.        return toren[positie-1]; // want de array telt van 0 tot aantal-1
  119.     }
  120.    
  121. // setters
  122.     /**
  123.      * gooi het huidige getal weg.
  124.      * Dit telt voor 2 beurten.
  125.      */
  126.     public void gooiWeg() {
  127.         beurten = beurten + 2;
  128.         volgende = 1+(int)(Math.random()*bovengrens);
  129.     }
  130.  
  131.     /**
  132.      * plaats het huidige getal op de opgegeven positie.
  133.      * Dit telt voor 1 beurt.
  134.      *
  135.      * @param positie de plaats waar het huidige getal moet komen, >= 1 && <= aantal/hoogte
  136.      */
  137.     public void plaatsOp(int positie) {
  138.        if (positie < 1 || positie > aantal) return;
  139.        
  140.        beurten++;
  141.        toren[positie-1] = volgende;
  142.        volgende = 1+(int)(Math.random()*bovengrens);
  143.     }
  144.    
  145.    
  146. // de oefeningen
  147.     /**
  148.      * geeft de som van de getallen in de toren
  149.      *
  150.      * @return de som
  151.      */
  152.     public int getSom() {
  153.       int som = 0;
  154.       for (int i = 0; i < aantal; i++)
  155.       {
  156.           som += toren[i];
  157.       }
  158.       return som;
  159.     }
  160.     /**
  161.      * is de toren helemaal correct?
  162.      *
  163.      * @return true wanneer de blokjes stijgende zijn
  164.      */
  165.     public boolean isCorrect() {
  166.        boolean correct = true;
  167.        for(int i = 0; i < aantal - 1; i++)
  168.        {
  169.            if(toren[i] > toren[i + 1])
  170.                correct = false;
  171.        }
  172.        return correct;
  173.     }
  174.     /**
  175.      * geeft de grootste sprong in de toren),
  176.      * waarbij  we  met  sprong  het  verschil  tussen  2  opeenvolgende  blokken bedoelen
  177.      *
  178.      * @return de grootste sprong
  179.      */
  180.     public int getGrootsteSprong() {
  181.         int grootsteSprong = 0;
  182.         for(int i = 0; i < aantal - 1; i++)
  183.         {
  184.            if(Math.abs(toren[i] - toren[i + 1]) > grootsteSprong)
  185.            {
  186.               grootsteSprong = Math.abs(toren[i] - toren[i + 1]);
  187.            }
  188.         }
  189.         return grootsteSprong;  
  190.     }
  191.     /**
  192.      * geeft de gemiddelde sprong in de toren),
  193.      * waarbij  we  met  sprong  het  verschil  tussen  2  opeenvolgende  blokken bedoelen
  194.      *
  195.      * @return de gemiddelde sprong
  196.      */
  197.     public int getGemiddeldeSprong() {
  198.         int som = 0;
  199.         for(int i = 0; i < aantal - 1; i++)
  200.         {
  201.            som += Math.abs(toren[i] - toren[i + 1]);
  202.         }
  203.         return som / (aantal - 1);
  204.     }
  205.     /**
  206.      * geeft het aantal blokjes dat fout staat (dus kleiner dan het vorige)
  207.      *
  208.      * @return de aantal foute
  209.      */
  210.     public int getAantalFouten() {
  211.         int aantalFouten = 0;
  212.         for(int i = 0; i < aantal - 1; i++)
  213.         {
  214.            if(toren[i] > toren[i + 1])
  215.                aantalFouten++;
  216.         }
  217.         return aantalFouten;
  218.     }
  219.     /**
  220.      * geeft de lengte van het langste stuk dat correct is
  221.      * (waarbij de getallen dus stijgend zijn).
  222.      *
  223.      * @return de lengte
  224.      */
  225.     public int getLangsteCorrect() {
  226.         int stappenZonderFout = 0;
  227.         int langsteStappenZonderFout = 0;
  228.         for(int i = 0; i < aantal - 1; i++)
  229.         {
  230.            if(toren[i] <= toren[i + 1])
  231.               stappenZonderFout++;
  232.            else
  233.            {
  234.               stappenZonderFout = 0;
  235.            }
  236.            if(stappenZonderFout > langsteStappenZonderFout)
  237.               langsteStappenZonderFout = stappenZonderFout;
  238.         }
  239.         return langsteStappenZonderFout;
  240.     }
  241. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement