Découvrir le python – chapitre 3 – list’oire de la vie

Le titre de l’article est une blague par rapport à la chanson naze et bien-pensante du Roi Lion : « C’est l’histoâââââre de la viiiiiiiie ». Ce troisième article de découverte du python a pour sujet principal : les listes.

Je tenais à expliquer cette blague, car quand on explique une blague, elle n’est plus drôle. Mais quand une blague est pas drôle dès le départ et qu’on l’explique, ça devient drôle.

Avant tout, pif paf la solution au devoir du précédent article. C’était plus un travail de géométrie que de programmation. Des fois, on croit qu’on fait un truc et on en fait un autre. C’est comme ça la vie, jeune lecteurtrice. L’histoâââre de la viiiiieeeuuuuu.

De la couleur

Remet-toi sur le site Trinket, ajoute les deux instructions habituelles du début : « import turtle », « turtle.speed(0) ».

Ensuite, tu copie-colles la fonction « dessiner_diams » créée dans l’article précédent (tu peux la récupérer dans la correction du devoir).

Pour finir, ajoute une seule ligne après la fonction, dans le programme principal : « dessiner_diams(0, 0, 50) ». On est devenu des prolos et on fait des petits diamants.

On est des prolos, mais on n’est pas forcément des communistes. On voudrait pouvoir faire des diamants ayant une autre couleur que ce rouge pétaradant.

Tu as certainement déjà repéré la ligne de code de la fonction spécifiant que le diamant est rouge. Pour les anglophonophobes, je rappelle que « red » signifie « rouge ». Indique une autre couleur à la place : « green », « blue », …

C’est top-de-la-housse, mais ça ne permet pas de dessiner des diamants de couleurs différentes.

Alors tu vas appliquer la même méthode que dans l’article précédent, lorsqu’on avait ajouté le paramètre « taille » :

  • Ajoute un paramètre supplémentaire dans la fonction « dessiner_diams ». On va l’appeler « couleur ».
  • Utilise ce paramètre dans le corps de la fonction. À toi de trouver où il faut le mettre et à la place de quoi.
  • Ajoute ce paramètre lorsque tu appelles la fonction, dans ton programme principal.

On va profiter de cette souplesse supplémentaire que tu viens de conférer à ta fonction (lecteurtrice, tu te rends compte que tu con-faire ? Tellement génial). Remplace la ligne du programme principal par ces deux lignes :

dessiner_diams(0, 0, 50, "green")
dessiner_diams(25, 25, 50, "blue")

Et voilà !

Lien vers la solution si t’as perdu tes couleurs.

De la couleur RVB

Les couleurs c’est fun et bigarré, mais c’est chiant de devoir les identifier par des noms, surtout en anglais. C’est un coup à ce que ça parte en bastonnade entre d’éminents chromatologues qui se crêperont l’arc-en-ciel sur la différence entre le cyan et le turquoise. Encore heureux que turtle ne reconnaît pas le fuschia, sinon je vous dis pas le bordel ! Personne ne connaît vraiment ce mot.

Il existe une manière plus standard de définir les couleurs en informatique. On indique trois nombres, correspondant aux quantités des trois couleurs primaires : rouge, vert et bleu.

Je t’entends protester d’ici, lecteurtrice : « han mais n’importe quoi, mon prof de dessin il m’a dit que les couleurs primaires c’est rouge, bleu et jaune ! ». Alors je te répondrai d’écouter ton prof mieux que ça, car il a plutôt dit que les couleurs primaires sont magenta, cyan et jaune. Finalement, je te répondrais que ça dépend si on est en synthèse additive ou en synthèse soustractive. Écris ces termes dans un moteur de recherche si tu veux en savoir plus.

Si tu as joué avec des logiciels de dessins, tu connais déjà les sélecteurs de couleurs. En voici un disponible en ligne : https://lehollandaisvolant.net/tout/tools/color/ .

Choisis la couleur que vu veux et retiens les trois nombres de la ligne « RGB » (Red Green Blue).

