पेंट प्रोग्राम बनाएं!


51

परिचय

एक दिन, आप अपने बच्चे को दिखा रहे थे कि कंप्यूटर पर कैसे आकर्षित किया जाए। आप mspaint.exeरन बार में टाइप करें । आपके डर से, यह कहता है कि "कोई भी वस्तु आपकी खोज से मेल नहीं खाती"। आपको पेंट का एक सरल संस्करण बनाना होगा ताकि आपका बच्चा आकर्षित हो सके!

चुनौती

आपको एक साधारण ड्राइंग प्रोग्राम बनाना होगा। ऐसा करने के लिए, एक सफेद डिस्प्ले विंडो (99x99 पिक्सेल से अधिक) खोलें। जब भी माउस को दबाया जाता है, उस पिक्सेल को बदल दें जिस पर माउस काला है।

यह , इसलिए बाइट्स में सबसे कम जवाब जीतता है!


8
क्या इसके लिए पिक्सेल होना आवश्यक है? या यह 99x99 वर्ग हो सकता है?
f --n 21tɪk

2
इसे कब तक चलाने की आवश्यकता है?
R

2
जब टीआई-बेसिक Penठीक यही करता है: ओ
टाइमटेक

1
@ राइकर इसे कम से कम 10 सेकंड के लिए चलना चाहिए, अधिमानतः हमेशा के लिए
pydude

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

एक वीजीए ग्राफिक्स कार्ड, और किसी भी Microsoft-संगत माउस ड्राइवर की उपस्थिति मानता है।

-2 बाइट्स @berendi को धन्यवाद!

स्क्रीनशॉट

यह काम किस प्रकार करता है:

            |   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% Microsoft-संगत न हो। आपने परीक्षण के लिए किस ड्राइवर का उपयोग किया?
कोड़ी ग्रे

2
हम्म। डिबगर (अच्छे पुराने DEBUG.COM, बेशक!) के साथ कोड चलाने के बाद, ऐसा लगता है कि यह क्यूटहाउस ड्राइवर के साथ कोई समस्या नहीं है। एक बटन के बिना, INT 33h0 में वापस आ रहा है BX, और यह उम्मीद के मुताबिक FFFFh को घटाया जाता है, लेकिन अभी भी एक रेखा खींची जा रही है। शायद ऐसा इसलिए है क्योंकि मोड 11h में केवल एक वीडियो पेज है, और अमान्य पृष्ठ संख्या स्वचालित रूप से तय की जा रही है? मैं VM VirtualBox पर परीक्षण कर रहा हूं, इसलिए शायद यह कुछ ऐसा है जिसका BIOS कार्यान्वयन कर रहा है।
कोड़ी ग्रे

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 स्क्रैच बाइट्स

स्क्रैच को व्यावहारिक रूप से इस तरह की चीजों के लिए डिज़ाइन किया गया था।

इसे ऑनलाइन आज़माएं!


क्या यह वास्तव में पिक्सेल करता है? इसके अलावा, यदि आप माउस को तेजी से क्लिक करते हैं, तो इसे थोड़ा सा पकड़कर, यह अलग-अलग परिणाम पैदा करता है (बिना इसे पूरा किए)। मुझे लगता है कि यह अमान्य है।
R

19
यह 10 स्क्रैच बाइट्स नहीं है, स्कोरिंग के अनुसार हम वर्तमान में उपयोग करते हैं।
ओकेक्स

2
आपको शायद टेक्स्ट, या SB2 फ़ाइल के आकार में बदलने के लिए स्क्रैचब्लॉक्स ऐप का उपयोग करना चाहिए।
मैथ्यू रोह

2
मैं उस स्कोरिंग का उपयोग कर रहा हूं जो मैंने पहले स्क्रैच उत्तरों के साथ उपयोग किया था। क्या कोई मुझे वर्तमान स्कोरिंग से जोड़ सकता है? @ ओकेएक्स
dkudriavtsev

8
@ मेंडेलीव मैं निश्चित नहीं हूं, लेकिन वह शायद इस स्क्रैच स्कोरिंग प्रणाली का उल्लेख कर रहे हैं ।
FreeAsInBeer

20

