BBC CƠ BẢN
Rev B, 234 byte
Thay vì vẽ một chữ thập trắng và một chữ thập đỏ, chúng ta vẽ 100 chữ thập hẹp dần dần, chuyển từ nền trắng sang tiền cảnh đỏ ở tọa độ 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.
Tải xuống thông dịch viên miễn phí tại http://www.bbcbasic.co.uk/bbcwin/bbcwin.html
Được chơi đầy đủ, 249 byte
Các mã VDU byte đơn, ví dụ 25,0
kết hợp thành endian nhỏ hai byte, ví dụ 25;
và sử dụng tối đa các hằng số cho các giá trị chung. Từ khóa được nén thành dạng viết tắt, ví dụ FOR
=> F.
(trình thông dịch sẽ tự động mở rộng.)
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;
Bán nguyệt
Mã VDU thô. Trong BBC BASIC, các ký tự có thể được gửi đến bộ điều khiển VDU như VDU65
(in chữ A.) Có một số ký tự đặc biệt dành riêng cho BBC cho đồ họa. Chúng phải được theo sau bởi một số byte khác để chỉ định tọa độ, v.v ... Ở đây chúng tôi sử dụng 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
Đầu tiên chúng ta vẽ một nửa các đường chéo: 2 hình tam giác màu xanh và 2 hình bình hành màu đỏ. Sau đó, chúng tôi thay đổi tỷ lệ từ -1 thành +1 và vẽ nửa còn lại. Cuối cùng chúng ta vẽ các phần ngang và dọc trên cùng: 2 hình chữ nhật màu trắng để tạo thành hình chữ thập màu trắng, sau đó là 2 hình chữ nhật màu đỏ. Hình ảnh sau lần lặp đầu tiên của vòng lặp được hiển thị bên dưới, cùng với hình ảnh cuối cùng.
Mã bị đánh cắp
BBC cơ bản ghi nhớ 2 vị trí cuối cùng của con trỏ đồ họa. PLOT81 vẽ một hình tam giác giữa các tọa độ mới được chỉ định và hai vị trí cuối cùng này. PLOT113 và PLOT117 vẽ một hình bình hành theo cách tương tự: ba góc của hình bình hành phải được đưa ra theo thứ tự chúng được tìm thấy đi vòng quanh chu vi. Ba bit cuối cùng của mã PLOT xác định xem tọa độ đã cho là tuyệt đối hay tương đối và liệu màu nền trước hay màu nền được sử dụng. Các bit quan trọng hơn xác định loại hình dạng được vẽ (điểm, đường thẳng, tam giác, hình bình hành, hình chữ nhật, v.v.)
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)