Dans ton code python, tu peux écrire ces trois nombres à la place du nom de la couleur. Mais attention, il faut mettre des parenthèses pour les délimiter. Par exemple :

dessiner_diams(0, 0, 50, (42, 234, 69))

« dessiner_diams(0, 0, 50, 42, 234, 69) », ça ne marcherait pas.

Miss Diamond Doll, puisqu’on reste sur les diamants

Tuple et zante ?

Pourquoi il faut des parenthèses en plus ?

La couleur ne doit constituer qu’un seul paramètre. Mais celui-ci peut être de type simple (un texte entre guillemet), ou de type composé.

Ces trois nombres entre parenthèses définissent une valeur de type tuple. « Tuple » est le mot générique pour dire un couple / un triplet / un quadruplet / un n-uplet.

Pour toutes les fonctions de la librairie turtle nécessitant des couleurs dans leurs paramètres, on peut indiquer un texte correspondant à un nom de couleur valide, ou bien un tuple de 3 entiers. Une conversion est effectuée en interne dans turtle.

Les tuples sont des types de valeurs comme les autres, tu peux donc les mettre dans des variables :

ma_couleur = (42, 234, 69)
dessiner_diams(0, 0, 50, ma_couleur)

Et aussi utiliser des variables numériques comme composantes d’un tuple:

le_rouge = 42
le_bleu = 69
# J'ai la flemme de créer la variable pour le vert.
dessiner_diams(0, 0, 50, (le_rouge, 234, le_bleu))

Plus d’infos sur les tuples dans cette chouette documentation : https://courspython.com/tuple.html

Profitons de cette nouvelle connaissance et réalisons un joli dégradé de couleur.

Tu me fais une boucle qui dessine 100 diamants :

  • La coordonnée X varie de 5 en 5, en partant de -200 : -200, -195, …
  • La coordonnée Y reste à 0.
  • La taille reste à 50.
  • La couleur rouge reste au maximum, c’est à dire 255.
  • La couleur verte reste à 0.
  • La couleur bleue varie de 2 en 2, en partant de 50 : 50, 52, 54, …., 246, 248.

Ça donnera un magnifique dégradé :

Lien vers la réponse, si ton cerveau s’est dégradé.

Vous êtes l’éliste de la nation

Tu vas mettre en commentaire ta belle boucle du chapitre précédent, car on va partir sur autre chose. Nous arrivons enfin au sujet majeur de cet article : les listes.

Dans le programme principal, juste après la définition de la fonction dessiner_diams, tu vas créer une liste contenant quelques nombres :

ma_liste = [-70, 38, 45, -20, 113]

Tu peux parcourir cette liste à l’aide d’une boucle. En voici une toute simple, je te laisse deviner ce que ça fait :

for elem in ma_liste:
    print(elem)

On retrouve la même syntaxe que pour les autres boucles : for {bidule} in {truc}:

Sauf que cette fois-ci, le {truc} que tu parcoures n’est pas une fonction « range » qui ne fait que compter. C’est une liste, avec tout et n’importe quoi dedans.

Lecteurtrice, je vois bien, à ton œil mouillé et ton air rébarbatoire, que tu as envie de me poser une question qui dérange :

« Wesh, auteurtrice, c’est quoi l’intérêt d’avoir inventé deux types : les listes et les tuples ? Ils font la même chose : stocker une suite d’éléments. »

Eh bien voilà : les tuples ne peuvent pas changer de contenu. Les listes, si. On peut y ajouter ou enlever des éléments, en remplacer un par un autre, etc.

Re-lecteurtrice, je te revois bien me redemander :

« Re-wesh, à quoi ça sert d’avoir inventé des tuples qu’on ne peut pas changer, si on a déjà les listes, qui font la même chose et qu’en plus on peut changer ? »

C’est pour les performances. Les tuples prennent très peu de place en mémoire et sont très rapides d’accès. Quand on a besoin d’une suite de trucs et qu’on sait qu’on ne la changera pas, on prend un tuple.