HTML + जावास्क्रिप्ट (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.अपने JS की शुरुआत से ड्रॉप करके 2 बाइट्स बचाएं । @Anoplexian, वह डिफ़ॉल्ट बॉडी marginहै जो कुछ पिक्सों द्वारा चीजों को फेंक रहा है।
झबरा

4
मैं यह काम कैसे पूरा कर सकता हूं? मैं परिणाम क्षेत्र में क्लिक कर रहा हूं और यह कुछ भी नहीं कर रहा है।
नंबरमानिक

1
@Anoplexian यह एक ज्ञात मुद्दा है; एक तत्व पर माउस कर्सर की सापेक्ष स्थिति प्राप्त करने का कोई विश्वसनीय तरीका नहीं है (बड़े, ब्राउज़र-विशिष्ट कार्यों में कमी जो एक नए प्रकार के सीएसएस पैडिंग पेश किए जाने पर विफल होते हैं)।
wizzwizz4

17

C + Win32, 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, अन्यथा आपको कई मॉनिटरों के साथ गलत परिणाम मिलेंगे।
कोड़ी ग्रे

@ क्वेंटिन, यह c ++ में काम करेगा लेकिन c में नहीं। मैं c ++ का उपयोग कर सकता था लेकिन फिर मैंने लिखा int mainहोगा जिसमें 4 और बाइट्स शामिल होंगे।
जोहान डू टिट

@ कोडी, निष्पक्ष टिप्पणी। मेरे पास परीक्षण करने के लिए एक बहु मॉनिटर सिस्टम नहीं है लेकिन क्या आपको लगता है कि इसका उपयोग करना (short)LOWORD()और (short)HIWORD()समस्या का समाधान होगा?
जोहान डू टिट

क्या क्वेंटिन ने सुझाव दिया कि सी के किसी भी आधुनिक संस्करण में ठीक काम करता है, जिसमें C99 भी शामिल है। बेशक, आप Microsoft के C कंपाइलर का उपयोग कर रहे हैं, जो कि C89 / 90 में वापस आ गया है, इसके ड्यूरेटेड वैरिएबल स्कोपिंग रूल्स के साथ। C89 यह भी है कि आपको mainफ़ंक्शन के रिटर्न प्रकार को छोड़ देने की अनुमति है (क्योंकि निहित- intनियम)। केवल समस्या है, return 0;C89 और MSVC में अपरिभाषित व्यवहारों को छोड़ देना । C99 और C ++ में, आपको रिटर्न प्रकार की आवश्यकता होती है main, लेकिन return 0;यह अंतर्निहित है और इस प्रकार अनावश्यक है। ठीक है, भाषा कोड गोल्फ के लिए नहीं बनाई गई थी। :-)
कोडी ग्रे

10

प्रसंस्करण, 98 79 बाइट्स

19 बाइट्स ने @dimaima को धन्यवाद दिया

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
}

क्लिक करें


@dzaima मुझे नहीं पता था कि size(100,100);इसका उल्लेख नहीं है, धन्यवाद! (यह भी मुझे नहीं पता कि मैंने if(mousePressed)बिट क्यों नहीं देखा )
क्रिक्टी लिथोस

7

जावास्क्रिप्ट ईएस 6, 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 के साथ हलकों) को पेंट करता है। दबाएँ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, स्कोर को 5 से कम करना। ( unknown GLUT entry glutInitहालांकि मुझे एक त्रुटि हो रही है , लेकिन शायद मेरी ग्लूट बस काम नहीं करती है; इस मशीन पर इसका इस्तेमाल कभी नहीं किया है।)
काउंटरक्लॉकविज़ को चालू करना बंद कर दिया

@ceasedtoturncounterclockwis: आह, संकेत के लिए धन्यवाद। मेरे पास अपने सिस्टम पर 1.10.2.3 था और अब नवीनतम संस्करण में अपडेट किया गया।
नीमी

5

स्माइलबासिक 2, 52 51 बाइट्स

यह एक स्माइलबासिक के डैडी, पेटिट कंप्यूटर (और एक दो बाइट से छोटा है) में चलता है ।

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 बाइट बचा सकते हैं ।
12M2121

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 स्थापित है। जैसा कि यह उत्तर वर्तमान में है, इसका अधिक "HTML" उत्तर है, n ot एक जावास्क्रिप्ट एक।
कॉनर ओ'ब्रायन

1
@ ConorO'Brien मैं अगली बार ऐसा करना सुनिश्चित करूँगा। मैंने आपके सुझावों का उपयोग करते हुए उत्तर को अपडेट किया।
नील

4

SpecBAS - 61 59 बाइट्स

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

ब्लैक पहले से ही डिफॉल्ट पेन कलर है, लेकिन बैकग्राउंड आमतौर पर ग्रे का नॉटी शेड होता है, इसलिए CLS 15इसे ब्राइट व्हाइट में सेट करें।

यहाँ छवि विवरण दर्ज करें


अधिकांश बेसिक वेरिएंट को कमांड लाइन और उस लाइन के कोड के बीच स्थान की आवश्यकता नहीं होती है।
पावेल

SpecBAS आपके हिट रिटर्न ( 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 बाइट्स

-20 बाइट्स @cfrick को इंगित करने के लिए धन्यवाद कि मैं 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)))
cfrick

