'Korallen von Robert Seidel ' Kefersteinstr. 14 ' 07745 Jena '(BASIC-Programmierer schreibt mir !) 'Sprache: PowerBASIC $ERROR ALL OFF 'Beschleunigung um 6% %xm = 640 / 2 %ym = 480 / 2 DIM Richtung AS INTEGER DIM Abstand AS INTEGER DIM s AS INTEGER DIM x AS INTEGER DIM y AS INTEGER DIM z AS LONG DIM Winkel AS SINGLE DIM r AS SINGLE SCREEN 12 RANDOMIZE TIMER 'Ausgangspunkt des Wachstums PSET (%xm, %ym), 14 'mit jedem Aufruf w„chst die Koralle um ein Stck WachsWeiter: 'zuf„lliger Abstand zum Ursprung r = Abstand * (1 + RND / 5) ' ^ siehe Tabelle ! 'zuf„lliger Winkel des Zweiges Winkel = 2 * 3.14159! * RND 'Koordinaten des neuen Korallenstcks x = %xm + INT(r * COS(Winkel)) y = %ym + INT(r * SIN(Winkel)) 'Die Koralle w„chst bis eine Taste gedrckt wird WHILE INKEY$ = "" 'ermitteln der Wachstumsrichtung per Zufall Richtung = INT(4 * RND) + 1 SELECT CASE Richtung CASE 1: DECR x CASE 2: INCR x CASE 3: DECR y CASE 4: INCR y END SELECT 'Untersuchung der Umgebung des aktuellen Punktes s = POINT(x - 1, y - 1) INCR s , POINT(x - 1, y ) INCR s , POINT(x - 1, y + 1) ' 2. 3. 4. INCR s , POINT(x , y + 1) ' INCR s , POINT(x + 1, y + 1) ' 1. Punkt 5. INCR s , POINT(x + 1, y ) ' INCR s , POINT(x + 1, y - 1) ' 8. 7. 6. INCR s , POINT(x , y - 1) 'wenn es einen Nachbarn gibt, wird ein Punkt gesetzt IF s > 0 THEN 'Farbe hier vom Abstand abh„ngig INCR z PSET (x, y), 1 + z \ 100 'der Abstands wird aktualisiert IF Abstand < ABS(x - %xm) THEN Abstand = ABS(x - %xm) IF Abstand < ABS(y - %ym) THEN Abstand = ABS(y - %ym) GOTO WachsWeiter END IF IF (ABS(x - %xm) > Abstand + 4) OR _ (ABS(y - %ym) > Abstand + 4) THEN WachsWeiter WEND PRINT "Koralle fr PowerBASIC von Robert Seidel" ! MOV AH , 0 ; Pause ! INT &h16