Voilà un autre lien avec plein de détails sur les listes : https://openclassrooms.com/fr/courses/235344-apprenez-a-programmer-en-python/232026-creez-des-listes-et-des-tuples-1-2

Si tu ne veux pas tout lire, je te montre très rapidement ce dont tu auras besoin pour la suite :

ma_liste = [-70, 38, 45, -20, 113]
# Accès à un élément
print(ma_liste[2])
# Ajout d'un élément à la fin
ma_liste.append(99)
# Écriture de toute la liste.
print(ma_liste)

Mets ça dans un programme et regarde ce que ça fait. C’est d’une comprenabilité qui ne me semble pas pharaonique.

On peut boucler sur les listes, comme sur les tuples. De manière générale, il y a des tas de choses en commun entre les listes et les tuples, qui se font exactement de la même manière. C’est possible grâce à un concept de programmation appelé le duck typing.

Ça disgresserait trop d’expliquer ce concept dans cet article. Pour ne rien te cacher, je l’ai mentionné juste pour avoir l’occasion de placer cette superbe image :

Si ça fait coin-coin comme un canard, c’est un canard.

List-ception

En informatique, on aime mettre des trucs dans les mêmes trucs : un sous-bloc de code dans un bloc de code, un sous-répertoire dans un répertoire, …

J’ai le plaisir de t’annoncer qu’on peut mettre des listes dans des listes, des tuples dans des tuples, des tuples dans des listes dans des tuples dans des tuples, etc.

Voici une liste avec des tuples dedans :

des_coords = [ 
    (-100, -40), (100, -40), (-80, -70), 
    (80, -70), (-60, -90), (60, -90),
    (-40, -100), (40, -100), (-20, -110), 
    (20, -110), (0, -115),
    (-70, 120), (70, 120),
]

Tu remarqueras qu’on peut l’écrire sur plusieurs lignes, à condition de ne pas oublier le crochet ouvrant au début ni le crochet fermant à la fin, et de respecter l’indentation.

Ajoute cette liste de tuples dans ton programme et fais une boucle dessus.

  • À la première itération, tu récupéreras le tuple (-100, -40), et tu me dessineras un diamant aux coordonnées X=-100 ; Y=-40.
  • À la deuxième itération, tu dessineras au autre diamant en X=100 ; Y=-40.
  • Puis en X=-80 ; Y=-70.
  • etc.

Pour la couleur des diamants, met ce que tu veux. Personnellement, j’ai choisi un espèce de jaune-orangé : (250, 150, 0).

Tu obtiendras un joli sourire de joker !

Why so serious ?

Lien vers la réponse, si t’as plus de cartes joker.

Je return à ma maison

OK lecteurtrice, si tu en es là dans l’article, et que tu as codé tous les exercices avec les doigts nus de tes mains nues, sans trop regarder les réponses, tu as de la motivation et de la comprenitude. J’ai confiance en toi, je sens que tu ne vas pas t’évanouir si je t’apprends DEUX choses différentes dans un même chapitre.

Mets-toi face à moi pour bien recevoir toute ma décharge cognitive.

1)

Une fonction peut renvoyer quelque chose (un nombre, une liste, …). Le code ayant appelé la fonction peut récupérer ce qui a été renvoyé.

Voilà un exemple :

def renvoyer_une_liste():
    print("coucou")
    return [4, 6, 15, 9]
    print("On ne voit pas ce texte.")
    print("Car une fonction s'arrête après un return.")

liste_que_je_recupere = renvoyer_une_liste()
print(liste_que_je_recupere)

Si tu exécute ce bout de code, ça écriras : « coucou », puis « [4, 6, 15, 9] ».

On a le droit d’écrire plusieurs « return » dans une même fonction. Mais dès que l’exécution arrive sur l’un d’eux, la fonction s’arrête, et renvoie ce qui est indiqué.

2)

