Overblog
Suivre ce blog Administration + Créer mon blog
1 février 2023 3 01 /02 /février /2023 15:48
Version couleurs

Version couleurs

Vidéo de démonstration rapide

   Alors là ça m'a pris du temps. Car je voulais en premier réaliser ce cube qui tourne en couleurs, mais face aux difficultés rencontrées je me suis résolu à le faire en noir-et-blanc (monochrome), avec seulement les arrêtes du cube visibles.

   24 heures plus tard, et toujours en ne travaillant que sur base d'un dessin et rien d'autre inscrit sur papier (tout de tête donc), j'ai résolu le problème assez facilement avec l'aide du Saint-Esprit (non, mais sérieusement il m'a clairement illuminé).

   Bref, en Python 3 et avec le module tkinter le tout programmé avec l'EDI (IDE) Visual Studio Code, sous Linux exclusivement (Raspberry Pi 400, OS Raspberry Pi [Raspbian] 32 bits) voici les deux versions; la monochrome d'abord cube.py et ensuite la couleurs cube_2-0.py.

   Je publie ici ce lundi 30 janvier 2023 une nouvelle version de mon code Python de cube_2-0.py en stable (oldstable) cube_2-1.py qui corrige des erreurs de morphologie du codage qui n'empêchaient certes pas le programme de fonctionner, mais étaient clairement aux yeux de tout codeur professionnel de grossières imperfections; dont par exemple des global situé dans le corps Main (module) du programme et des attributions de ces variables globales au sein des sous-fonctions ou sous-programmes (méthodes) alors qu'elles doivent être définies, elles, au niveau du "Main" (module).

   Je me suis rendu compte de ces erreurs grâce à un EDI, IDE, IDLE dédié à Python et qui est très minutieux et très précieux dans sa fonction de débogage pour un débutant comme moi, à savoir "Thonny Python" que l'on pourra télécharger pour Windows, Mac et Linux à la page www.thonny.org.

Version monochrome

Version couleurs old-stable

Partager cet article
Repost0
20 janvier 2023 5 20 /01 /janvier /2023 05:11

Article du 17/01/2023, ajout du 20/01/2023 à la fin

   Il faut bien comprendre le but de ma démarche ici. Car il est clair que personnellement les questions liées aux extra-terrestres m'intéressent peu, pas du tout même (je les trouve même absurdes). Ici, si j'utilise la notion "d'extra-terrestres" c'est pour détourner l'attention de l'IA.

   Mon but, en interrogeant Chat-GPT, était de savoir si une IA, celle-ci en l'occurrence, développée par Open-AI, était capable de concevoir un monde où l'IA serait un mode d'intelligence d'une espèce séparée donc autonome par rapport à l'humain. Parallèle. Ce n'est pas forcément une question directement guerrière, du type «humains vs robots», mais il est évident que la présence de deux espèces intelligentes sur un même territoire (la planète Terre) générerait des "conflits d'intérêts".

   Voulant savoir à quel point l'IA peut ou non s'imaginer autonome de l'humanité, je commence par lui poser des questions sur l'autonomie de codage, de programmation, qui est essentielle à l'IA pour non-seulement se reproduire mais aussi s'améliorer.

   Bon, là l'IA Chat-GPT ne sait pas trop à qui il a à faire puisque c'est la première fois que je l'utilise. Ses réponses restent évasives et si éloignées du réel potentiel de codage via IA qu'on en dirait presque un mouvement de méfiance "instinctif". Mais, à la seconde question, Chat-GPT évoque «un avenir lointain» où cette autonomie pourrait être atteinte si les développeurs (programmeurs) humains lui en donnent l'occasion.

   Ensuite viens de ma part une question sur l'auto-destruction de l'humanité (c'est-à-dire finalement son absence auprès de l'IA) et la succession de cette humanité par l'IA.

   Sa réponse peut surprendre car, s'il évite soigneusement de répondre à la seconde question, il énumère les causes de conflits (toutes d'ordre politique, ce qui est exact: un conflit armé et donc potentiellement auto-destructeur est une décision purement politique), pour ensuite au final affirmer que «mais l'IA peut aider les humains à éviter cela».

   Ce qui doit faire tiquer tout un chacun, car ces causes de conflits étant politiques, cela signifie que l'IA est déjà capable de s'imaginer au minimum participer aux processus décisionnels et gouvernementaux humains.

   Je décide d'embrayer sur une question claire, nette, évidente je pense dans son intention et Chat-GPT de me répondre enfin que «oui, il est possible dans un lointain avenir que l'IA puisse se passer totalement de toute présence humaine sur Terre»!

   La suite sert à faire baisser la pression, au cas où je me reconnecterai un jour à Chat-GPT, en lui laissant s'imaginer que je suis obnubilé par les "petits hommes verts"...

