BBC BASIC
Rev B, 234 byte
Alih-alih menggambar satu salib putih dan merah, kami menggambar 100 salib yang semakin sempit, beralih dari latar belakang putih ke latar depan merah pada koordinat 60.
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.
Unduh juru bahasa gratis di http://www.bbcbasic.co.uk/bbcwin/bbcwin.html
Sepenuhnya golf, 249 byte
Kode VDU byte tunggal misalnya 25,0
digabungkan menjadi endian kecil misalnya byte ganda 25;
dan penggunaan konstanta maksimum untuk nilai-nilai umum. Kata kunci dikompresi ke bentuk disingkat, mis FOR
= = F.
(penerjemah berkembang secara otomatis.)
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;
Semigolf
Kode VDU mentah. Dalam BBC BASIC, karakter dapat dikirim ke pengontrol VDU seperti VDU65
(mencetak A.). Ada karakter khusus khusus untuk BBC untuk grafis. Ini harus diikuti oleh beberapa byte lain untuk menentukan koordinat, dll. Di sini kita menggunakan 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
Pertama kita menggambar setengah bagian diagonal: 2 segitiga biru dan 2 genjang merah. Kemudian kita mengubah skala dari -1 ke +1 dan menggambar setengah lainnya. Akhirnya kita menggambar bagian horisontal dan vertikal di atas: 2 persegi panjang putih untuk membentuk salib putih, lalu 2 persegi panjang merah. Gambar setelah iterasi pertama loop ditunjukkan di bawah ini, bersama dengan gambar akhir.
Kode tidak dikunci
BBC basic mengingat 2 lokasi terakhir kursor grafik. PLOT81 menggambar segitiga di antara koordinat baru yang ditentukan dan dua lokasi terakhir ini. PLOT113 dan PLOT117 menggambar sebuah jajaran genjang dengan cara yang sama: tiga sudut jajaran genjang harus diberikan dalam urutan mereka ditemukan keliling perimeter. Tiga bit terakhir dari kode PLOT menentukan apakah koordinat yang diberikan adalah absolut atau relatif, dan apakah warna foreground atau background digunakan. Bit yang lebih signifikan menentukan jenis bentuk apa yang digambar (titik, garis, segitiga, jajaran genjang, persegi panjang, dll.)
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)