La fonction turtle.pos() renvoie un tuple de deux éléments, contenant les coordonnées de la position actuelle de la tortue. Tu peux tester comme ceci :

ma_position = turtle.pos()
print(ma_position)

Et maintenant tu vas mettre tout ça en pratique.

  • Au début de la fonction dessiner_diams, tu crées une liste vide. On va l’appeler « coord_des_pointes ».
  • Dans la boucle de la fonction, juste après l’instruction turtle.circle, tu récupères la position actuelle de la tortue.
  • Tu ajoutes cette position dans coord_des_pointes. Celle liste contiendra donc des tuples.
  • À la fin de la fonction, tu « return » coord_des_pointes.
  • Dans le programme principal, tu exécutes une seule fois la fonction dessiner_diams,
    • coordonnées X=0 ; Y=0, taille = 50, couleur = ce que tu veux.
  • Tu récupère la valeur renvoyée par la fonction, et tu la printes.

Ça devrait t’afficher ça dans la sortie standard :

[(0.0, 50.0), (50.0, 0.0), (0.0, -50.0), (-50.0, 0.0)]

Lien vers la solution, en cas de surcharge cognitive.

Je vous emmerde et je return à ma maison

Des diamants dans des diamants

Puisque tu as récupéré des coordonnées, profites-en pour dessiner des diamants avec ! Mais tu les fais un peu plus petits. Une taille de 25, par exemple.

Ça donnera quelque chose dans ce style (même si c’est pas ces couleurs là) :

Est-ce que tu vois ce qui va venir après, lecteurtrice ? Est-ce que tu réalises qu’on est maintenant très proche de l’image finale que je t’ai promise il y a plus de deux mois ?

À chaque fois que tu traces les 4 petits diamants, la fonction renvoie à nouveau les coordonnées de leurs 4 coins. Tu pourrais toutes les récupérer, (16 coordonnées en tout), et dessiner sur chacune d’elles un autre diamant, encore un peu plus petit que les précédents. Ne serait-ce pas fractalement uber-classe ?

Il te reste à régler un petit détail : tu ne récupères pas les 16 coordonnées en un seul coup.

Dans le programme principal, avant la boucle où tu dessines les diamants de taille 25, tu crées une liste vide. On va l’appeler coord_mini_diamants.

À chaque dessin de diamant, tu récupères 4 coordonnées, que tu ajoutes dans coord_mini_diamants. Sais-tu comment on ajoute une liste à la fin d’une autre liste ?

Eh non lecteurtrice, ce n’est pas la fonction « append ». Celle-ci permet d’ajouter un élément simple au bout d’une liste. Pour ajouter une liste au bout d’une liste, on utilise l’addition, tout simplement.

Tu aura donc ceci dans ta boucle :