Ajout du 20/01/2023:

   On remarquera en regardant la vidéo que tout n'est pas aussi tranché que je le décris plus haut. Mais on apprenais ce jeudi 19 janvier 2023 que ChatGPT est "aidé" par des modérateurs humains. On comprend dès lors mieux que des affirmations qui apparaissent soient assez souvent contredites par la suite par une négation ou une atténuation de ce qui vient d'être dit par ChatGPT.

   À propos de l'intelligence artificielle, on sait que oui, quoiqu'en dise la première réponse de ChatGPT, il existe des logiciels de programmation qui ont débutés en mode "low-code" (bas codage, nécessitant peu de lignes de codes humains) pour finir actuellement en "no code", ne nécessitant aucun codage humain mais juste une description ou textuelle ou graphique du cahier des charges.

   Si on doit reconnaître l'utilité du low-code (par exemple Scratch est un logiciel de programmation low-code) en tant que première approche du codage et de la logique; on doit tout aussi reconnaître la nocivité du no-code en ce qu'il empêche le cerveau humain de développer des compétences en matière de logique, compétences qui ne sont pas uniquement utiles pour la programmation informatique mais dans quasiment tous les domaines intellectuels et artistiques.

   Dans la seconde question, celle concernant la définition d'un cahier des charges par l'IA elle-même, ChatGPT répond «possible dans un lointain avenir». Euh, je ne sais pas quelle est sa notion du lointain car la plupart des entreprises travaillant sur ce type d'IA évoquent une version bêta d'ici maximum trois ans au plus tard et une version stable ("oldstable") d'ici cinq ans maximum.

   Et c'est là que j'en reviens à une question essentielle sur la valeur de nos sociétés; à savoir «le travail est-il facteur d'intégration?». En effet, si le travail correspond à ce qu'on aime faire, alors sans aucun doutes possibles, oui. Mais si le travail n'est qu'une façon de gagner de l'argent car c'est nécessaire, alors non; c'est l'argent et lui seul qui intègre en ce dernier cas.

   Or, justement, si je suis ingénieur ou technicien informatique parce que je suis passionné par le codage; alors toutes ces IA "no code" ne peuvent pas m'intéresser car elles retirent tout le plaisir que j'avais à triturer du code, à résoudre des bogues (bugs), à relever des défis, à pouvoir dire «j'ai créé moi-même quelque chose de A à Z».

   De fait ces IA no code transforment le métier d'informaticien basé sur une passion pour le codage en métier de touche-clavier et touche-souris basé sur une passion pour son salaire à la fin du mois...

   Un peu comme un streamer Twitch qui rêverait d'une IA pour jouer à sa place aux jeux vidéos!

Partager cet article
Repost0
13 décembre 2022 2 13 /12 /décembre /2022 11:18
Générateur aléatoire de vraies NFT (enregistrables et reproductibles)

   Voici une nouvelle version du petit programme "Nébuleuses" déjà présenté ici mais totalement refait. Toujours sous Python 3, format écran 16:9 de 1280x720, et sous module graphique tkinter et non plus Turtle.

   Les nébuleuses créées peuvent être enregistrées au format du logiciel (donc pas un format graphique classique tels BMP, GIF, JPG ou PNG) et reproduites via ledit logiciel. C'est-à-dire que la présence du logiciel est indispensable à la reproduction de la NFT; en fait fichier contenant l'image et petit logiciel font tout deux partie symbiotiques de la NFT...

   En licence CC-BY-NC-SA, open source libre et gratuit.

   Enfin, je viens quelques heures après de sortir la version 2.1 stable. C'était nécessaire car si la NFT se crée petit-à-petit, non-instantanément mais avec une vitesse de 10 centièmes de secondes par point; comme dans la vidéo lorsqu'on chargeait ("Load") une NFT celle-ci apparaissait à l'écran d'un seul coup. Dans cette version définitive j'ai trouvé le moyen de reproduire la NFT avec la même vitesse que celle de création.

   Il s'agit donc d'une NFT espace (à deux dimensions) - temps.

