একটি পেইন্ট প্রোগ্রাম তৈরি করুন!


51

ভূমিকা

একদিন, আপনি আপনার বাচ্চাকে কম্পিউটারে আঁকতে দেখিয়েছিলেন showing আপনি mspaint.exeরান বার টাইপ করুন । আপনার ভয়াবহতার কাছে এটি বলে যে "আপনার অনুসন্ধানের সাথে কোনও আইটেম মেলে না"। আপনার ছাগলছানা আঁকতে পারে তাই আপনাকে অবশ্যই রঙের একটি সাধারণ সংস্করণ তৈরি করতে হবে!

চ্যালেঞ্জ

আপনার অবশ্যই একটি সাধারণ অঙ্কন প্রোগ্রাম তৈরি করা উচিত। এটি করতে, একটি সাদা ডিসপ্লে উইন্ডো খুলুন (99x99 পিক্সেলের চেয়ে বড়)। যে কোনও সময় মাউস টিপে গেলে, পিক্সেলটি পরিবর্তন করুন যা মাউসটি কালো হয়ে গেছে।

এটি , তাই বাইট জেতে সংক্ষিপ্ত উত্তর!


8
এটি পিক্সেল করা প্রয়োজন? বা এটি 99x99 স্কোয়ার হতে পারে?
fəˈnɛtɪk

2
এটি চালানোর জন্য কতক্ষণ প্রয়োজন?
21

2
যখন টিআই- Pen
বেসিকস

1
@ রিকার এটি কমপক্ষে 10 সেকেন্ডের জন্য চালানো উচিত, সম্ভবত চিরকালের জন্য
পাইডুড

1
99 × 99 এর চেয়েও বড় কি তাই প্রতিটি মাত্রার জন্য দশমিক স্বীকৃতিতে আমাদের তিনটি অঙ্ক ব্যবহার করতে হবে? 99 × 100 বা 100 × 99 কি বৈধ হবে?
সেবাস্তিয়ান সাইমন

উত্তর:


87

8086 মেশিন কোড, 32 31 28 26 বাইট

00000000  b8 0f 00 cd 10 b8 02 10  ba 18 01 cd 10 b8 03 00  |................|
00000010  cd 33 4b b8 01 0c eb f3  3f 00                    |.3K.....?.|
0000001a

একটি ভিজিএ গ্রাফিক্স কার্ড এবং যে কোনও মাইক্রোসফ্ট-সামঞ্জস্যপূর্ণ মাউস ড্রাইভারের উপস্থিতি অনুমান করে।

-২ বাইটস @ বারেন্ডিকে ধন্যবাদ!

স্ক্রিনশট

কিভাবে এটা কাজ করে:

            |   org 0x100
            |   use16
b8 0f 00    |       mov ax, 0x000f      ; set screen mode: 640x350 monochrome
cd 10       |       int 0x10            ; call video bios
b8 02 10    |       mov ax, 0x1002      ; set palette
ba 18 01    |       mov dx, palette     ; pointer to palette data
cd 10       |   @@: int 0x10            ; call video bios
b8 03 00    |       mov ax, 0x0003      ; get mouse position in (CX, DX) and button status in BL
cd 33       |       int 0x33            ; call mouse driver
4b          |       dec bx              ; if no buttons pressed, --BX = 0xFFFF (invalid page)
b8 01 0c    |       mov ax, 0x0c01      ; plot pixel with color AL at (CX, DX) in page BH
eb f3       |       jmp @b              ; repeat
3f 00       |   palette db 0x3f, 0x00   ; palette in 2:2:2 rgb. color 0 = white, 1 = black.
            |                           ; this should be a 17-byte struct, but we only care about the first two colors here

এখানেই শেষ এটা পেতে ওখানে যাও. কোনও জাদু জড়িত নেই, মাত্র কয়েকটি ফাংশন কল।


1
পরিষ্কার, পরিষ্কার এবং চতুর কোড। খুব সুন্দরভাবে সম্পন্ন! আমি কোথাও দেখতে পাচ্ছি না এটি আরও আকারের জন্য অনুকূলিত করা যেতে পারে। কোনও কারণে, যখন আমি ক্রেটমাউস ড্রাইভারটি ব্যবহার করে এটি চেষ্টা করেছি, তখন মাউস বোতামটি ধরে রাখা ছাড়াই এটি আঁকবে , তবে এটি কেবল ক্রেতমাউসকে 100% মাইক্রোসফ্ট-সামঞ্জস্যপূর্ণ না করার সমস্যা হতে পারে। আপনি কোন ড্রাইভারটি পরীক্ষার জন্য ব্যবহার করেছেন?
কোডি গ্রে