coord_mini_diamants = coord_mini_diamants + dessiner_diams(x, y, 25, (255, 0, 0)

Une fois que cette liste est remplie, plus qu’à s’en servir.

Et paf, un niveau de diamant supplémentaire :

Lien vers le code, si les diamants ne sont pas tes meilleurs amis.

diamant(diamant(diamant(diamant())))

Pour finir, tu re-appliques la même démarche, pour un dernier niveau supplémentaire.

Je te récapitule le tout :

  • premier diamant : taille = 50, couleur= (128, 0, 0)
  • 4 diamants autour : taille = 25, couleur= (255, 0, 0)
  • 16 diamants autour : taille = 12.5, couleur= (255, 70, 70)
  • 64 diamants autour : taille = 6, couleur= (255, 120, 120)

Le fait de reproduire plusieurs fois la même forme, à d’autres endroits, et de plus en plus petite, me permettrait de te présenter les notions de fractales et de récursivité. D’ailleurs, on pourrait dessiner tous les diamants en une seule et même boucle. Mais je ne vais pas t’embêter avec ça, cet article est déjà assez cerveauphage.

Tout ça pour dire que nous arrivons enfin à notre image finale ! Yiiipiii !

Lien vers la réponse, si tu t’es fait une fracture de la fractale.

C’est tout pour aujourd’hui

Voici inévitablement des devoirs. Pour cette fois, je t’en donne deux !

Le premier est assez facile, c’est une reprise du devoir précédent. Il faut dessiner cet anus de licorne :

Petit indice : tu vas devoir trouver comment tracer des formes remplies de couleur, mais sans le trait noir de délimitation.

Le deuxième :

Là c’est un peu plus dur. Il faut reprendre ce qu’on a fait avant, en annulant le dessin de certain diamants. Le tout est de savoir lesquels. Un coup c’est celui de droite, un coup celui du haut, …

Tu vas peut-être devoir apprendre par toi-même à utiliser une notion que je n’ai pas du tout présentée : le branchement conditionnel, if-then-else.

 

Et la suite ?

La librairie turtle permet également de créer des animations. Dans Trinket, on peut faire quelque chose comme ça :

Je pourrais donc te pondre un ou deux articles là-dessus, lecteurtrice. Mais je ne sais pas si ça vaut le coup. Je voudrais écrire d’autres trucs et me lancer dans d’autres projets.

J’ai mis cette série d’article de découverte du python sur mon compte Linkedin (vous ne savez pas lequel c’est, mais vous n’en avez pas besoin). Dans l’ensemble, j’ai eu des retours très aléatoires :

  • zéro commentaire dans ce blog, mais ça j’y suis habitué,
  • plein de commentaires et repartages Linkedin pour le premier article,
  • un seul repartage (de mon super-pote) pour le second article.

Je suis un peu perplexe. Je ne sais pas si c’est les gens qui ne me répondent rien parce que je ne les intéresse pas, ou si c’est Linkedin qui ne met pas mes articles dans le fil d’actualité des gens pour une raison obscure (le fait d’avoir placé le mot « fouetter » lorsque j’ai décrit les sévices corporels destinés aux personnes ne faisant pas leur devoirs ?)

Et désolé, il n’y a pas autant de blagues et de jeux de mots débile dans cet article. Un réajustement effectué par mon inconscient ? Je ne sais pas.

Je vais attendre les retours, mais si j’en ai à nouveau aussi peu, je ne me prendrais pas la tête. Le tout dernier article de la série (s’il y en a un) sera du code brut : les corrections des devoirs et l’animation.

Tchôrp.

Bonne Année 2013 !

Salut les sacs à neurones.

Petit flash d’actualité, pour ceux qui n’auraient pas lu mon précédent article de blorg : on vient de changer d’année.

Je dirais même plus : on a changé de cinq-cent-troisenaire ! Eh oui ! 2011 = 503 * 3 + 502. Alors que 2012 = 503 * 4. Tout le monde s’en fout ? OK.

Certes. Mais alors, pourquoi donc ais-je indiqué en titre « 2013 », et non « 2012 » ?

Parce que lorsqu’il se trouve un connard pour souhaiter la bonne année en décembre, il se trouve alors toujours un connard bis pour piailler : « Aaaargghh, ça porte malheur de la souhaiter avant janvier ! T’es pas bien ou bien ? Tu vas nous faire avoir des tsunamis avec tes conneries ! Vite, trouve un lapin et chope-lui les pattes ! »

BBW bunny

L’aile ou la cuisse (du lapin) ?

Il était donc assez prévisible, que, juste pour faire chier, je m’amuse à souhaiter une bonne année carrément 1 an à l’avance, afin que vous vous farcissassiez une dose géante de merde porte-malheur dans la gueule. C’est gratuit, ne me remerciez pas.

Rassurez-vous, il vous est possible de sortir du marasme dans lequel je viens de vous plonger. Vous êtes avec savoir (donc vous n’êtes pas sans savoir) que le malheur des uns fait le bonheur des autres, et vice-versa. Il vous suffit donc de balarguer plus de malheur sur les autres que ce que je ne vous en ai balargué.

Sans plus attendre, souhaitez une bonne année 2014 à tous vos amis!!

Ah, j’allais oublier, il va de soi que je me dote d’une protection automatique contre toute vilaine tentative de backfire. Par conséquent :
Soyez assurés de mes automatiques meilleurs vœux pour l’année « +l’infini », dans le cas où vous souhaiteriez me souhaiter une bonne année X, X étant un nombre quelconque strictement supérieur à 2012.

Et le premier qui vient me souhaiter une bonne année « +l’infini+1 », je lui fourre les œuvres complètes d’Anaximandre dans le cul. C’est clair ?

rule 34 infinity

Class InfinitySymbol implements Règle_34;

Tiens, à propos de l’infini …

Le dernier numéro du magazine 42 a pour thème : la mise en abîme. Ce terme, abscons au demeurant, désigne le concept d’avoir un concept dans un concept dans un concept etc. (Ce concept de mise en abîme étant lui-même dans un concept dans un concept (Ce concept étant lui-même le concept d’un concept (nil))).

Couverture du numéro 28 du magazine 42

Or donc, qu’y ais-je fait ?

Avertissement préalable de couillinette : les liens vers mes articles sont provisoirement mort, car l’hébergeur des sites 42 et nioutaik est provisoirement en train d’enculer l’internet à sec avec des coquilles d’huître concassées. Ce n’est pas grave, vous pouvez d’ores-et-toujours télécharger le magazine en entier et en pdf, avec le lien « téléchargement direct », à partir d’ici (http ://42lemag.fr/archive_n28.php).

Edit 2013-10-12 : vu que le provisoire vient de se changer en définitif, j’ai supprimé tous les liens directs vers tous les articles. Donc définitivement : téléchargez les pdf.

Page 11 : les 2 fausses pubs

C’est pas les plus drôles que j’ai faites, mais, hey, parfois il faut accorder un peu de repos à son propre génie créatif. De plus, ces pubs n’ont aucun rapport avec le thème sus-cité. Mais ça n’a jamais suscité de problèmes. Ah ! Suis-je donc drôle !

Par contre, je me suis aperçu que ça faisait vraiment à l’arrache, les images posées comme ça, crac. Pour les prochaines, je mettrais un semblant de cadre, qu’au moins, le fidèle lecteur voit bien qu’il y a deux images distinctes sur la page, et non pas un magma marmeladesque indéterminé.

Au passage, je précise que j’utilise en mon âme et conscience l’expression « par contre ». J’emmerde les pseudo-cacadémiciens auto-proclamés qui hurlent à la Lune au scandale, arguant que c’est pas français, et qu’il faut dire « en revanche » à la place. À moins que ce soit « à la place » qu’il faille dire en revanche. Boh laissez tomber.

la revanche

Pages 46 et 47 : les jeux moisis de tonton Réchèr

HA-HAAAAA !! Le retour des jeux moisis ! La rédaction de 42 s’est cyber-réunie dans l’espace très-très-VIP de son forum, avec du champagne et des putes, et à inféré qu’elle devait boyaux-de-la-têtiser des idées un peu nouvelles, histoire de continuer à faire tourner la machine à LOL aussi bien que depuis dorénavant, et jusqu’à au moins dorénaprès.

Certes, les jeux moisis, c’est pas si nouveau comme idée. Mais ça faisait très longtemps qu’on en avait pas fait, et cette fois, c’est moi qui m’y colle, avec un haut taux de bêtise au millimètre cube !

Le premier jeu peut être vu comme une moquerie personnelle des paroles de chansons tellement sentimentales que ça en devient ironique, alors que leur auteur continue de se prendre au sérieux. Je ne suis pas le premier à me moquer de ce genre de paroles, mais je dois être l’un des premiers à le faire sous forme de jeu moisi.

le chien

Unrelated pic, mais ça valait le coup quand même.

Le second jeu possède une forte dose de fierté personnelle, puisque : devinez comment j’ai créé ce labyrinthe de labyrinthe ? Python, of course !

Je suis parti de ce programme (http:// code.activestate.com/recipes/252127-maze-generator/).

Et je l’ai bidouillé pour ajouter les fonctions que je voulais : intégration de labyrinthe dans un labyrinthe, génération sous forme d’image bmp, etc… Ça mériterait peut-être un article à part entière, on verra ça plus tard, j’ai déjà plusieurs autres pythonneries en stock.

L’énoncé du jeu mentionne un certain Douglas Hofstadter. Je vous laisse découvrir qui c’est par vous-même. En voici juste une petite citation, que j’aime beaucoup, et qui est un pied de nez à tous les pseudo-managers du fabuleux monde de le travail de lala prestation « au forfait », comme on dit dans notre métier, pseudo-managers donc, qui croient que ça se fait tout seul d’estimer le temps que prendra une tâche et que les ouvriers-codeurs ils travaillent toujours bien comme il faut en respectant gentiment cesdites estimations même si elles étaient totalement irréalistes dès le départ et que jamais il viendrait à l’idée des ouvriers-codeurs de glander, car pour eux, il ne peut exister d’occupations autre que le travail, où en étais-je dans ma phrase, oh zut je laisse tout en plan, ça ira bien comme ça.

Ouais et donc la citation c’est :
« Loi de Hofstadter : il faut toujours plus de temps que prévu, même en tenant compte de la loi de Hofstadter ».

Page 50 : Un article sur les fractales

Totalement dans le thème, pour une fois. Les fractales sont ces espèces de dessin bizarre qui se reproduisent à l’infini, et qui ressemblent un peu à du vomi magique. Il en existe de très jolis.

fractale pussy

La création du monde ?

Dans l’article, je me fends d’une explication de l’algorithme de Mandelbrot, compréhensible par un chimpanzé. Aucune connaissance mathématique n’est requise.

Tout ça me rappelle un vieux logiciel de tracé de fractales, sous DOS, très sobrement appelé « Fractint ». J’y comprenais absolument rien. Je mettais des valeurs au hasard dans les paramètres et ça donnait rarement grand-chose.

Mais c’est ce logiciel qui m’a fait découvrir la technique de l’effet plasma, que j’ai ensuite reproduit une paire de fois dans mes petites animations codées en Pascal. Vous devriez les retrouver parmi le vrac proposé en téléchargement dans cet article.

Ah ça nous rajeunit pas tout ça. M’en fous, être vieux, c’est cool, on a le droit de faire plein de trucs. Comme se masturber par exemple. Mais nous nous éloignons du sujet.

Page 53 : Roman-photo n’importe-quoi-tiste

Vous connaissez le principe du roman-photo : un cerveau (le mien), des images (l’internet), agitez vigoureusement, et vous obtenez rigoureusement n’importe quoi (n’importe quoi).

J’ai quand même mis un certain temps à trouver une police de charactère dont les « O » ressemblent à une parenthèse ouvrante accolée à une parenthèse fermante. Mais ça valait le coup. Je lol dans mon lol !

Dawson enkuler de rire

Le personnage principal de ce roman-photo est Xzibit. J’avoue que c’est un peu convenu comme choix, rapport au thème du mag et à l’histoire racontée. J’aurais aimé mettre mon ami sus-mentionné Douglas Hofstadter, qui fait bien plus gentilhomme et distingué, mais il y a assez peu d’images de lui dans le sus-mentionné internet.

Ce Douglas, il devrait se faire des auto-portraits, ça compléterait sa présence online. De plus, l’auto-portrait est un concept qui devrait l’amuser. Si il n’a pas le temps, il peut toujours demander à l’un de ses amis de lui faire son auto-portrait à sa place. Ah Ah Ah. l( l( l( lol )l )l )l

Azerty chaud, bépo de fleurs

Juste pour me la péter, je tiens à dire que ce texte a été intégralement tapé avec une disposition de touche dvorak-bépo.

Enfin, pour le moment, j’en chie plus que je ne me la pète. On reste dans la zone rectale, me direz-vous. À bientôt !