' "Rauch"-Kreise (Regenbogeneffekt) ' Variante PSET-Methode Type Kreis x As Single y As Single r As Single End Type Function Quadrat(s As Single) As Single Quadrat = s * s End Function ' Hier die Kreise unserer "Wolke" Dim k(...) As Kreis => { (125.0, 130.0, 60.0), (240.0, 175.0, 65.0), (412.0, 176.0, 125.0), _ (375.0, 320.0, 60.0), (260.0, 350.0, 65.0), (170.0, 328.0, 55.0), (98.0, 245.0, 75.0) } Const Streifenbreite As Single = 5.0 Dim regenbogenfarben(...) As Integer => { 0, 2, 3, 9, 13, 4 } Dim i As Integer, y As Integer, x As Integer, abstMin As Single, abst As Single Dim j As Integer ScreenRes 640, 480, 4 Width 80, 30 For i=1 To 30 For j=1 To 61 Step 20 Locate i, j Print "Kreise mit CIRCLE *"; Next j Next i For i = UBound(regenbogenfarben) To LBound(regenbogenfarben) Step -1 For j = LBound(k) To UBound(k) Circle (k(j).x, k(j).y), k(j).r + CSng(i) * Streifenbreite, regenbogenfarben(i), , ,1.0, F Next j Next i Sleep Cls For i=1 To 30 For j=1 To 41 Step 40 Locate i, j Print "Kreise jetzt gerendert (PSET-Methode) *"; Next j Next i For y = 16 To 479 For x = 0 To 639 abstMin = 1000.0 For i = LBound(k) To UBound(k) abst = Sqr(Quadrat(CSng(x) - k(i).x) + Quadrat(CSng(y) - k(i).y)) - k(i).r If abst < abstMin Then abstMin = abst EndIf Next i j = CInt(Int(abstMin / Streifenbreite)) If j >= LBound(regenbogenfarben) And j < UBound(regenbogenfarben) Then PSet (x, y), regenbogenfarben(j + 1) EndIf Next x Next y Sleep