- import logotekenap.*;
- /*In deze regel wordt het programma voor tekenen geimporteerd naar de werkruimte*/
- import java.awt.Font;
- /*In deze regel wordt de javaclasse voor het gebruik van fonts
- geïmporteerd naar de werkruimte*/
- public class Achthoeken extends TekenApplet
- /*hier wordt de tekenapplet geopend
- Declaratie v.d. variabelen.*/
- { Font f;
- int h;
- int aantalRijen;
- int aantalKolommen;
- int zijde;
- InvoerVariabele aantalKolommenInv;
- InvoerVariabele aantalRijenInv;
- InvoerVariabele zijdeInv;
- int r;
- int g;
- int b;
- public void initialiseer()
- {
- //Waarde wordt toegekend aan de varriabelen.
- maakTraceMogelijk();
- f=new Font("Helvetica_BOLD",Font.PLAIN,15);
- aantalRijen= 6;
- aantalKolommen= 6;
- h=20;
- aantalKolommenInv = new InvoerVariabele("Aantal Kolommen",0,10,6);
- maakZichtbaar(aantalKolommenInv);
- aantalRijenInv = new InvoerVariabele("Aantal Rijen",0,10,6);
- maakZichtbaar(aantalRijenInv);
- zijdeInv = new InvoerVariabele ("Zijde", 10, 70, 20);
- maakZichtbaar(zijdeInv);
- r =255;
- g =0;
- b =0;
- zijde=h;
- }
- public void tekenprogramma()
- /*het begin van de tekenopdrachten*/
- { penUit();
- stap(-250,-250);
- //Naar linksonder gaan om daar mijn naam te schrijven.
- schrijf("Job & Julien",f);
- stap(250,250); //En weer terug naar het midden.
- //einde template-code
- penUit();
- //Onderstaande regel zorgt voor het centraliseren van de tekening in de applet.
- stap(-aantalKolommen*(0.5*zijde+zijde/Math.sqrt(2)),0.5*zijde+ (aantalRijen-1)*(0.5*zijde+zijde/Math.sqrt(2)));
- horizontalerijboven(); //Basisrij boven (zonder ruit!!)
- verticalerijlinks(); //Basisrij links (zonder ruit!!)
- stap(2*zijde/Math.sqrt(2)+zijde,aantalRijen*(2*zijde/Math.sqrt(2)+zijde)); //Terug naar boven, de hoek tussen vert. en hor.
- for (int i=0 ; i<aantalRijen ; i++) //Figuur afmaken met het correcte aantal RuitenMetAchthoeken.
- { rijmetruitenachthoek();
- }
- }
- void ruit()
- //Methode ruit
- { penAan();
- //De ruiten inkleuren met de standaardwaarde
- vulAan(r,g,b);
- /*de herhalings opdracht van de ruit*/
- for (int i=0 ; i<4 ; i++)
- { vooruit(zijde);
- rechts (90) ;
- }
- //Rotzooien/experimenteren met kleuren en afvangen problemen
- /* if (r<254)
- {
- r=r+1;
- }
- else
- {
- r=r-230;
- }
- if (g<250)
- {
- g=g+5;
- }
- else
- {
- g=g-200;
- }
- if (b<254)
- {
- b=b+1;
- }
- else
- {
- b=b-85;
- }*/
- vulUit();
- penUit();
- }
- //Methode achthoek
- void achthoek()
- { penAan();
- vulAan("blauw");
- for (int i=0 ; i<8 ; i++)
- /*de herhalings opdracht van de achthoek*/
- { rechts (45) ;
- vooruit(zijde);
- }
- vulUit();
- /*Rotzooien/experimenteren met kleuren en afvangen problemen*/
- /*if (r<250)
- {
- r=r+5;
- }
- else
- {
- r=r-250;
- }
- if (g<254)
- {
- g=g+1;
- }
- else
- {
- g=g-254;
- }
- if (b<254)
- {
- b=b+1;
- }
- else
- {
- b=b-254;
- }
- vulUit();
- //penUit();*/
- }
- //Eerste horizontale rij achthoeken definieren in methode
- void horizontalerijboven()
- { for (int i=0 ; i<aantalKolommen ; i++)
- { achthoek();
- // penUit(); //pen uit tijdens het stappen.
- stap(2*zijde/Math.sqrt(2)+zijde,0); //Stap naar het volgende startpunt
- }
- //Stap naar het startpunt voor de methode verticalerij links
- stap(-aantalKolommen*(2*zijde/Math.sqrt(2)+zijde),-2*zijde/Math.sqrt(2)-zijde);
- }
- //Eerste rij vericale achthoeken definieren in methode
- void verticalerijlinks()
- { for (int i=0 ; i<aantalRijen ; i++)
- { achthoek();
- //penUit(); //pen uit tijdens het stappen.
- stap(0,-2*zijde/Math.sqrt(2)-zijde); //Stap naar het volgende startpunt
- }
- }
- //Methode waarbij een ruit en een achthoek gekoppeld worden en een aantal malen worden getekend.
- void rijmetruitenachthoek()
- { for (int i=0 ; i<aantalKolommen-1 ; i++)
- { achthoek();
- links(45);
- ruit();
- rechts(45);
- stap((zijde+2*zijde/Math.sqrt(2)),0); //Stap naar het volgende startpunt
- }
- //Stap naar het startpunt voor een volgende rij ruitenmetachthoeken.
- stap(-(aantalKolommen-1)*(2*zijde/Math.sqrt(2)+zijde),-2*zijde/Math.sqrt(2)-zijde);
- }
- //Uitlezen nieuwe variabelen.
- public void invoerVarActie(InvoerVariabele iv)
- { if(iv==aantalKolommenInv)
- { aantalKolommen= aantalKolommenInv.geefWaarde();
- tekenOpnieuw();
- }
- if(iv==aantalRijenInv)
- { aantalRijen = aantalRijenInv.geefWaarde();
- tekenOpnieuw();
- }
- if(iv==zijdeInv)
- { zijde = zijdeInv.geefWaarde();
- tekenOpnieuw();
- }
- }
- }