Crea un programma Paint!


51

introduzione

Un giorno, stavi mostrando a tuo figlio come disegnare su un computer. Digiti mspaint.exela barra di esecuzione. Con tuo orrore, dice "Nessun elemento corrisponde alla tua ricerca". Devi creare una versione semplice di vernice in modo che tuo figlio possa disegnare!

Sfida

È necessario creare un semplice programma di disegno. Per fare ciò, aprire una finestra di visualizzazione bianca (più grande di 99x99 pixel). Ogni volta che il mouse viene premuto, cambia il pixel su cui si trova il mouse in nero.

Questo è , quindi vince la risposta più breve in byte!


8
Deve essere pixel? o può essere 99x99 quadrati?
fəˈnɛtɪk,

2
Per quanto deve funzionare?
Rɪᴋᴇʀ

2
Quando TI-Basic Penfa esattamente questo: o
Timtech,

1
@Riker dovrebbe funzionare per almeno 10 secondi, preferibilmente per sempre
pydude il

1
È maggiore di 99 × 99 solo quindi dobbiamo usare tre cifre in notazione decimale per ogni dimensione? 99 × 100 o 100 × 99 sarebbero validi?
Sebastian Simon,

Risposte:


86

8086 codice macchina, 32 31 28 26 byte

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

Presuppone la presenza di una scheda grafica VGA e di qualsiasi driver di mouse compatibile con Microsoft.

-2 byte grazie a @berendi!

screenshot

Come funziona:

            |   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

Questo è tutto quello che c'è da fare. Nessuna magia coinvolta, solo alcune chiamate di funzione.


1
Codice pulito, chiaro e intelligente. Molto ben fatto! Non vedo da nessuna parte che questo può essere ulteriormente ottimizzato per le dimensioni. Per qualche motivo, quando l'ho provato usando il driver CuteMouse, questo si disegna senza che il pulsante del mouse debba essere tenuto premuto, ma potrebbe essere solo un problema con CuteMouse non compatibile al 100% con Microsoft. Quale driver hai usato per i test?
Cody Grey,

2
Hmm. Dopo aver eseguito il codice con un debugger (buon vecchio DEBUG.COM, ovviamente!), Sembra che non sia un problema con il driver CuteMouse. Senza un pulsante premuto, INT 33hviene restituito 0 in BXe questo viene ridotto a FFFFh come previsto, ma viene ancora tracciata una linea. Forse è perché la modalità 11h ha solo una pagina video e il numero di pagina non valido viene automaticamente corretto? Sto testando su VM VirtualBox, quindi forse è qualcosa che sta facendo l'implementazione del BIOS.
Cody Grey,

2
Looks come VirtualBox è la colpa qui, ignora semplicemente il numero di pagina del tutto: virtualbox.org/browser/vbox/trunk/src/VBox/Devices/Graphics/...
user5434231

2
Lo stesso Bill Atkinson ne sarebbe orgoglioso. Lavoro splendido.
Wossname il

4
-2 byte rimuovono l'ultimo int 0x10, jmptornando al secondo int 0x10invece. L'offset in jmprimane lo stesso, aggiusta l'indirizzo inmov dx
berendi - protestando il

25

Scratch, 10 byte scratch

Scratch è stato praticamente progettato per cose come questa.

Provalo online!


Questo fa effettivamente i pixel? Inoltre, se fai clic con il mouse velocemente e tienilo premuto per un po ', si ottengono risultati diversi (senza spostarlo ovviamente). Penso che questo invalida questo.
Rɪᴋᴇʀ

19
Non si tratta di 10 byte di scratch, in base al punteggio attualmente in uso.
Okx,

2
Probabilmente dovresti usare l'app scratchblocks per convertire in testo o le dimensioni del file SB2.
Matthew Roh,

2
Sto usando il punteggio che ho usato con le precedenti risposte di Scratch. Qualcuno può collegarmi al punteggio attuale? @Okx
dkudriavtsev

