BBC BASIC
Rev. B, 234 Bytes
Anstatt ein weißes und ein rotes Kreuz zu zeichnen, zeichnen wir 100 zunehmend schmalere Kreuze und wechseln mit einer Koordinate von 60 vom weißen Hintergrund zum roten Vordergrund.
p=20761m=1049w=600h=300F.i=-1TO1V.29,w;h;18;4,m;134*i;0;m;w*i;-233;p;0;466;m;0;67*i;m;-466;h*i;p;932;0;18;1,m;511*i;h*i;25;89*i;0;29977;0;0;m;w*i;-h*i;28953;0;45*i;
N.F.c=-100TO0q=25881-c DIV60*512V.m;-c;-h;q;c;h;m;-w;-c;q;w;c;
N.
Laden Sie den Dolmetscher kostenlos unter http://www.bbcbasic.co.uk/bbcwin/bbcwin.html herunter
Voll Golf, 249 Bytes
Einzelbyte-Bildschirmcodes, z. B. 25,0
kombiniert zu Doppelbyte-Little-Endian- Codes, z. B. 25;
maximale Verwendung von Konstanten für gemeinsame Werte. In abgekürzte Form komprimierte Schlüsselwörter, z. B. FOR
=> F.
(Interpreter wird automatisch erweitert.)
p=20761q=26393r=25881m=1049c=100w=600h=300F.i=-1TO1V.29,w;h;18;4,m;134*i;0;m;w*i;-233;p;0;466;m;0;67*i;m;-466;h*i;p;932;0;18;1,m;511*i;h*i;25;89*i;0;29977;0;0;m;w*i;-h*i;28953;0;45*i;
N.V.m;-c;-h;q;c;h;2m;-w;-c;q;w;c;m;-60;-h;r;60;h;m;-w;-60;r;w;60;
Semigolfed
Rohe Bildschirmcodes. In BBC BASIC können Zeichen wie VDU65
(druckt ein A) an den Bildschirmcontroller gesendet werden. Für Grafiken gibt es bestimmte Sonderzeichen, die für die BBC spezifisch sind. Darauf müssen mehrere andere Bytes folgen, um Koordinaten usw. anzugeben. Hier verwenden wir PLOT
=> VDU25
, GCOL
=> VDU18
, ORIGIN
=> VDU29
.
c=100w=600h=300 :REM constants 100,width,height
FORi=-1TO1 :REM loop -1 and 1 (0 draws nothing)
VDU29,w;h; :REM set origin (bring inside loop for golfing reasons)
VDU18;4 :REM change to blue and draw triangles
VDU25,4,134*i;0;25,4,w*i;-233;25,81,0;466;25,4,0;67*i;25,4,-466;h*i;25,81,932;0;
VDU18;1 :REM change to red and draw parallelograms
VDU25,4,511*i;h*i;25,0,89*i;0;25,117,0;0;25,4,w*i;-h*i;25,113,0;45*i;
NEXT
VDU25,4,-c;-h;25,103,c;h;25,4,-w;-c;25,103,w;c; :REM draw white background rectangles
VDU25,4,-60;-h;25,101,60;h;25,4,-w;-60;25,101,w;60; :REM draw red foreground rectangles
Zuerst zeichnen wir die Hälfte der diagonalen Teile: 2 blaue Dreiecke und 2 rote Parallelogramme. Dann ändern wir die Skala von -1 auf +1 und zeichnen die andere Hälfte. Schließlich zeichnen wir die horizontalen und vertikalen Teile oben: 2 weiße Rechtecke, um ein weißes Kreuz zu bilden, dann 2 rote Rechtecke. Das Bild nach der ersten Iteration der Schleife wird unten zusammen mit dem endgültigen Bild gezeigt.
Ungolfed Code
BBC Basic merkt sich die letzten beiden Stellen des Grafikcursors. PLOT81 zeichnet ein Dreieck zwischen den neuen angegebenen Koordinaten und diesen beiden letzten Positionen. PLOT113 und PLOT117 zeichnen ein Parallelogramm auf ähnliche Weise: Drei Ecken des Parallelogramms müssen in der Reihenfolge angegeben werden, in der sie sich um den Umfang befinden. Die letzten drei Bits des PLOT-Codes definieren, ob die angegebenen Koordinaten absolut oder relativ sind und ob Vordergrund- oder Hintergrundfarbe verwendet wird. Die signifikanteren Bits definieren, welche Art von Form gezeichnet wird (Punkt, Linie, Dreieck, Parallelogramm, Rechteck usw.).
ORIGIN600,300 :REM move the origin (which will be centre of flag) away from the corner of the screen.
FORi=-1TO1 :REM at scales of -1 and 1, plot half each of the diagonal parts (i=0 plots nothing).
GCOL0,4 :REM blue foreground colour
PLOT4,134*i,0 :REM absolute move to peak of upper/lower triangle
PLOT4,600*i,-233 :REM absolute move to left hand corner
PLOT81,0,466 :REM relative move to right hand corner, plotting triangle
PLOT4,0,67*i :REM absolute move to peak of left/right triangle
PLOT4,-466,300*i :REM absolute move to lower corner
PLOT81,932,0 :REM relative move to upper corner, plotting triangle
GCOL0,1 :REM red foreground colour
PLOT4,511*i,300*i :REM absolute move to long edge of flag
PLOT0,89*i,0 :REM relative move to corner of flag (top right / bottom left)
PLOT117,0,0 :REM absolute move to centre of flag, plotting parallelogram (stripe)
PLOT4,600*i,-300*i :REM absolute move to corner of flag (bottom right / top left)
PLOT113,0,45*i :REM relative move to short edge of flag, plotting parallelogram (stripe)
NEXT :REM diagonal parts completed, now plot vertical/horizontal parts on top.
PLOT4,-100,-300 :REM move to bottom left of vertical white stripe
PLOT103,100,300 :REM move to top right corner, plot it in background colour (white)
PLOT4,-600,-100 :REM move to bottom left corner of horizontal white stripe
PLOT103,600,100 :REM move to top right corner, plot it in background colour (white)
PLOT4,-60,-300 :REM move to bottom left of vertical red stripe
PLOT101,60,300 :REM move to top right corner, plot it in foreground colour (red)
PLOT4,-600,-60 :REM move to bottom left corner of horizontal red stripe
PLOT101,600,60 :REM move to top right corner, plot it in foreground colour (red)