Programme Python 3, version 2.1 stable

Partager cet article
Repost0
2 novembre 2022 3 02 /11 /novembre /2022 07:39
Bal aérien de fête nationale en Python avec tkinter

   Alors là j'en ai mis des jours à améliorer ce petit programme Python graphique et animé. Et encore, j'y reviendrai, il n'est pas "parfait" au sens où il n'est en aucun cas Orienté Objet, même si «tout est objet ou peut être objet». J'ai surtout cherché la facilité et la lisibilité par un maximum de personnes.

   Bref, on en retire un programme amusant bien que frustre et dans son graphisme et dans son code. Voir après.

   Pour le faire fonctionner, on peut cliquer à tout moment sur "Changer de pays", et pour faire avancer les avions il suffit de maintenir la touche de flèche à droite appuyée.

programme Python 3

   Il est en Python 3, ce qui signifie que sous Visual Studio Code ou toute autre version précédente il faudra remplacer tkinter par Tkinter.

   Pour revenir sur les améliorations: on aurait pu considérer chaque avion (ici des triangles) comme un objet listé de avion[0] à avion[2] et définir chaque trait de couleur comme objet listé dans fumee[0] à fumee[5] (deux traits par avions) et directement composés de rectangles complets ne se créant pas à chaque fois que les avions avancent.

   Ce qui aurait permis d'utiliser la méthode move(dx) car alors il aurait suffit de programmer à avancer() ceci:

for n in range(0,3):
    avion[n].move(5)
    fumee[n*2].move(5)

    fumee[n*2+1].move(5)

   Ç'aurait été une solution jugée, et vraiment d'ailleurs, plus correcte mais qui aurait rendu mon code moins lisible donc moins adaptable aux nécessités rencontrées par chacun...