2
হুম। একটি ডিবাগার দিয়ে কোড চালানোর পরে (অবশ্যই ভাল পুরানো DEBUG.COM, অবশ্যই!), এটি প্রদর্শিত হচ্ছে এটি ক্রেটমাউস ড্রাইভারের ক্ষেত্রে কোনও সমস্যা নয়। বোতামটি ধরে না রেখে, INT 33h0 ইন ফিরে আসছে BX, এবং এটি প্রত্যাশা অনুযায়ী এফএফএফএফ-তে হ্রাস পেয়েছে, তবে একটি লাইন এখনও টানা হচ্ছে। সম্ভবত এটি কারণ মোড 11 এইচটিতে কেবল একটি ভিডিও পৃষ্ঠা রয়েছে এবং অবৈধ পৃষ্ঠা নম্বরটি স্বয়ংক্রিয়ভাবে ঠিক হয়ে গেছে? আমি ভিএম ভার্চুয়ালবক্সে পরীক্ষা করছি, তাই এটির বায়োস বাস্তবায়ন এমন কিছু হতে পারে।
কোডি গ্রে

2
দেখে মনে হচ্ছে VirtualBox এখানে দায়ী, এটা শুধু পুরাপুরি পৃষ্ঠা নম্বর উপেক্ষা করে: virtualbox.org/browser/vbox/trunk/src/VBox/Devices/Graphics/...
user5434231

2
বিল অ্যাটকিনসন নিজেও এতে গর্বিত হবেন। দুর্দান্ত কাজ।
হোসনেম

4
-2 বাইট গত অপসারণ int 0x10, jmpদ্বিতীয় ফিরে int 0x10পরিবর্তে। মধ্যে অফসেট jmpঅবশেষ একই, ঠিকানা সমন্বয়mov dx
প্রতিবাদ - berendi

25

স্ক্র্যাচ, 10 স্ক্র্যাচ বাইট

স্ক্র্যাচ ব্যবহারিকভাবে এই জাতীয় জিনিসগুলির জন্য ডিজাইন করা হয়েছিল।

এটি অনলাইন চেষ্টা করুন!


এটি কি আসলে পিক্সেল করে? এছাড়াও, যদি আপনি কিছুক্ষণ ধরে এটি ধরে রাখার জন্য দ্রুত মাউস ক্লিক করেন তবে এটি বিভিন্ন ফলাফল (অবশ্যই এটিকে সরানো ছাড়াই) উত্পন্ন করে। আমি মনে করি এটি এটিকে অবৈধ করে দেয়।
আর

19
এটি বর্তমানে ব্যবহার করা স্কোরিং অনুসারে 10 টি স্ক্র্যাচ বাইট নয়।
Okx

2
আপনার সম্ভবত টেক্সটে রূপান্তর করতে স্ক্র্যাচব্লকস অ্যাপ্লিকেশনটি ব্যবহার করা উচিত, বা এসবি 2 ফাইলের আকার।
ম্যাথু রোহ

2
আমি আগের স্ক্র্যাচ উত্তরগুলির সাথে ব্যবহৃত স্কোরিংটি ব্যবহার করছি। কেউ কি আমাকে বর্তমান স্কোরিংয়ের সাথে লিঙ্ক করতে পারেন? @ ওকএক্স
ডকুড্রিয়াভসেভ

8
@ মেন্ডেলিভ আমি নিশ্চিত নই তবে তিনি সম্ভবত এই স্ক্র্যাচ স্কোরিং সিস্টেমের কথা উল্লেখ করছেন ।
FreeAsInBeer

20

এইচটিএমএল + জাভাস্ক্রিপ্ট (ES6), 66 64 62 বাইট

এইচটিএমএল

<canvas id=c>

জাভাস্ক্রিপ্ট

onclick=e=>c.getContext`2d`.fillRect(e.x,e.y,1,1)

গুস্তাভো রডরিগস এবং শেগির কাছ থেকে 2 বাইটের জন্য 2 বাইট সংরক্ষণ করা হয়েছে।

onclick=e=>c.getContext`2d`.fillRect(e.x,e.y,1,1)
/* This css isn't needed for the program to work. */
*{margin: 0}
#c{border:1px solid black}
<canvas id=c>


কীভাবে <canvas id=c>?
গুস্তাভো রডরিগস

2
এটি প্রকৃতপক্ষে আমার কর্সারটি যেখানে বিন্দুতে রাখে না, তীরটির নীচে ডানদিকে রাখে। এটা কি ইচ্ছাকৃত?
অ্যানোপ্লেক্সিয়ান

