বিবিসি বেসিক, ২০২
INPUTh:w=h/12s=w/2.4p=25VDU22,6,29,640;400;p,4,0;1.5*w;p,153,6*w;0;p,4,0;1.5*w;p,159,h/3.1;4.7*w;p;9*s;9*w;p,87,h/3.1;-19*w;p,4,-7.5*w;0;p;s;w;p,85,4.5*s;0;p,81,s;w;p;s;w;p;s;w;p,85,-7.5*w;2*w;p,81,s;w;
http://www.bbcbasic.co.uk/bbcwin/bbcwin.html এ এমুলেটরটি ডাউনলোড করুন
বিবিসি বেসিকগুলিতে, সমস্ত গ্রাফিকগুলি নিম্ন স্তরে মেশিন-নির্দিষ্ট ASCII নিয়ন্ত্রণ অক্ষর ব্যবহার করে পরিচালনা করা হয় (তবে কিছু উচ্চ স্তরের কমান্ডগুলি সাধারণ সুবিধার জন্যও উপলব্ধ।) এখানে যেগুলি ব্যবহৃত হয়েছে তা 22 (পরিবর্তন প্রদর্শন মোড) 29 (পরিবর্তন উত্স) এবং 25, পিএলএটি স্টেটমেন্টের সমতুল্য, যা এক্স এবং ওয়াই প্যারামিটারের পূর্বে ব্যাকগ্রাউন্ড / অগ্রভাগে অতিরিক্ত ক্রিয়া প্যারামিটার (অঙ্কিত রেখা, বৃত্ত, ত্রিভুজ ইত্যাদি) গ্রহণ করে।
সুতরাং আমাকে যা করতে হবে তা হ'ল ভিডিউ নিয়ামককে প্রচুর অক্ষর প্রেরণ করা। সেমিকোলনে বন্ধ হওয়া মানগুলি 16 বিট হয়। অন্যদের 8 বিট হয়। ভিডিইউ নিয়ন্ত্রকের কাছে প্রেরিত মোট বাইটের সংখ্যা ৯১ , যদিও এটি নিজেই উত্তর হিসাবে যোগ্যতা অর্জন করবে না কারণ সেই পর্যায়ে আকারটি হার্ডকোডযুক্ত।
উত্সের জন্য সুস্পষ্ট স্থানটি বৃত্তের কেন্দ্রবিন্দু, তবে বারগুলি উত্পাদন করার সাথে আরও বেশি কমান্ড জড়িত রয়েছে। সুতরাং আমি উত্সটি 1.5 এর নীচে নীচের বারের নীচে স্থানান্তরিত করেছি, যা ভগ্নাংশের সংখ্যা এবং প্রয়োজনীয় নেতিবাচক সংখ্যা হ্রাস করে। এটি বৃত্তের কেন্দ্রের সাথে উল্লম্ব লাইনের উপর থেকে যায়, যা গুরুত্বপূর্ণ কারণ লাইন E এই উল্লম্ব রেখা থেকে শুরু হয়।
প্রকৃতপক্ষে, আমি কেবল অঙ্কনের বাইরে 3 টি সংখ্যা গণনা করতে হয়েছিল: সি আকারের উপরের অভ্যন্তর কোণ (5 কোষ 40, 5 পাপ 40 + 1.5) = (3.8302,3.1394 + 1.5) = প্রায় (12 / 3.1, 4.6) এবং লাইনের গ্রেডিয়েন্ট E: x / y = 3.8302 / (6 + 3.1394) = 0.4157 = প্রায় 1 / 2.4
যেহেতু আমার কাছে কেবল বিনামূল্যে মূল্যায়ন সংস্করণ রয়েছে (ব্যাখ্যা করা), আমি প্রতীক উচ্চতাটিকে ব্যবহারকারী ইনপুট হিসাবে নিই। আপনি যদি পূর্ণ সংস্করণ (29.99GBP) কিনে থাকেন তবে আপনি সংকলন করতে পারেন এবং এর সাথে কমান্ড লাইনটি পড়তে পারেন w=VAL(@cmd$)/12
।
অবহেলিত কোড
গল্ফযুক্ত কোডে, কেবল একটি ভিডিইউ স্টেটমেন্ট রয়েছে, তবে বর্ণহীন কোডে আমি এটিকে স্পষ্টতার জন্য কয়েকটি ভাগে বিভক্ত করি। এছাড়াও, যেহেতু বিবিসি p,0,
বেসিকটি সামান্য এডিয়ান , সংমিশ্রণটি গল্ফ করা যেতে পারে p;
তবে আমি এটিকে স্পষ্টতার জন্য ছেড়ে দিয়েছি।
INPUT h
w=h/12 :REM w is the width of the line, which is 1/12 the height of the symbol, hardcoded at 900.
s=w/2.4 :REM s/w is the gradient x/y of line E. s is the horizontal offset of the top and bottom of the ends of horizontal bars
p=25 :REM VDU p,action,x;y; is the equivalent of PLOT action,x,y
VDU 22,6 :REM change mode
VDU 29,640;400; :REM set origin
VDU p,4,0;1.5*w; :REM move to centre of circle
VDU p,153,6*w;0; :REM draw circle in foreground colour
VDU p,4,0;1.5*w; :REM move to centre of circle
VDU p,159,h/3.1;4.6*w; :REM draw circle in background colour, ending at the upper inner point of the C shape.
VDU p,0,9*s;9*w; :REM move relative along slant gradient, 9 spaces in y direction, to define the upper cut on the circle
VDU p,87,h/3.1;-19*w; :REM draw triangle in background colour, based on the last two points and the absolute point specified here (vertical line for lower cut)
VDU p,4,-7.5*w;0; :REM move absolute to bottom left of lower bar
VDU p,0,s;w; :REM move relative to top left of lower bar
VDU p,85,4.5*s;0; :REM draw triangle to bottom right corner of lower bar (absolute)
VDU p,81,s;w; :REM draw triangle to top right of lower bar (relative)
VDU p,0,s;w; :REM move relative to bottom right of upper bar
VDU p,0,s;w; :REM move relative to top right of upper bar
VDU p,85,-7.5*w;2*w; :REM draw triangle to bottom left of upper bar (absolute)
VDU p,81,s;w; :REM draw triangle to top left of upper bar (relative)