8
@Mendeleev non ne sono certo, ma probabilmente si riferisce a questo sistema di punteggio di Scratch .
FreeAsInBeer,

20

HTML + JavaScript (ES6), 66 64 62 byte

HTML

<canvas id=c>

JavaScript

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

Salvato 2 byte grazie a Gustavo Rodrigues e 2 byte da Shaggy.

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>


Che ne dici <canvas id=c>?
Gustavo Rodrigues,

2
Questo in realtà mette il punto non dove va il mio cursore, ma in basso a destra della freccia. È intenzionale?
Anoplexian,

Salva 2 byte rilasciando c.dall'inizio dal tuo JS. @Anoplexian, questo è il corpo predefinito che marginbutta via le cose di qualche pixel.
Shaggy,

4
Come faccio a farlo funzionare? Sto facendo clic nell'area dei risultati e non sta facendo nulla.
numbermaniac

1
@Anoplexian Questo è un problema noto; non esiste un modo affidabile per ottenere la posizione relativa del cursore del mouse su un elemento (a corto di grandi funzioni specifiche del browser che falliscono quando viene introdotto un nuovo tipo di riempimento CSS).
wizzwizz4,

17

C + Win32, 209 200 195 byte

Grazie, Cody e Quentin! Speravo di sbarazzarmi del #include <windows.h>ma questo porta a tutti i tipi di errori. Almeno funziona correttamente con più monitor ...

#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));}

Codice precedente:

#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));}

inserisci qui la descrizione dell'immagine


2
Non posso provare in questo momento, bu penso che è possibile unire la dichiarazione di hin forinizializzatore per salvare due byte :)
Quentin

Mi rendo conto che questo è il codice di golf e può essere desiderabile qui, ma LOWORDe HIWORDsono non è il modo corretto per estrarre le coordinate del cursore da un gremito LPARAM. Dovresti usare GET_X_LPARAMe GET_Y_LPARAM, altrimenti otterrai risultati errati con più monitor.
Cody Grey,

@Quentin, che funzionerà in c ++ ma non in c. Avrei potuto usare c ++ ma avrei scritto int mainche avrebbe aggiunto altri 4 byte.
Johan du Toit,

@Cody, commento equo. Non ho un sistema multi monitor da testare ma pensi di utilizzare (short)LOWORD()e (short)HIWORD()risolvere il problema?
Johan du Toit,

Ciò che Quentin ha suggerito funziona benissimo in qualsiasi versione moderna di C, incluso C99. Ovviamente, stai usando il compilatore C di Microsoft, che è bloccato in C89 / 90, con le sue regole di scoping variabile demente. C89 è anche il motivo per cui ti è permesso omettere il maintipo restituito della funzione (a causa della intregola implicita ). L'unico problema è l'omissione delle return 0;cause di comportamento indefinito in C89 e MSVC. In C99 e C ++, è necessario un tipo restituito per main, ma return 0;è implicito e quindi non necessario. Bene, la lingua non è stata fatta per il golf del codice. :-)
Cody Grey,

10

Elaborazione, 98 79 byte

19 byte salvati grazie a @dzaima

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

Spiegazione (obsoleta)

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
}

clicketty


