introduction
Un jour, vous montriez à votre enfant comment dessiner sur un ordinateur. Vous tapez mspaint.exe
dans la barre d'exécution. À votre horreur, il est écrit "Aucun élément ne correspond à votre recherche". Vous devez créer une version simple de peinture pour que votre enfant puisse dessiner!
Défi
Vous devez créer un programme de dessin simple. Pour ce faire, ouvrez une fenêtre d’affichage blanche (supérieure à 99 x 99 pixels). Chaque fois que la souris est enfoncée, changez le pixel sur lequel la souris est allumée.
C'est du code-golf , donc la réponse la plus courte en octets gagne!
Pen
fait exactement cela: oRéponses:
8086 code machine,
32 31 2826 octetsSuppose la présence d'une carte graphique VGA et de tout pilote de souris compatible avec Microsoft.
-2 octets grâce à @berendi!
Comment ça fonctionne:
C'est tout ce qu'on peut en dire. Aucune magie impliquée, juste quelques appels de fonction.
la source
INT 33h
retourne 0 àBX
, et ceci est décrémenté en FFFFh comme prévu, mais une ligne est toujours en cours de tracé. C'est peut-être parce que le mode 11h n'a qu'une seule page vidéo et que le numéro de page non valide est automatiquement corrigé? Je teste sur VM VirtualBox, alors peut-être que son implémentation du BIOS est en train de le faire.int 0x10
etjmp
reviennent à la secondeint 0x10
. Le décalagejmp
reste inchangé, ajustez l'adresse inmov dx
Scratch, 10 Scratch Octets
Scratch a été pratiquement conçu pour des choses comme celle-ci.
Essayez-le en ligne!
la source
HTML + JavaScript (ES6),
66 6462 octetsHTML
JavaScript
Sauvegardé 2 octets grâce à Gustavo Rodrigues et 2 octets de Shaggy.
la source
<canvas id=c>
vousc.
depuis le début de votre JS. @Anoplexian, c'est le corps par défaut quimargin
jette des choses de quelques pixels.C + Win32,
209200195 octetsMerci, Cody et Quentin! J'espérais me débarrasser de la
#include <windows.h>
mais cela conduit à toutes sortes d'erreurs. Au moins, cela fonctionne correctement avec plusieurs moniteurs ...Code précédent:
la source
h
dans l'for
initialiseur pour économiser deux octets :)LOWORD
etHIWORD
sont pas la bonne façon d'extraire les coordonnées du curseur d'une salle combleLPARAM
. Vous devriez utiliserGET_X_LPARAM
etGET_Y_LPARAM
, sinon, vous obtiendrez des résultats erronés avec plusieurs moniteurs.int main
ce qui aurait ajouté 4 octets supplémentaires.(short)LOWORD()
et(short)HIWORD()
résoudre le problème?main
type de retour de la fonction (à cause de laint
règle implicite ). Le seul problème est d’omettre lereturn 0;
comportement indéfini des causes dans C89 et MSVC. En C99 et C ++, vous avez besoin d'un type de retour pourmain
, mais lereturn 0;
est implicite et donc inutile. Eh bien, la langue n’était pas faite pour le code golf. :-)Traitement en cours,
98 à79 octets19 octets sauvegardés grâce à @dzaima
Explication (obsolète)
la source
size(100,100);
qu'il n'était pas nécessaire de le mentionner, merci! (aussi je ne sais pas pourquoi je n'ai pas vu leif(mousePressed)
bit)JavaScript ES6, 126 octets
Testé en chrome.
Essayez-le en ligne!
la source
Haskell,
189184170169 octetsCeci utilise la
Gloss
bibliothèque (v1.11). Il ouvre une fenêtre plein écran et peint les pixels noirs (en fait, les cercles de rayon 1) en appuyant sur le bouton gauche de la souris. Appuyez surESC
pour quitter.Comment ça fonctionne:
Edit: @ cessé de tourner à l’horloge, m’a parlé de la nouvelle version de gloss qui économise 5 octets lors de l’utilisation de fenêtres en plein écran. Merci!
la source
FullScreen
est nullary in gloss> = 1.11, ce qui réduit le score de 5. (Je reçois une erreurunknown GLUT entry glutInit
, mais mon système de saturation ne fonctionne probablement pas; je ne l'ai jamais utilisé sur cette machine.)SmileBASIC 2,
5251 octetsCelui - ci fonctionne dans le papa de SmileBASIC, Petit ordinateur (et est l'
unde deux octets plus court.)Explication:
la source
GPSET TCHX,TCHY:GOTO@A
puisque la couleur par défaut est 0 (transparent).Javascript + jQuery 138 octets
Découvrez-le en ligne!
Ajouter un support clic et glisser serait simple, vous définiriez une variable, cependant, conformément aux instructions et pour raccourcir le code, celle-ci ne serait pas prise en charge. . J'ai interprété l'instruction comme un
click
événement.la source
SpecBAS -
6159 octetsLe noir est déjà la couleur par défaut du stylo, mais l'arrière-plan est généralement une nuance de gris désagréable. Réglez-le donc
CLS 15
sur blanc éclatant.la source
GOTO
devenirGO TO
)SmileBASIC,
705853 octetsA expliqué:
la source
Clojure,
9171 octets-20 octets grâce à @cfrick pour avoir signalé que je peux utiliser
use
pour réduire mon importation.Utilise la bibliothèque Quil . Dessine un point chaque fois que la souris est déplacée.
Fondamentalement, la réponse Processing, puisque Quil est un wrapper Processing pour Clojure.
la source
(use 'quil.core)(defsketch P :mouse-dragged #(point(mouse-x)(mouse-y)))
use
parce que c'est "pas approprié". Je vous remercie.Tcl / Tk, 45
465157la source
Java 7, 353 octets
Ungolfed:
la source
Python2 et Python3, 82 octets (ou 77?)
En utilisant le module Tortue, ce n'est pas si mal :)
Ungolfed:
Si vous pouvez insérer des lignes entre les points, vous pouvez réellement économiser 5 octets:
la source
Excel VBA, 62 octets
Fonction de fenêtre immédiate VBE anonyme permettant à l’utilisateur de dessiner sur n’importe quelle feuille en la sélectionnant simplement
Exemple de sortie
la source
HTML + Javascript,
152148 octetsla source
Turing , 77 octets
Ungolfed:
la source
HTML + CSS + JavaScript (ES6), 8 + 31 + 64 = 103 octets
Amusez-vous avec CSS
box-shadow
!HTML + CSS + JavaScript (ES6), 8 + 22 + 69 = 99 octets
Celui-ci tente de compenser la valeur par défaut
margin
de l'<body>
élément, mais cela peut être différent selon les navigateurs et les feuilles de style de l'agent utilisateur. Testé avec succès dans Chrome.HTML + CSS + JavaScript (ES6), 8 + 18 + 69 = 95 octets
Les pixels de celui-ci peuvent paraître plus gros car ils sont dessinés à des coordonnées d'un demi-pixel.
la source
TI-Basic, 1 octet
Je suis sûr que la plupart d’entre vous avec les calculateurs TI ont pensé à la
Pen
commande, mais il s’avère que ce n’est pas un jeton, il serait donc logique de compter cela comme 3 octets. Vous pouvez lire la version interactivePt-Change(
à http://tibasicdev.wikidot.com/pt-changela source
Lua (love2d Framework), 180 octets
version golfée
non-golfé
assez facile comment ça marche. Tout d’abord quelques initialisations pour raccourcir les choses. Après cela, il vérifiera que la souris est cliquée et enregistre les points dans le tableau. Après cela, il dessine les points. De plus, il définit la couleur en blanc et noir car le défaut est l’inverse :)
Et voici l’image:
la source
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
résulte 169 octets!Traitement, 65 octets
la source
glslsandbox 232 octets
Ancien post, mais j'ai trouvé cela intéressant.
Comme le traitement a déjà été effectué, j'ai décidé de faire quelque chose de différent.
Ceci dessine si la souris est pressée ou non, donc pas ce que pydude a demandé mais presque.
Essayez-le sur glslsandbox
la source
Traitement, 93 octets, 91 octets si les espaces ne comptent pas
la source
UCBlogo avec wxWidgets, 65 octets
Explication (le code attribué à la variable
buttonact
est exécuté à chaque clic de bouton):Au moins, je pense que cela fonctionne. Cela devrait être conforme à la documentation , mais apparemment, la
buttonact
variable ne fonctionne que dans une construction wxWidgets et je peine à créer UCBLogo avec wxWidgets sur un Linux moderne (waddyamean vous ne pouvez pas utiliser un pointeur versint
et en arrière?).UCBlogo sans wxWidgets, 73 octets
Pour voir l'effet recherché, vous pouvez exécuter cette version plus longue avec une boucle infinie.
Mais cela se bloque
ucblogo
sur ma machine ... On dirait une condition de concurrence.UCBlogo, travaillant actuellement sur ma machine, 80 octets
la source