c.আপনার জেএস শুরু থেকে বাদ দিয়ে 2 বাইট সংরক্ষণ করুন । @ অ্যানোপ্লেক্সিয়ান, এটি marginকয়েক পিক্সেল দিয়ে জিনিস ফেলে দেওয়া ডিফল্ট বডি ।
শেগি

4
আমি এই কাজটি কীভাবে করব? আমি ফলাফলের অঞ্চলে ক্লিক করছি এবং এটি কিছুই করছে না।
নম্বরমানিয়াক

1
@ অ্যানোপ্লেক্সিয়ান এটি একটি পরিচিত সমস্যা; কোনও উপাদানে মাউস কার্সারের আপেক্ষিক অবস্থান পাওয়ার কোনও নির্ভরযোগ্য উপায় নেই (নতুন, সিএসএস প্যাডিংয়ের নতুন ধরণের প্রবর্তন করার পরে ব্যর্থ হওয়া ব্রাউজার-নির্দিষ্ট ফাংশনগুলির সংক্ষিপ্তসার)।
wizzwizz4

17

সি + উইন 32, 209 200 195 বাইট

ধন্যবাদ, কোডি এবং কোয়ান্টিন! আমি এ থেকে মুক্তি পাওয়ার আশা করছিলাম #include <windows.h>তবে এটি সমস্ত ধরণের ত্রুটি বাড়ে। কমপক্ষে এটি একাধিক মনিটরের সাথে সঠিকভাবে কাজ করছে ...

#include<windows.h> 
struct{int h,m,w,x:16,y:16;}m;h;main(){for(h=CreateWindow("EDIT","",1<<28,0,0,199,199,0,0,0,0);GetMessage(&m,h,0,0);m.m^513?DispatchMessage(&m):SetPixel(GetDC(h),m.x,m.y,0));}

পূর্ববর্তী কোড:

#include<windows.h> 
main(){MSG m;HWND h;for(h=CreateWindow("EDIT","",1<<28,0,0,199,199,0,0,0,0);GetMessage(&m,h,0,0);m.message^513?DispatchMessage(&m):SetPixel(GetDC(h),LOWORD(m.lParam),HIWORD(m.lParam),0));}

এখানে চিত্র বর্ণনা লিখুন


2
আমি এখনই পরীক্ষা করতে পারছি না, তবে আমি মনে করি আপনি দুটি বাইট সংরক্ষণের hজন্য forপ্রারম্ভিককরণের ঘোষণাকে মার্জ করতে পারবেন :)
কোয়ান্টিন

আমি বুঝতে পারছি এই কোড গলফ এবং এটি এখানে কাম্য হতে পারে, কিন্তু LOWORDএবং HIWORDহয় না কার্সার বের করে আনতে সঠিক উপায় একটি বস্তাবন্দী থেকে স্থানাঙ্ক LPARAM। আপনার ব্যবহার করা উচিত GET_X_LPARAMএবং GET_Y_LPARAMঅন্যথায় আপনি একাধিক মনিটরের সাথে ভুল ফলাফল পাবেন।
কোডি গ্রে

@ কুইন্টিন, এটি সি ++ তে কাজ করবে তবে সি তে নয়। আমি সি ++ ব্যবহার করতে পারতাম তবে তারপরে আমি লিখতাম int mainযা আরও 4 টি বাইট যুক্ত করত।
জোহান ডু টোইট

@ কোডি, ফেয়ার মন্তব্য। আমার কাছে পরীক্ষার জন্য কোনও মাল্টি মনিটর সিস্টেম নেই তবে আপনি কী ব্যবহার করে মনে করেন (short)LOWORD()এবং (short)HIWORD()সমস্যাটি সমাধান করবেন?
জোহান ডু টোইট

কোয়ান্টিনের পরামর্শ যা সি 99 সহ সি এর যে কোনও আধুনিক সংস্করণে কাজ করে। অবশ্যই, আপনি মাইক্রোসফ্ট এর সি সংকলক ব্যবহার করছেন, যা C89 / 90-এ আটকে আছে, এর ভেরিয়েবল স্কোপিং বিধি দ্বারা। C89 এছাড়াও কেন আপনাকে mainফাংশনের রিটার্নের ধরণের (অন্তর্নিহিত intনিয়মের কারণে) বাদ দিতে দেয় । কেবল সমস্যাটি হ'ল return 0;সি 98 এবং এমএসভিসিতে অনির্ধারিত আচরণের কারণগুলি বাদ দেওয়া । C99 এবং C ++ এ আপনার জন্য রিটার্ন টাইপ দরকার mainতবে এটি return 0;অন্তর্নিহিত এবং এইভাবে অপ্রয়োজনীয়। ভাল, ভাষা কোড গল্ফিংয়ের জন্য তৈরি করা হয়নি। :-)
কোডি গ্রে