@dzaima Non sapevo size(100,100);che non fosse necessario menzionare, grazie! (anche io non so perché non ho visto un if(mousePressed)po ')
Kritixi Lithos,

7

JavaScript ES6, 126 byte

Testato in cromo.

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

Provalo online!

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


7

Haskell, 189 184 170 169 byte

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

Questo utilizza la Glosslibreria (v1.11). Apre una finestra a schermo intero e dipinge i pixel neri (in effetti cerchi con raggio 1) premendo il pulsante sinistro del mouse. Premere ESCper uscire.

Come funziona:

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

Modifica: @continuato a girare in senso antiorario, mi ha parlato della nuova versione di gloss che salva 5 byte quando si usano le finestre a schermo intero. Grazie!


FullScreenè null in gloss> = 1.11, riducendo il punteggio di 5. (Ricevo comunque un errore unknown GLUT entry glutInit, ma probabilmente il mio setup di glut non funziona; non l'ho mai usato su questa macchina.)
smesso di girare in senso antiorario il

@ceasedtoturncounterclockwis: ah, grazie per il suggerimento. Avevo 1.10.2.3 sul mio sistema e ora aggiornato all'ultima versione.
nimi,

5

SmileBASIC 2, 52 51 byte

Questo si corre a papà di SmileBASIC, Petit Computer (ed è uno di due byte più breve.)

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

Spiegazione:

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

Puoi salvare 1 byte facendo GPSET TCHX,TCHY:GOTO@Apoiché il colore predefinito è 0 (trasparente).
12Me21

4

Javascript + jQuery 138 byte

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

Dai un'occhiata online!

Aggiungere il supporto click and drag sarebbe semplice, avresti impostato una variabile, tuttavia, secondo le istruzioni e per abbreviare il codice, non è supportato, "Ogni volta che il mouse viene premuto, cambia il pixel su cui il mouse è nero" . Ho interpretato l'istruzione come un clickevento.


3
Hiya! La prossima volta, dovresti ripristinare la tua vecchia risposta invece di fare una nuova risposta. Inoltre, temo che questo debba funzionare in un ambiente specifico: se si tratta di javascript alla vaniglia, dovrai includere il conteggio dei byte di jQuery nel tuo invio. Potresti chiamare questo invio "JavaScript + jQuery", e ciò andrebbe bene: lì potresti supporre che jQuery sia installato. Allo stato attuale di questa risposta, è più una risposta "HTML", non una JavaScript.
Conor O'Brien,

1
@ ConorO'Brien Mi assicurerò di farlo la prossima volta. Ho aggiornato la risposta usando i tuoi suggerimenti.
Neil,

4

SpecBAS - 61 59 byte

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

Il nero è già il colore predefinito della penna, ma lo sfondo è di solito una brutta tonalità di grigio, quindi lo CLS 15imposta su bianco brillante.

inserisci qui la descrizione dell'immagine


La maggior parte delle varianti di base non richiede uno spazio tra il numero di comando e il codice su quella riga.
Pavel,

SpecBAS aggiunge tutti gli spazi dopo aver premuto Invio (incluso il GOTOdivenire GO TO)
Brian,

1
Ma puoi rimuovere gli spazi e farli funzionare ancora bene? Se è così, non li conti.
Pavel,

Se all'utente non dispiace solo dipingere con il nero, perché dovrebbe occuparsi di uno sfondo grigio?
Cees Timmerman,

3

SmileBASIC, 70 58 53 byte

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

Ha spiegato:

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

Clojure, 91 71 byte

-20 byte grazie a @cfrick per aver sottolineato che posso usare useper ridurre la mia importazione.

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

Utilizza la libreria Quil . Disegna un punto ogni volta che il mouse viene trascinato.

Fondamentalmente la risposta di elaborazione, poiché Quil è un wrapper di elaborazione per Clojure.

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

inserisci qui la descrizione dell'immagine


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

@cfrick LOL, mi dimentico sempre useperché non è "corretto". Grazie.
Carcigenicato

3

Tcl / Tk, 45 46 51 57

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

pentagramma


Questo è un pentogramma fuggiasco 😁
Johan du Toit,

1
@JohanduToit: Non ti piacciono le stelle?
sergiol

2

Java 7, 353 byte

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

Python2 e Python3, 82 byte (o 77?)

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

Utilizzando il modulo Turtle, questo non è poi così male :)

Ungolfed:

import turtle
turtle.up()

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

turtle.onscreenclick(fun)
turtle.mainloop()

Se è OK avere linee tra i punti, puoi effettivamente salvare 5 byte:

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

da turtle import *; up (); onclick (lambda * x: goto (* x) or dot (1)); done ()
innisfree

Sono 70 byte
innisfree

2

Excel VBA, 62 byte

Funzione di finestra immediata VBE anonima che consente all'utente di disegnare su qualsiasi foglio semplicemente selezionandolo

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

Uscita campione

inserisci qui la descrizione dell'immagine


1

HTML + Javascript, 152 148 byte

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

1

Turing , 77 byte

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 byte

Divertiti con i CSS 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 byte

Questo si cerca di compensare il default margindel <body>elemento, ma possono essere diversi tra i vari browser e fogli di stile user agent. Testato con successo in 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 byte

I pixel in questo formato possono apparire più grandi quando vengono disegnati con coordinate a mezzo pixel.

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

TI-Basic, 1 byte

Pt-Change(

Sono sicuro che la maggior parte di voi con TI calc ha pensato al Pencomando, ma si scopre che non è tokenizzato, quindi avrebbe molto senso contarlo come 3 byte. È possibile leggere la versione interattiva del Pt-Change(a http://tibasicdev.wikidot.com/pt-change


Questo non risponde alla sfida: i calcoli di TI non possono gestire l'input del mouse, per quanto ne so.
Grimmy,

2
@Grimy Se insisti, puoi sempre utilizzare la libreria usb8x per ottenere l'input del mouse USB. Ma sono sicuro che basterà la navigazione del cursore predefinita.
Timtech,

1

Lua (love2d Framework), 180 byte

versione da golf

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

abbastanza facile come funziona. Prima alcune inizializzazioni per rendere le cose più brevi. Successivamente verificherà che si fa clic sul mouse e salvi i punti sull'array. Dopo di che disegna i punti. Inoltre imposta il colore su bianco e nero perché il valore predefinito è il contrario :)
Ed ecco che arriva l'immagine:

inserisci qui la descrizione dell'immagine


1
Che ci crediate o no, sono venuto qui per pubblicare una risposta usando Love2d, come ho scoperto e amato solo di recente, quindi +1 per il bel lavoro! Ad ogni modo, penso che puoi accorciarlo un po 'di più in questo modo: il 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)endrisultato è 169 byte!
DimP,

1
Sono venuto qui per lo stesso motivo, è bello vedere che ci sono altre persone qui che lo sanno: D Grazie :)
Lycea

1

Elaborazione, 65 byte

void draw(){if(mousePressed)line(mouseX,mouseY,pmouseX,pmouseY);}

sorteggio minimo


1

glslsandbox 232 byte

Vecchio post ma l'ho trovato interessante.
Dato che l'elaborazione è già stata fatta, ho deciso di fare qualcosa di diverso.

Questo disegna se il mouse è premuto o meno, quindi non quello che pydude ha chiesto ma quasi.

#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);}

Provalo su glslsandbox


0

Elaborazione, 93 byte, 91 byte se gli spazi non contano

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

1
In PPCG, se non menzionato nella sfida, gli spazi e tutto contano come normali (come byte nella codifica scelta, per impostazione predefinita UTF-8). Quindi il tuo punteggio sarebbe 92 byte poiché il primo spazio non può essere rimosso senza interrompere il programma, ma il secondo spazio può essere rimosso in modo sicuro.
dzaima,

0

UCBlogo con wxWidgets, 65 byte

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

Spiegazione (il codice assegnato alla variabile buttonactviene eseguito su ogni clic del pulsante):

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

Almeno, penso che funzioni. Dovrebbe secondo la documentazione , ma apparentemente la buttonactvariabile funziona solo in una build di wxWidgets e sto lottando per costruire UCBLogo con wxWidgets su un moderno Linux (waddyamean non puoi lanciare un puntatore inte tornare indietro?).

UCBlogo senza wxWidgets, 73 byte

Per vedere l'effetto desiderato, è possibile eseguire questa versione più lunga con un ciclo infinito.

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

Ma questo si blocca ucblogosulla mia macchina ... Sembra una condizione di gara.

UCBlogo, attualmente lavorando sulla mia macchina, 80 byte

setbg 7 setpc 0 ht pu
while[1=1][setpos mousepos if[button?][pd] fd 1 pu wait 1]
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.