@ Cfrick LOL, मैं हमेशा भूल जाता हूं useक्योंकि यह "उचित नहीं" है। धन्यवाद।
Carcigenicate


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()

कछुआ आयात * से; अप (); onclick (लैम्ब्डा * x: गोटो (* एक्स) या डॉट (1)); किया ()
Innisfree

यही कारण है कि 70 बाइट्स है
Innisfree

2

एक्सेल VBA, 62 बाइट्स

अनाम VBE तत्काल विंडो फ़ंक्शन जो उपयोगकर्ता को किसी भी शीट पर बस इसे चुनकर आकर्षित करने की अनुमति देता है

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

नमूना आउटपुट

यहाँ छवि विवरण दर्ज करें


1

HTML + जावास्क्रिप्ट, 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

HTML + CSS + JavaScript (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>

HTML + CSS + JavaScript (ES6), 8 + 22 + 69 = 99 बाइट्स

यह एक डिफ़ॉल्ट की भरपाई के लिए प्रयास करता है marginके <body>तत्व है, लेकिन यह ब्राउज़र और उपयोगकर्ता एजेंट स्टाइलशीट भर में अलग हो सकता है। Chrome में सफलतापूर्वक परीक्षण किया गया।

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>

HTML + CSS + JavaScript (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( पर इंटरेक्टिव संस्करण के बारे में पढ़ सकते हैं


यह चुनौती का जवाब नहीं देता है: जहां तक ​​मुझे पता है कि TI calcs माउस इनपुट को संभाल नहीं सकता है।
ग्रिम्मी

2
@Grimy यदि आप जोर देते हैं कि आप USB माउस इनपुट प्राप्त करने के लिए हमेशा usb8x लाइब्रेरी का उपयोग कर सकते हैं। लेकिन मुझे यकीन है कि डिफ़ॉल्ट कर्सर नेविगेशन पर्याप्त होगा।
टिमटेक

1

लुआ (लव 2 डी फ्रेमवर्क), 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

काफी आसान है कि यह कैसे काम करता है। चीजों को छोटा करने के लिए पहले कुछ आरंभीकरण करें। इसके बाद यह जांच करेगा कि मूस को क्लिक किया गया है और यह पॉइंट्स को एरे पर बचाता है। उसके बाद यह अंक खींचता है। इसके अलावा यह सफेद और काले रंग के कारण डिफ़ॉल्ट रूप से रंग सेट करता है :) के आसपास का दूसरा तरीका है :)
और यहां चित्र आता है:

यहाँ छवि विवरण दर्ज करें


1
मानो या न मानो, मैं यहाँ आया था Love2d का उपयोग कर एक उत्तर पोस्ट करने के लिए के रूप में मैं केवल हाल ही में इसके बारे में पता चला और इसे प्यार करता हूँ, तो अच्छा प्रयास के लिए +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 बाइट्स होते हैं!
डिंप्प

1
मैं यहाँ उसी तरह का आया था, यह देखकर अच्छा लगा कि यहाँ अन्य लोग हैं जो इसे जानते हैं: D धन्यवाद :)
लाइकिया


1

glslsandbox 232 बाइट्स

पुरानी पोस्ट लेकिन यह दिलचस्प पाया गया।
चूंकि प्रसंस्करण पहले से ही किया गया था इसलिए मैंने कुछ अलग करने का फैसला किया।

इससे यह पता चलता है कि माउस दबाया गया है या नहीं, इसलिए नहीं कि पिड्यूड ने लगभग क्या मांगा।

#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
PPCG में, यदि चुनौती का उल्लेख नहीं किया गया है, तो रिक्त स्थान और सब कुछ सामान्य रूप में गिना जाता है (डिफ़ॉल्ट यूटीएफ -8 द्वारा पसंद के एन्कोडिंग में बाइट्स के रूप में)। तो आपका स्कोर 92 बाइट्स होगा क्योंकि कार्यक्रम को तोड़ने के बिना 1 स्थान को हटाया नहीं जा सकता है, लेकिन दूसरे स्थान को सुरक्षित रूप से हटाया जा सकता है।
dzaima

0

WxWidgets के साथ UCBlogo, 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चर केवल एक wxWidgets निर्माण में काम करता है और मैं एक आधुनिक लिनक्स पर wxWidgets के साथ UCBLogo बनाने के लिए संघर्ष कर रहा हूं (waddyamean जिसे आप पॉइंटर नहीं कर सकते हैंint वापस और पीछे ?)।

WxWidgets के बिना UCBlogo, 73 बाइट्स

इच्छित प्रभाव को देखने के लिए, आप एक अनंत लूप के साथ इस लंबे संस्करण को चला सकते हैं।

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]
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.