Overblog Tous les blogs Top blogs Musique & Divertissements Tous les blogs Musique & Divertissements
Suivre ce blog Administration + Créer mon blog
MENU
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
13 décembre 2021 1 13 /12 /décembre /2021 05:54
Programme graphique qui a demandé du temps pour la finition...

   En fait je me disais bien que ça me rappelait quelque chose; j'ai découvert quoi par hasard fin 2025 / début 2026 et ai approfondi le sujet, voir article ici: Mandala, les origines...

   J'ajoute ici une petite modification concernant mon programme graphique "Rosaces 3.3" en "Rosaces 3.3b". Il s'agit d'améliorations de la lisibilité du programme et une fluidification des lignes de codes dans leur succession d'exécution. On pourra comparer avec le programme initial toujours présent plus bas.

   Donc, d'abord le fichier Python 3 (.py) puis sa version texte Unicode pour pouvoir comparer...

Rosaces 3.3b le programme Python 3 retravaillé en 2021.

Le fichier texte Unicode du programme pour affichage direct.

   Alors, si je suis resté au moins trois mois (quatre maintenant) sans mixes c'est que j'étais surtout pris par la programmation. D'abord programmation d'une fusion entre mes programmes graphiques de polygones et d'étoiles, fusion que je présenterai en bas d'article.

   Ensuite un programme rapide à coder, mais dont la résolution de la fluidification "comme dans la vidéo" de l'inventeur du concept a été très longue...

   À ce propos, voici la vidéo de l'inventeur en question; notez bien que son programme n'est pas le même que le miens d'autant que le code-source de son programme n'est pas public.

   Bref ça m'a donné envie de développer mon propre programme basé exactement sur le même concept, en langage Python bien entendu, le voici suivi de son code source en format texte .txt.

   Enfin, pour la fusion de polygones et étoiles; l'un avec le module Turtle, l'autre avec Tkinter. On préfèrera le premier car il laisse voir se dessiner l'étoile dans le polygone inscrit dans un cercle "comme le ferait un humain"; mais la seconde version, plus rapide et avec présence du cercle, n'est pas mal non plus...

Programme graphique qui a demandé du temps pour la finition...
Programme graphique qui a demandé du temps pour la finition...
Partager cet article
Repost0
9 septembre 2021 4 09 /09 /septembre /2021 08:59

   Je sais que pour programmer des jeux en langage Python, la préférence se porte sur le module "pygame" mais comme il n'est pour l'instant pas disponible en 64 bits, que par ailleurs il n'est pas forcément préinstallé avec le téléchargement par défaut d'un IDE (EDI) Python, et qu'ensuite je ne le maîtrise pas à 100%; j'ai voulu utiliser le module universel tous OS (32 et 64 bits) de Python: tkinter.

   Un petit et bête jeu qui m'aura demandé trois jours pour résoudre le problème suivant: comment remplacer une photo par une seconde photo dans le canevas (Canvas)? Puis un quatrième jour pour la finition, sans compter les nuits (deux) que j'ai passées dessus.

   Bref, tête dans les étoiles, nous rêverons donc, comme Elon Musk, de conquête spatiale et de Mars...

   Dossier zippé et gratuit ici; il contient le programme et deux photos en format GIF, pas de son pour ce programme malheureusement ou tant mieux je sais pas:

