All pastes #372972 Raw Edit

Anonymous

public java v1 · immutable
#372972 ·published 2007-02-26 13:04 UTC
rendered paste body
// Java classesimport java.awt.*;import java.applet.*;// Java class voor wiskundige functies (we hebben toRadians en sin nodig later)import java.lang.Math;// Een of ander geinige Java class waarmee je pixelachtige lijntjes en vlakjes kan tekenenimport logotekenap.*;public class PO1 extends TekenApplet{	// Variabelen die het uiterlijk van het plaatje bepalen:	// Lengte van een zijde	double zijde = 20;	// Aantal rijen aan blokjes	int rijen = 10;	// Aantal kolommen aan blokjes	int kolommen = 10;	// Gezellige kleurtjes :D	String kleur1 = "grijs";	String kleur2 = "wit";	String kleur3 = "zwart";		// Doet niks, waarom het hier staat weet ik eigenlijk niet. :S	public void initialiseer()	{		// Niks	}		// Tekent een heleboel blokjes :)	public void tekenprogramma()	{		// Variabelen initialiseren		double posx;		double posy;		// Een hoek van 60 graden maar dan in radialen.		// Ik laat dit door een functie van Java doen omdat dat lekker exact is. ;)		double angle = java.lang.Math.toRadians(60);		// Bereken de sinus van de bovengenoemde hoek (deze functie neemt alleen radialen aan, dus vandaar)		double sin = java.lang.Math.sin(angle);		// Een trucje om de 'helft' van de breedte van het totale figuur te berekenen.		// 'zijde' is de helft van de breedte van een blokje (reken maar na)		// Het ziet er niet zo duidelijk uit en het klopt misschien ook niet, maar het werkte met een paar testjes :P		double centerx = (kolommen-3)*zijde;		// Zelfde idee, maar dan voor de y-as		double centery = rijen*sin*zijde;		// Variabele die later gebruikt wordt om de verschuiving per rij aan te geven		double verschuif;		// Een for-loop die elke rij stuk voor stuk tekent		// Variabele 'y' is hier het rij-nummer		for(int y = 0; y<rijen; y++)		{			// Verschuiving per rij			verschuif = sin*zijde*2;			// y-positie voor blokjes in de huidige rij			posy = verschuif*y;			// for-loop om kolommen in de rij te tekenen			// er staat 'x += 2' omdat er per keer twee blokjes getekend worden			// (dat leek mij destijds makkelijker			for(int x = 0; x<kolommen; x += 2)			{				// De x-positie van het eerste blokje				posx = x*(zijde*1.5);				// Teken het blokje (-centerx en -centery om het geheel in het midden te krijgen)				blok(posx-centerx, posy-centery);				// x-positie van het tweede blokje (=1.5 keer de breedte van een blokje verder)				posx = x*(zijde*1.5)+(zijde*1.5);				// Plaats het blokje (verschuif/2 omdat het blokje schuin naast het vorige blokje komt te staan)				blok(posx-centerx, posy+(verschuif/2)-centery);			}		}	}		// Functie om een blokje te tekenen	// Accepteert twee parameters om de x-y positie van het blokje te bepalen	public void blok(double x, double y)	{		penUit();		// Verplaats de teken-pointer naar positie:		stap(x, y);		penAan();		// Ga tekenen!		ruit(0, kleur1);		ruit(120, kleur2);		ruit(240, kleur3);		penUit();		// Zet de teken-pointer terug bij het begin		stap(0 - x, 0 - y);		penAan();	}		// Functie voor tekenen van een stukje van een blokje (een ruit!)	// Accepteert twee parameters: hoek voor de hoek waaronder de ruit getekend wordt	// kleur voor de opvulling van het ruitje	public void ruit(double hoek, String kleur)	{		// Draai de teken-pointer naar een bepaalde beginhoek		rechts(hoek);		vulAan(kleur);		penAan();		// Teken een ruit!		links(30); vooruit(zijde);		links(120); vooruit(zijde);		links(60); vooruit(zijde);		links(120); vooruit(zijde);		vulUit();		penUit();		// Zet de hoek van de teken-pointer terug op de beginstand		links(30 + hoek);	}}