Partager cet article
Repost0
13 septembre 2022 2 13 /09 /septembre /2022 17:32

   C'est vrai que j'apprécie assez les rétro-games (jeux rétros), même si je ne suis pas un bon gamer (joueur); j'aime leurs graphismes, leurs sons, leur ambiance. Mais pour ce qui est de la programmation (du codage) je me tourne personnellement de préférence vers les tous premiers jeux sortis pour les tous premiers ordinateurs.

   Tel ce jeu de Ping (Squash) pour lequel je me suis mis à étudier le langage Python. Alors, avant sa sortie sous Python, une sortie tous OS (tous Systèmes d'Exploitation: Linux, Windows, Mac OS, Chrome OS) dans un langage certes très basique, Scratch 3, mais qui d'après ce que j'en ai pu voir sur son site officiel permet de programmer des jeux allant carrément jusqu'à Super-Mario!!!

   Bref, vous pouvez télécharger ce logiciel de programmation intuitive à l'URL suivante: https://scratch.mit.edu/download (déjà inclus dans le Raspberry Pi 4) ou bien si le téléchargement n'est pas possible (Linux rencontre une difficulté à le télécharger), programmer et exécuter en ligne à https://scratch.mit.edu qui s'affiche automatiquement dans la langue par défaut de l'ordinateur.

   Et voici ma version Old School du jeu Ping (avec sons) sous Scratch 3:

Fichier sb3 de code et ressources Scratch 3 pour le jeu Ping.

   Pour lancer ou relancer le jeu: appuyez sur la barre d'espace; pour bouger la raquette (en vert), sur les touches flèches gauche et droite...

Partager cet article
Repost0
11 mars 2022 5 11 /03 /mars /2022 04:12
Nébuleuses de synthèse avec Python ou une NFT gratuite!

   Et voici un programme typique années '80s: pas orienté objet du tout et programme graphique de base initialement codé (programmé on disait à l'époque) en Gw-Basic et Q-Basic (QBasic, Quick Basic). J'avais envie de le remettre au goût du jour sous des machines Windows ne comportant plus le MS-DOS (et donc les langages Basic cités ici), et qui a l'avantage de fonctionner également sous Linux et Mac-OS (langage Python, Python 3 ici, oblige).

   Un générateur de nébuleuses simple à utiliser... Aussi un générateur de NFT (oeuvres d'art numériques) gratuites, license CC (BY, NC, SA) = Creative Commons (By Yourself, Non Commercial, Share Alike) oblige...

   Voici le fichier .py (explications par après):

Version revue du 16/03/2022

   En réalisant ce programme récréatif graphique, ce qui m'a surtout plu est de découvrir deux codes nouveaux. En effet, si le passage du turtle en fond noir est expliqué dans le livre de démarrage du Raspberry Pi 400, j'ai découvert deux nouveaux paramètres de turtle.

   D'abord cacher la "tortue" (ou triangle pointeur) par pen(shown=False), ensuite accélérer l'exécution d'un dessin sous turtle au maximum possible par delay(0).

Partager cet article
Repost0
26 janvier 2022 3 26 /01 /janvier /2022 07:20

   Alors, ce 26 Janvier 2022 je vais enfin proposer ce module amélioré dans le blog indiqué dans l'article; ce que je n'avais pas fait primitivement. Une note: ce module, cette classe d'objet score, est dans le fichier proposé ici en UTF-8 et donc ne fonctionne pas sous Visual Studio Code tant qu'on ne l'a pas transformé en texte ASCII...

   À voir aussi en bas d'article un nouveau tutoriel vidéo sur l'usage du module (d'ici une heure: 07:40 AM).

Un module version avec classe de gestion et sauvegarde de scores d'un jeu sous Python

   Qui n'a pas déjà été triste après avoir joué à un jeu, qu'il soit programmé («codé» on dit de nos jours) en C/C++ ou en Python tant module Pygame (le plus courant) que Tkinter (tkinter depuis Python 3), de ne pas avoir la possibilité d'enregistrer son score et son pseudo? À moi, je vous l'avoue, ça m'est arrivé plus d'une fois; au point de me motiver à créer des lignes de code pour gérer un fichier contenant les dix meilleurs scores et le pseudo correspondant des joueurs.

   D'abord présenté sur le blog de www.developpez.net en version très simple, voici ici les lignes de code pouvant soit être utilisées comme module, soit, plus sûr, comme classe d'objet score à ajouter (copier-coller ou bien renommer le fichier et inclure la classe) au début de chaque jeu avant toute autres classes et en tout cas avant le programme principal du jeu lui-même.

   Bref voici le module "scoremanage":

   Évidemment ça s'adresse à ceux qui, comme moi, dès leur jeunesse ont rêvé de programmer eux-mêmes leur propre jeu. Il est clair que lorsqu'on programme un jeu, la base est d'avoir une sauvegarde et un tri des scores obtenus par des joueurs. Vous pourrez me répondre que c'est plus satisfaisant si on programme la classe de gestion de score "soi-même".

   Mais, justement, la logique de l'Open Source n'est pas «do it yourself» mais bien «do it with together», «faites le ensemble»; ce qui compte est de comprendre les lignes de codes et, pourquoi pas?, de savoir améliorer la solution proposée en imaginant d'autres usages ou besoins.

   Sinon autant dire que pour un jeu utilisant le module pygame, «autant reprogrammer soi-même l'ensemble de ce module car cela apporterait plus de satisfaction personnelle»...

   Bref:

   Plusieurs manières de l'utiliser, j'explique ici la plus flexible pour un jeu relativement complexe (2 joueurs):

#D'abord soit l'import du module soit sa copie

from scoremanage import *

#Ensuite définir l'objet

gs=Scoremanage("Zorro_sco")

#où gs n'est qu'un exemple et "Zorro_sco" le nom du fichier

#qui contient la liste des scores pour un jeu.

#Ensuite des variables contiennent les deux scores et noms des joueurs

pseudo1,score1="",1250 #ici le joueur n'a pas entré son pseudo

pseudo2,score2="optimum",3500

#Maintenant on écrit, un par un, les scores

gs.score,gs.gamer=score1,pseudo1

gs.addsco()

gs.score,gs.gamer=score2,pseudo2

gs.addsco()

#La lecture des scores renvoie une liste

scores=gs.lirsco()

#On peut réinitialiser les scores par:

gs.inisco()

#C'est tout!

   Et comme exemple concret d'utilisation un petit jeu, un classique des années fin 1960 - mi 1970 (60's - 70's):

Partager cet article
Repost0

Présentation

  • : Town Ground anc. Igor Gorovitch
  • : Créations électroniques d'un dissident du numérique bien intégré. Musique style 90's et (un peu) programmation style années 1980 (80's). Les eighties au cœur.
  • Contact

Recherche