Partager cet article
Repost0
22 avril 2021 4 22 /04 /avril /2021 21:33

   Avant de passer une matinée à améliorer ce qui avait déjà été fait (2 modules seulement) et à programmer et déboguer le reste, puis tester, et bien avant tout cela, et après une 50 cl de bière Heineken hollandaise d'Amsterdam, je me suis dit «et si j'enregistrais une minute de silence?» principalement pour tous les dégâts causés par le CoViD-19 sur les démocraties mais aussi les morts dans le monde entier.

   Enregistrer une minute de silence c'est pas si simple qu'il n'y paraît mais pour s'acharner là-dessus faut être un peu con. Mais comme disais Serge Gainsbourg: «la connerie est la décontraction de l'intelligence»; et personnellement j'ajouterai que malheureusement «pour les cons, l'intelligence est une torture»...

   Mais bon. Voici donc la minute de pur silence:

   Alors, du plus sérieux maintenant: parlons programmation en langage Python d'un gestionnaire de QCM (Questionnaire à Choix Multiples) d'évaluation (donc à notation, cotation, points). Grosso-modo je ne vais pas m'étendre sur les explications de la logique des codes-sources des différents modules; je vais juste tenter de présenter un mode d'emploi.

   En premier l'enseignant devra écrire via un éditeur de texte simple mais permettant d'enregistrer au format UTF-8 (ainsi Bloc-Notes sous Windows, MousePad sous Linux ou tout autres, il y en a aussi pour le Mac OS) le QCM à proposer à l'étudiant.

   Là il faut expliquer la logique de l'écriture car il y a un peu de choses du type "hypertexte" à ajouter. On prendra en exemple celui qui m'a servi de test:

   Donc on remarque d'abord des entrées à la ligne manuelles. Très important ça. Aussi des paragraphes, dont celui d'introduction, terminés par une ligne ne comprenant que deux étoiles "**". Ces ** indiquent aux logiciels qu'il s'agit d'un paragraphe de remarque n'appelant aucune réponse autre que la touche [Entrée]. Ce sont des formes de remarques-pauses dans le déroulement du QCM.

   Lorsque des choix arrivent, numérotés à partir de 1, à la fin de ces choix on remarque deux lignes: une premières de double-moins "--" indiquant aux programmes qu'un choix est posé et une suivante avec un numéro qui correspond au nombre de choix laissés.

   Juste après ça reprend. La dernière ligne ne peut être un **, mais doit être laissée vide.

   À noter qu'il n'y a qu'un choix possible. Que le choix zéro (0) est proposé par les programmes et correspondent à «Je ne sais pas / aucune réponse satisfaisante»; ce qui est important car cela signifie que le choix 0 peut très bien valoir des points.

   Après avoir enregistré, dans le même répertoire que le répertoire où se trouvent les modules Python, le fichier texte QCM (pour moi ça a été "cg1A01.txt"), l'enseignant devra exécuter configQCM.py afin de sauvegarder les notes attribuées à chaque réponse de chaque question dans un fichier binaire "points..." (ici "pointscg1A01.txt").

   L'exécution de verifQCM.py sert à générer un fichier pur texte UTF-8 mais dont le format d'entrée de lignes dépendra de l'OS sur lequel on l'aura exécuté (Windows, Linux, Mac OS) qui synthétise l'ensemble des notes attribuées dans le fichier "correct...".

   L'étudiant, lui, ne doit disposer que de trois choses: un numéro ou "matricule" d'étudiant, le logiciel remplirQCM.py, et le fichier de QCM dont je parlais en premier. Il en retire un fichier "r"+"numéro d'étudiant"+"nom du fichier QCM" (tel "r001cg1A01.txt").

   C'est ce fichier "r" qui doit être renvoyé au professeur qui alors exécutera corrigerQCM.py pour chaque matricule d'étudiant et qui génère un autre fichier pur texte "t..." ou "temp..." si je me souviens bien.

   Le résultat, les notes, sont indiqués en points et en pourcentage à une décimale après la virgule près et peut (doit) être intégrée dans un tableur reprenant les notes générales de tous les étudiants.

   Bref voici ces logiciels Libre et Open Source et Gratuits:

Partager cet article
Repost0
22 novembre 2020 7 22 /11 /novembre /2020 06:54

   Alors refonte en Python de l'utilitaire, voici le calendrier.py...

Version du 05/06/2022

   Pour installer l'utilitaire, téléchargez le dossier, décompressez-le (normalement avec 7-Zip), scannez avec votre anti-virus le dossier décompressé si vous avez un doute, exécutez setup.exe qui installera le programme Calendrier 2.exe dans le menu démarrer et plus précisément à partir de Windows 8 dans la page d’accueil même ou alors dans la liste des programmes à "Hewlett Packard Company".

Version acceptée par les antivirus...

   Alors je reviens avec ce Calendrier  Grégorien "actif" dans une version refondue. Il permet désormais de découvrir le jour correspondant à une date, le nombre de jours entre deux dates et aussi la date qu'il sera dans J jours à compter de telle date. Trois fonctions donc contre deux seulement auparavant.

   Voici la logique de son code source en Visual Basic .NET Framework 2017 (fichier texte Unicode du Module1):

Partager cet article
Repost0
18 novembre 2020 3 18 /11 /novembre /2020 02:03

   Alors les versions précédentes de mes programmes de polygones présentaient une certaine lenteur à l'exécution. Cela était dû à l'usage du module Turtle de Python. Alors certes si la lenteur pouvait être perçue comme un inconvénient, elle a aussi l'avantage qu'on "voit" se dessiner le polygone sous nos yeux.

   Ici version instantanée du dessin de polygones, avec affichage du cercle dans lequel ils sont inscrits, polygones commençant à trois côtés et où on a le choix d'augmenter ou de diminuer à tout moment de 1 le nombre de côtés par simple clic.

   Et le fichier texte Unicode des lignes de programmation:

Partager cet article
Repost0
14 novembre 2020 6 14 /11 /novembre /2020 10:47
Deux hexagones obtenus selon des méthodes différentes
Deux hexagones obtenus selon des méthodes différentes

Deux hexagones obtenus selon des méthodes différentes

   Alors, toujours dans les graphiques, comme on le voit il y a souvent plusieurs moyens de résoudre un même problème; ici le dessin de polygones, toujours sous Python.

   La première résolution est à préoccupation strictement graphique: longueur d'un côté, épaisseur de trait et nombre de côtés. Voici sa version:

   La seconde méthode est strictement mathématique. On demande le rayon du cercle dans lequel est inscrit le polygone (maximum 300; 320 en fait), l'épaisseur et le nombre de côtés. Ensuite on calcule l'angle en radians afin d'y appliquer un calcul du Cos(angle)*rayon et du Sin(angle)*rayon qui serviront de coordonnées (x,y) de points à joindre entre eux. Voici:

Version mathématique

   Et pour ceux qui ne se sentent pas encore prêts à télécharger l'interpréteur Python mais qui aimeraient néanmoins "lire" les codes sources, les voici au format texte brut:

Partager cet article
Repost0

Présentation

  • : Town Ground ex Igor Gorovitch
  • : Créations électroniques d'un dissident et underground électro-grunge du numérique bien intégré. Musique, tracks (pistes, morceaux, remixes, reworks) originaux et mixes et programmes Python libre et open-source.
  • Contact

Recherche