10

প্রক্রিয়াজাতকরণ, 98 79 বাইট

@ বাইজাইমা 19 বাইট সংরক্ষণ করেছে

void setup(){background(-1);}void draw(){if(mousePressed)point(mouseX,mouseY);}

ব্যাখ্যা (পুরানো)

void setup() {
  size(100,100);            // size of the sketch
  background(-1);           // set the background to white
                            // 1 byte shorter than background(255);
}

void draw(){}               // required for mousePressed to work

void mousePressed() {       // function that is called whenever the mouse is pressed
  point(mouseX, mouseY);    // draw a point at the mouse's coordinates
                            // the colour is set to black as default
}

ক্লিকেটি ক্লিক করুন


@ ডিজাইমা আমি জানতাম না যে size(100,100);উল্লেখ করার দরকার নেই, ধন্যবাদ! (এছাড়াও আমি কেন জানি না তাও জানি নাif(mousePressed) কিছুটা
দেখিনি

7

জাভাস্ক্রিপ্ট ES6, 126 বাইট

ক্রোমে পরীক্ষিত।

onclick=e=>document.body.outerHTML+=`<a style=position:fixed;top:${e.y}px;left:${e.x}px;width:1px;height:1px;background:#000>`

এটি অনলাইন চেষ্টা করুন!

onclick=e=>document.body.outerHTML+=`<a style=position:fixed;top:${e.y}px;left:${e.x}px;width:1px;height:1px;background:#000>`


7

হাস্কেল, 189 184 170 169 বাইট

import Graphics.Gloss.Interface.Pure.Game
main=play FullScreen white 9[]Pictures(#)(\_->id)
EventKey(MouseButton LeftButton)Down _(x,y)#l=Translate x y(Circle 1):l
_#l=l

এটি Glossগ্রন্থাগারটি ব্যবহার করে (v1.11)। এটি একটি পূর্ণ স্ক্রিন উইন্ডো খোলায় এবং বাম মাউস বোতাম টিপে কালো পিক্সেল (আসলে ব্যাসার্ধের 1 দিয়ে বৃত্তগুলি) রঙ করে ts ESCপ্রস্থান করতে টিপুন ।

কিভাবে এটা কাজ করে:

play                 -- handles the whole event handling, screen update, etc. process
    FullScreen       -- use a full screen window
    white            -- use a white background
    9                -- 9 simulation steps per second (see simulation handler below)
    []               -- the initial world state, an emtpy list of circles
    Pictures         -- a function to turn the world state into a picture.
                     -- The world state is a list of translated circles and
                     -- "Pictures" turns this list into a single picture
    (#)              -- event handler, see below
    (\_->id)         -- simulation step handler. Ignore time tick and return the
                     -- world state unchanged. More readable: "\tick world -> world"

EventKey ... # l=... -- if the left mouse button is pressed, add a circle with
                     -- radius 1 translated to the current position of the mouse
                     -- to the world state
_#l=l                -- on all other events do nothing

সম্পাদনা: @ কাউন্টার ক্লকওয়াস ঘুরিয়ে দেওয়ার সময় আমাকে গ্লসটির নতুনতম সংস্করণ সম্পর্কে জানায় যা পূর্ণ স্ক্রিন উইন্ডো ব্যবহার করার সময় 5 বাইট সংরক্ষণ করে। ধন্যবাদ!


FullScreenগ্লস> = 1.11 এ অকার্যকর, স্কোরটি ৫ দ্বারা হ্রাস করুন ( unknown GLUT entry glutInitযদিও আমি একটি ত্রুটি পেয়েছি, তবে সম্ভবত আমার পেটুকু সেটআপটি কাজ করে না; এটি কখনও এই মেশিনে ব্যবহার করেনি))
এন্টার

@ সিসেটটোটারনকাউন্টার ক্লকওয়িস: আহ, ইঙ্গিতটির জন্য ধন্যবাদ আমার সিস্টেমে আমার 1.10.2.3 ছিল এবং এখন সর্বশেষতম সংস্করণে আপডেট হয়েছে।
নিমি

5

স্মাইলব্যাসিক 2, 52 51 বাইট

এই এক SmileBASIC এর বাবা, ক্ষুদে কম্পিউটার রান (এবং এক দুই বাইট খাটো।)

PNLTYPE"OFF
GPAGE 1GCLS 15@A
GPSET TCHX,TCHY
GOTO@A

ব্যাখ্যা:

PNLTYPE"OFF       'turn off keyboard
GPAGE 1           'set graphics to lower screen
GCLS 15           'clear with color 15 (white)
@A                'loop begin
GPSET TCHX,TCHY   'set black pixel at draw location
GOTO@A            'loop

GPSET TCHX,TCHY:GOTO@Aডিফল্ট রঙ 0 (স্বচ্ছ) হওয়ায় আপনি 1 বাইট সংরক্ষণ করতে পারবেন ।
12

4

জাভাস্ক্রিপ্ট + jQuery 138 বাইট

d=$(document.body).click((e)=>d.append("<div style='background:black;width:5;height:5;position:fixed;top:"+e.pageY+";left:"+e.pageX+"'>"))

এটি অনলাইন দেখুন!

ক্লিক এবং ড্র্যাগ সমর্থন যুক্ত করা সহজ হবে, আপনি নির্দেশাবলী অনুযায়ী এবং একটি সংক্ষিপ্ত আকারের জন্য একটি ভেরিয়েবল সেট করতেন, এটি সমর্থিত নয়, "যে কোনও সময় মাউসটি নীচে চেপে রাখা হয়, পিক্সেলটি যে কালোতে পরিণত হয়েছে তা পরিবর্তন করুন" । আমি নির্দেশকে clickইভেন্ট হিসাবে ব্যাখ্যা করেছি ।


3
ফোন করেই বলা যায়! পরের বার, আপনার নতুন উত্তর দেওয়ার পরিবর্তে আপনার পুরানো উত্তরটি মুছে ফেলা উচিত। এছাড়াও, আমি আশঙ্কা করছি যে এটি অবশ্যই একটি নির্দিষ্ট পরিবেশে কাজ করবে - এটি যদি ভ্যানিলা জাভাস্ক্রিপ্ট হয় তবে আপনাকে আপনার জমা দেওয়ার সাথে jQuery এর বাইট গণনাটি অন্তর্ভুক্ত করতে হবে। আপনি এই জমাটিকে "জাভাস্ক্রিপ্ট + jQuery" বলতে পারেন এবং এটি ভাল হবে: সেখানে আপনি ধরে নিতে পারেন যে jQuery ইনস্টল করা আছে। যেহেতু এই উত্তরটি বর্তমানে দাঁড়িয়ে আছে, এর আরও একটি "এইচটিএমএল" উত্তর, জাভাস্ক্রিপ্টের কোনও উত্তর নেই।
কনর ও ব্রায়ান

1
@ কনরও ব্রায়েন আমি পরের বারে তা নিশ্চিত করব। আপনার পরামর্শগুলি ব্যবহার করে আমি উত্তর আপডেট করেছি।
নীল

4

স্পেসবিএএস - 61 59 বাইট

1 CLS 15 
2 IF MOUSEBTN=1 THEN PLOT MOUSEx,MOUSEy
3 GO TO 2

কালো ইতিমধ্যে ডিফল্ট কলমের রঙ, তবে ব্যাকগ্রাউন্ডটি সাধারণত ধূসর রঙের একটি বাজে শেড, তাই CLS 15এটি উজ্জ্বল সাদাতে সেট করে।

এখানে চিত্র বর্ণনা লিখুন


বেশিরভাগ বেসিক ভেরিয়েন্টগুলিকে সেই লাইনের কমান্ড নম্বর এবং কোডের মধ্যে একটি স্থানের প্রয়োজন হয় না।
পাভেল

স্পেসবিএএস আপনার ফিরে আসার পরে সমস্ত স্থানগুলি যুক্ত করেছে ( GOTOপরিণত সহ GO TO)
ব্রায়ান

1
তবে আপনি কি স্পেসগুলি সরিয়ে ফেলতে পারেন এবং এখনও ঠিক আছে? যদি তা হয় তবে আপনি সেগুলি গণনা করবেন না।
পাভেল

যদি ব্যবহারকারী কেবল কালো দিয়ে পেইন্টিং করতে আপত্তি করে না, তবে কেন তিনি ধূসর পটভূমির কথা মনে করবেন?
সিস টিমর্ম্যান

3

স্মাইলব্যাসিক, 70 58 53 বাইট

XSCREEN 4GCLS-1@L
TOUCH OUT,X,Y
GPSET X,Y+240,0GOTO@L

ব্যাখ্যা:

XSCREEN 4 'display one graphics page on both screens
GCLS -1 'fill screen with white
@L 'loop
TOUCH OUT,X,Y 'get touch location
GPSET X,Y+240,0 'draw black pixel at touch position, offset by the height of the top screen.
GOTO @L 'loop

3

ক্লোজার, 91 71 বাইট

আমি useআমার আমদানি সঙ্কুচিত করতে ব্যবহার করতে পারি তা উল্লেখ করার জন্য @ সিফ্রিককে -২০ বাইট ধন্যবাদ জানায়

(use 'quil.core)(defsketch P :mouse-dragged #(point(mouse-x)(mouse-y)))

কুইল ব্যবহার করে লাইব্রেরি । যখনই মাউস টানা হবে তখন একটি বিন্দু আঁকুন।

মূলত প্রসেসিংয়ের উত্তর, যেহেতু কুইল ক্লোজারের জন্য একটি প্রসেসিং র‌্যাপার।

(q/defsketch P ; Start a new drawing

             :mouse-dragged ; Attach a mouse drag listener
             ; that draws a point at the current mouse location
             #(q/point (q/mouse-x) (q/mouse-y))) 

এখানে চিত্র বর্ণনা লিখুন


71:(use 'quil.core)(defsketch P :mouse-dragged #(point(mouse-x)(mouse-y)))
সিএফ্রিক

@ ক্রিফ্রিক এলওএল, আমি সবসময় ভুলে যাই useকারণ এটি "যথাযথ নয়"। ধন্যবাদ.
কারসিজিনিট

3

টিসিএল / টাকা, 45 46 51 57

gri [can .c]
bind . <1> {.c cr o %x %y %x %y}

pentagram


এটি একটি পিয়াগলি পেন্টোগ্রাম 😁
জোহান ডু

1
@ জোহান্দুটাইট: আপনি কি তারকাদের পছন্দ করেন না?
সার্জিওল

2

জাভা 7, 353 বাইট

import java.awt.*;import java.awt.event.*;class M{static int x,y;public static void main(String[]a){Frame f=new Frame(){public void paint(Graphics g){g.drawLine(x,y,x,y);}};f.addMouseListener(new MouseAdapter(){public void mousePressed(MouseEvent e){x=e.getX();y=e.getY();f.repaint(x,y,1,1);}});f.setBackground(Color.WHITE);f.resize(500,500);f.show();}}

Ungolfed:

import java.awt.*;
import java.awt.event.*;

class M {
    //store the last point
    static int x, y;
    public static void main(String[] a) {
        Frame f = new Frame() {
            @Override
            public void paint(Graphics g) {
                g.drawLine(x, y, x, y);
            }
        }
        f.addMouseListener(new MouseAdapter() {
            @Override
            public void mousePressed(MouseEvent e) {
                x = e.getX();
                y = e.getY();
                //repaint only the "new pixel"
                f.repaint(x, y, 1, 1);
            }
        });
        //default background is grey
        f.setBackground(Color.WHITE);
        f.resize(500, 500);
        f.show();
    }
}

2

পাইথন 2 এবং পাইথন 3, 82 বাইট (বা 77?)

from turtle import *;up();onscreenclick(lambda x,y: goto(x,y)or dot(1));mainloop()

কচ্ছপ মডিউলটি ব্যবহার করে, এটি খুব খারাপ নয় :)

Ungolfed:

import turtle
turtle.up()

def fun(x, y):
    turtle.goto(x,y)
    turtle.dot(1)

turtle.onscreenclick(fun)
turtle.mainloop()

যদি বিন্দুগুলির মধ্যে লাইন রাখা ঠিক থাকে তবে আপনি আসলে 5 বাইট সংরক্ষণ করতে পারবেন:

from turtle import *;onscreenclick(lambda x,y: goto(x,y)or dot(1));mainloop()

কচ্ছপ আমদানি থেকে *; আপ (); অন্লিক (ল্যাম্বদা * এক্স: গোটো (* এক্স) বা বিন্দু (1)); সম্পন্ন ()
সহস্র 30

এটি 70 বাইট
নিখরচায়

2

এক্সেল ভিবিএ, 62 বাইট

বেনামে ভিবিই তাত্ক্ষণিক উইন্ডো ফাংশন যা ব্যবহারকারীর যেকোন শীটে কেবল এটি নির্বাচন করে আঁকতে দেয়

Cells.RowHeight=48:Do:DoEvents:Selection.Interior.Color=0:Loop

নমুনা আউটপুট

এখানে চিত্র বর্ণনা লিখুন


1

এইচটিএমএল + জাভাস্ক্রিপ্ট, 152 148 বাইট

<body onclick="document.body.innerHTML+='<x style=position:fixed;width:1;height:1;left:'+event.clientX+';top:'+event.clientY+';background:#000;>'"/>

1

টুরিং , 77 বাইট

var x,y,b:int loop mousewhere(x,y,b)if b=1then drawdot(x,y,1)end if end loop

Ungolfed:

var x,y,b : int      
loop
  mousewhere(x,y,b)  % Set (x,y) to mouse co-ords, and b to 1 or 0 indicating if the button is pressed
  if b=1 then
    drawdot(x,y,1)  % Draw a black pixel at (x,y)
  end if
end loop

1

এইচটিএমএল + সিএসএস + জাভাস্ক্রিপ্ট (ES6), 8 + 31 + 64 = 103 বাইট

সিএসএস দিয়ে মজা box-shadow!

s='0 0 0',onclick=e=>p.style.boxShadow=s+=`,${e.x}px ${e.y}px 0`
*{margin:0;width:1px;height:1px
<p id=p>

এইচটিএমএল + সিএসএস + জাভাস্ক্রিপ্ট (ES6), 8 + 22 + 69 = 99 বাইট

এই এক ডিফল্ট অফসেট করার প্রচেষ্টা marginএর <body>উপাদান, কিন্তু এটা ব্রাউজার এবং ইউজার এজেন্ট স্টাইলশীট জুড়ে আলাদা হতে পারে। ক্রোমে সফলভাবে পরীক্ষিত ested

s='0 0 0',onclick=e=>p.style.boxShadow=s+=`,${e.x-8}px ${e.y-16}px 0`
*{width:1px;height:1px
<p id=p>

এইচটিএমএল + সিএসএস + জাভাস্ক্রিপ্ট (ES6), 8 + 18 + 69 = 95 বাইট

অর্ধ-পিক্সেল স্থানাঙ্কগুলিতে অঙ্কিত হওয়ার সাথে সাথে এর মধ্যে পিক্সেলগুলি বড় আকার ধারণ করতে পারে।

s='0 0 0',onclick=e=>p.style.boxShadow=s+=`,${e.x}px ${e.y}px 0 .5px`
*{margin:0;width:0
<p id=p>


1

টিআই-বেসিক, 1 বাইট

Pt-Change(

আমি নিশ্চিত যে টিআই সহ আপনারা বেশিরভাগই Penকমান্ডটি ভেবেছিলেন তবে এটি প্রমাণিত হয়েছে যে এটি টোকানাইজড নয় তাই এটি 3 বাইট হিসাবে গণনা করার পক্ষে সবচেয়ে বেশি অর্থবোধ করবে। এর ইন্টারেক্টিভ সংস্করণটি আপনি http://tibasicdev.wikidot.com/pt-changePt-Change( এ পড়তে পারেন


এটি চ্যালেঞ্জের উত্তর দেয় না: টিআই ক্যালকগুলি মাউস ইনপুট হ্যান্ডেল করতে পারে না, যতদূর আমি জানি।
গ্রিমি

2
@ গ্রিমি আপনি যদি জেদ করেন তবে আপনি সর্বদা ইউএসবি 8 এক্স লাইব্রেরিটি ইউএসবি মাউস ইনপুট পেতে ব্যবহার করতে পারেন। তবে আমি নিশ্চিত যে ডিফল্ট কার্সার নেভিগেশন যথেষ্ট হবে।
টিমটেক

1

লুয়া (love2d ফ্রেমওয়ার্ক), 180 বাইট

গল্ফ সংস্করণ

l=love v,g,m,p=255,l.graphics,l.mouse,{}d=m.isDown function l.draw()g.setBackgroundColor(v,v,v)if d(1)or d(2)then p[#p+1],p[#p+2]=m.getPosition()end g.setColor(0,0,0)g.points(p)end

ungolfed

l=love 
v,g,m,p=255,l.graphics,l.mouse,{}
d=m.isDown 
function l.draw()
  g.setBackgroundColor(v,v,v)
  if d(1)or d(2)then 
    p[#p+1],p[#p+2]=m.getPosition()
  end 
  g.setColor(0,0,0)
  g.points(p)
end

এটি কিভাবে কাজ করে তা বেশ সহজ। জিনিসগুলি খাটো করার জন্য প্রথমে কয়েকটি সূচনা। এটির পরে এটি মাউস ক্লিক করা আছে কিনা তা পরীক্ষা করবে এবং পয়েন্টগুলি অ্যারেতে সংরক্ষণ করবে। তারপরে এটি পয়েন্টগুলি আঁকায় l এছাড়াও এটি রঙকে সাদা এবং কালো কারণের ডিফল্ট হিসাবে নির্ধারণ করে অন্যদিকে :)
এবং এখানে চিত্রটি আসে:

এখানে চিত্র বর্ণনা লিখুন


1
বিশ্বাস করুন বা না করুন, আমি সম্প্রতি লাভ 2 ডি ব্যবহার করে একটি উত্তর পোস্ট করতে এসেছি কারণ আমি সম্প্রতি এটির সম্পর্কে জানতে পেরেছি এবং এটি পছন্দ করেছি, তাই দুর্দান্ত চেষ্টা করার জন্য +1! যাইহোক, আমি মনে করি আপনি এটিকে আরও কিছুটা ছোট করে তুলতে পারেন:l=love v,g,m,p=255,l.graphics,l.mouse,{}function l.draw()g.setBackgroundColor(v,v,v)if m.isDown(1)then p[#p+1],p[#p+2]=m.getPosition()end g.setColor(0,0,0)g.points(p)end যার ফলস্বরূপ 169 বাইট!
DimP

1
আমি এখানে একই কারণে এখানে এসেছি, এখানে আরও অনেক লোক রয়েছে যারা এটি জানেন তা দেখে ভালো লাগল: ডি আপনাকে ধন্যবাদ :)
খুশি হলাম


1

glslsandbox 232 বাইট

পুরানো পোস্ট তবে এটি আকর্ষণীয় বলে মনে হয়েছে।
যেহেতু প্রসেসিং ইতিমধ্যে সম্পন্ন হয়েছে আমি অন্য কিছু করার সিদ্ধান্ত নিয়েছি do

এটি মাউস টিপছে কি না তা আঁকে, তাই পাইডুড যা চেয়েছিল তা নয় তবে প্রায়।

#ifdef GL_ES
precision lowp float;
#endif
uniform float time;uniform vec2 mouse,resolution;uniform sampler2D t;void main(){vec2 f=gl_FragCoord.xy,r=resolution;gl_FragColor=vec4(time<2.||length(f-mouse*r)>2.&&texture2D(t,f/r).x>.1);}

এটি glslsandbox এ চেষ্টা করুন


0

প্রসেসিং, 93 বাইট, 91 বাইট শূন্যস্থান গণনা করা না হলে

void setup(){size(100,100);background(-1);}void draw(){if(mousePressed) point(mouseX,mouseY);}

1
পিপিসিজিতে, যদি চ্যালেঞ্জটিতে উল্লেখ না করা হয়, স্থানগুলি এবং সমস্ত কিছু স্বাভাবিক হিসাবে গণ্য হয় (ডিফল্ট ইউটিএফ -8 অনুসারে পছন্দসই এনকোডিংয়ের বাইট হিসাবে)। সুতরাং আপনার স্কোরটি 92 বাইট হবে কারণ প্রোগ্রামটি ভাঙ্গা না করে প্রথম স্থানটি সরানো যায় না, তবে দ্বিতীয় স্থানটি নিরাপদে সরিয়ে ফেলা যায়।
ডিজাইমা

0

ডাব্লুএক্সডিজ্টস, 65 বাইট সহ ইউসি ব্লগো

setbg 7
setpc 0
ht
pu
make "buttonact[setpos clickpos pd fd 1 pu]

ব্যাখ্যা (ভেরিয়েবলের buttonactজন্য বরাদ্দকৃত কোড প্রতিটি বোতাম ক্লিকের উপর কার্যকর করা হয়):

SetBackground 7 ; white
SetPenColor 0 ; black
HideTurtle
PenUp
make "buttonact [
  SetPos ClickPos
  PenDown
  Forward 1
  PenUp
]

কমপক্ষে, আমি মনে করি এটি কাজ করে। এটি ডকুমেন্টেশন অনুযায়ী হওয়া উচিত , তবে দৃশ্যতbuttonact চলকটি কেবলমাত্র একটি ডাব্লু উইজেটস বিল্ডে কাজ করে এবং আমি আধুনিক লিনাক্সে ডাব্লু উইজেটস সহ ইউসিবি লোগো তৈরির জন্য সংগ্রাম করছি (বাড্ডিয়ামেন আপনি intপিছনে কোনও পয়েন্টার নিক্ষেপ করতে পারবেন না ?)।

ডাব্লু এক্সউজেডস ছাড়াই ইউসিব্লোগো, by৩ বাইট

উদ্দেশ্যে প্রভাবটি দেখতে, আপনি এই অসীম লুপটির সাথে দীর্ঘতর সংস্করণটি চালাতে পারেন।

setbg 7 setpc 0 ht pu
while[1=1][setpos mousepos if[button?][pd] fd 1 pu]

তবে ucblogoএটি আমার মেশিনে ক্র্যাশ হয়ে গেছে ... দেখে মনে হচ্ছে রেসের অবস্থা।

UCBlogo, আসলে আমার মেশিনে কাজ করছে, 80 বাইট

setbg 7 setpc 0 ht pu
while[1=1][setpos mousepos if[button?][pd] fd 1 pu wait 1]
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.