Author: Maxence.H

Tutoriels

Comment publier sur le Numworks workshop?

Le Numworks workshop se trouve sur le site internet Numworks. Sur ce site on peut y trouver un émulateur de la calculatrice en ligne (gratuit), un tutoriel sur le Python et un espace où l’on peut créer des scripts (en Python bien évidemment) pour ensuite les publiés publiquement ou les garder privés. Le Numworks workshop est l’endroit où l’on peut retrouver les scripts que vous avez crées ou que les autres ont publiés.

Pour se rendre sur le site, il vous faut seulement un ordinateur qui est accès à internet ( smartphone, tablettes très déconseillé).

1. Ouvrir un navigateur internet

Il faut tout d’abord ouvrir un navigateur internet. (Google Chrome recommandé).

2. Se rendre sur le site

Une fois que vous êtes dans votre navigateur, tapez dans la barre de recherche numworks puis cliquez ensuite sur le premier lien.

3. Création d’un compte

Vous voilà sur l’accueil du site, maintenant cliquez sur mon compte.

  • Il faut maintenant vous créez un compte et pour cela il suffit juste de cliquez sur le bouton jaune s’inscrire.
  • Si vous possédez déjà un compte passez directement a la prochaine étape.
  • Rentrez votre adresse mail et vos informations personnelles puis cliquez sur S’inscrire.
  • Si vous ne possédez aucune d’adresse mail : Cliquez ici pour trouver un tutoriel vous expliquant comment faire pour en créer une.

4. Connectez vous

Une fois inscrit cliquez sur Se connecter.

  • Rentrez vos identifiants puis cliquez sur Se connecter.

5. Accéder à vos scripts

Vous voilà connectez. Maintenant nous voulons publiez sur le Numworks Workshop et pour cela il faut d’abord créer des scripts. Pour accéder a vos scripts, cliquez sur votre adresse mail puis sur mes scripts.

  • Vous vous retrouvez sur cette page. Si vous n’avez aucun script , créer en un et pour cela il vous suffit de cliquez sur nouveau script.

6. Création d’un script

  • Donnez lui un Nom. Il ne peut contenir aucune majuscule, aucun caractère spécial et il faut bien mettre .py à la fin car sinon on ne pourra pas sauvegarder le script. Faites une légère description puis rédiger votre script.
  • N’OUBLIER PAS de cocher la case Permettre aux utilisateurs d’accéder à ce script. Si vous ne la cochez pas votre script restera privé et ne sera pas publié.
  • Une fois fini, cliquez sur Sauvegarder.
  • Ici il est impossible de sauvegarder le script car dans le titre il y a une majuscule. Aucun problème on met une lettre minuscule à la place.
  • Maintenant que votre titre est aux normes, cliquez sur Sauvegarder.
  • Votre script est terminé. Si la case verte Public apparait comme ci-dessous, cela indique que votre script est bien publié et les autres utilisateurs y auront accès.

7. Rendre votre script privé

Si vous voulez rendre votre script privé, il vous suffit juste de cliquez sur le petit stylo jaune.

  • Cliquez ensuite sur le petit stylo situé en haut a droite de l’écran.
  • Maintenant décocher la case Permettre aux utilisateurs d’accéder à ce script et sauvegarder votre script.
  • Votre script est bien passé en privé.

Et voilà, ce tutoriel est terminé ! J’espère qu’il vous a été utile !

Projets

Le jeu du plus ou moins en python

Le principe du jeu est de trouver le nombre de l’ordinateur en un certains nombres de tentatives. Si le joueur ne trouve pas ce nombre en ce certains nombres de tentatives, la partie prend fin mais aussi lorsque le joueur trouve le nombre généré aléatoirement par l’ordinateur.

Introduction

Ce jeu a été réalisé par un élève en première et spécialité NSI.

Jouez au jeu du plus ou moins sur ordinateur ou sur un émulateur qui soit compatible avec le module tkinter !

Dans le cadre de mon projet, le jeu a été codé en python sous 2 formes différentes :

La première qui permet au joueur de jouer directement via la console d’exécution de son application :

La seconde qui permet au joueur de jouer dans un terminal appart soit dans une nouvelle fenêtre :

Évolution

Jeu dans la console d’exécution

  • L’importation des modules et variables

Le module randint est un module aléatoire donne accès à diverses fonctions utiles et l’une d’elles est capable de générer des nombres aléatoires. Elle s’écrit de cette façon : randint(start, end)

J’ai crée 5 variables nombres : La 1ère définit notre nombre d’essais maximum, la 2nde notre nombre d’essais au départ, la 3ème le nombre du joueur, la 4ème et la 5ème sont liée car ici nous faisons appel a la variable nombre_max_ordi dans la fonction randit().

from random import randint

essais_max= 5  # nombre d'essais maximum
essais = 1   # nombre essais
nombre_joueur = 0   # nombre du joueur au départ
nombre_max_ordi = 25  # nombre maximum généré par l'ordinateur
nombre_ordi = randint(1,nombre_max_ordi)   # nombre choisi par l'ordinateur
  • Affichage

La fonction print permet d’afficher a l’écran du texte.

print("L'ordinateur a choisi un nombre entre 1 et",nombre_max_ordi, ".")
print("Vous devez le trouver en moins de 5 tentatives !")
  • Boucle while

En anglais  » while  » signifie « Tant que ». Pour créer une boucle , il faut donc utiliser ce mot clé suivi d’une indication qui dit quand la boucle s’arrête.

Ici notre boucle ne s’arrêtera pas tant que quand le nombre de l’ordinateur ne sera pas égal au nombre du joueur et que son nombre d’essais soit inférieur ou égal au nombre d’essais maximum.

if, elif et else sont des conditions incrémenté dans notre boucle while.

if signifie « si ». Ici, elle marchera si le nombre du joueur est inférieur a celui de l’ordinateur.

elif est contraction de « else » et « if », qu’on pourrait traduire par « sinon ». Ici elle marchera si le nombre du joueur est supérieur a celui de l’ordinateur.

else signifie « autre ». Elle marchera si les conditions if et elif ne sont pas respectés. Entre autre le joueur aura gagné.

while nombre_ordi  != nombre_joueur and essais <= essais_max:
    print("vous êtes au", essais, "essai.")
    nombre_joueur = int(input("Choisissez un nombre :"))
    if nombre_joueur < nombre_ordi:
        print("Le nombre que vous avez choisi est trop petit")
    elif nombre_joueur > nombre_ordi:
        print("Le nombre que vous avez choisi est trop grand")
    else:
        print("Félicitations ! Vous avez trouvé le nombre de l'ordinateur ","en",essais,"essai(s)")
    essais += 1
  • Condition if

Si le joueur dépasse le nombre d’essais maximum et que si son nombre n’est pas le même que celui de l’ordinateur alors il aura perdu.

if essais>essais_max and nombre_joueur != nombre_ordi :
    print("Désolé, vous avez utilisé tous vos essais.")
    print("Vous êtes vraiment nul, réessayer jusqu'a que vous gagnez!")
    print("L'ordinateur avais choisi le nombre",nombre_ordi,".")

Jeu avec interface graphique

  • L’importation des modules et variables

Tkinter (de l’anglais Tool kit interface) est la bibliothèque graphique libre d’origine pour le langage Python, permettant la création d’interfaces graphiques.

Pour créer mon interface graphique, j’ai d’abord créer une fenêtre dont j’ai préciser sa dimension dans laquelle on y retrouva le titre, puis la couleur de fond (qui sera ici du bleu cyan), ainsi que le texte de présentation.

from random import randint
from tkinter import *

fenetre = Tk()#creation fenetre
fenetre.title("Devine le nombre")#titre
fenetre.config(bg = "#87AEAB")# couleur de fond
fenetre.geometry("1080x720") # dimension
texte = Label (fenetre, text = "Bienvenue sur le jeu du + OU -")# texte
texte.pack()

Du coté des variables une seule chose a changé : leurs valeurs ( je vous expliquerai pourquoi plus tard).

essais_max= 4 # nombre d'essais maximum
essais = 1   # nombre essais
nombre_joueur = 0   # nombre proposé par le joueur
nombre_max_ordi = 9  # nombre maximum généré par l'ordinateur
nombre_ordi = randint(0,nombre_max_ordi)   # nombre choisi par l'ordinateur
  • Affichage

Le widget Label est un widget Tkinter standard utilisé pour afficher un texte ou une image à l’écran. Ici il va afficher du texte.

La fonction str() convertit les valeurs en forme de chaîne afin qu’elles puissent être combinées avec d’autres chaînes. Elle est utilisé dans mon programme car on ne peut écrire un texte avec des valeurs autres que des lettres alors que ma variable est un chiffre.

La méthode .pack place les widgets les uns en dessous des autres et ajuste la taille de la fenêtre. On verra plus bas que l’on peut passer des arguments à cette méthode pour placer les widgets différemment (en haut, à droite, à gauche).

Pour résumer si la méthode .pack() n’est pas utilisé a chaque fin de variables, celles-ci ne s’afficheront pas lors de l’exécution du programme.

texte2 = Label (fenetre, text = "L'ordinateur a choisi un nombre entre 1 et " +str(nombre_max_ordi))
texte2.pack()

Label (fenetre, text = "Tu as 4 essais pour le trouver ").pack()
Label (fenetre, text = "A toi de jouer !").pack()
  • Le cerveau du programme

La fonction chekInput représente la boucle principale, c’est elle qui contient les conditions de notre programme.

En Python, le mot clé global permet de modifier la variable en dehors de la portée courante. Il est utilisé pour créer une variable globale et apporter des modifications à la variable dans un contexte local ( donc ici dans notre fonction).

Puisque c’est une boucle qui tourne à toutes les actions du joueur, c’est l’endroit idéal pour mettre à jour les infos du joueur, comme le nombre d’essais.

Cette fonction ne change pas vraiment de celle du 1er programme appart le texte.

def checkInput(nombre_joueur):
    global essais, essais_max, nombre_ordi
    Label (fenetre, text = "Vous avez choisi " + str(nombre_joueur) + " :").pack()

    print(essais , essais_max)
    if nombre_ordi  != nombre_joueur and essais <= essais_max:
        Label (fenetre, text = "vous êtes au " + str(essais) + " essai.").pack()
        essais += 1
        nombre_joueur = int(nombre_joueur)
        if nombre_joueur < nombre_ordi:
            Label (fenetre, text = "Le nombre que vous avez choisi est trop petit").pack()
        elif nombre_joueur > nombre_ordi:
            Label (fenetre, text = "Le nombre que vous avez choisi est trop grand").pack()
        
    elif nombre_ordi == nombre_joueur:
        Label (fenetre, text = "Bien joué, le chiffre était bien : " + str(nombre_ordi)).pack()
    elif  essais>essais_max and nombre_joueur != nombre_ordi :
        Label (fenetre, text = "Désolé, vous avez utilisé tous vos essais. Le chiffre était " + str(nombre_ordi)).pack()
  • Problème rencontré

Le moment est venu de vous expliquer pourquoi les valeurs de mes variables ont changé.

Tout simplement puisque j’ai crée des boutons de 0 à 9 et je n’avais pas la place d’en mettre plus sinon on aurait pas vu la fin de notre programme.

Voici une photo pour mieux comprendre.

Si il y avait eu plus de bouton le texte qui apparait après chaque clic sur un bouton aurait dépassé de ma fenêtre.

  • Interaction homme/machine

Voici les 10 boutons allant de 0 a 9.

Pour lier un événement à un widget, on utilise la méthode bind() sur ce widget.

Le premier argument, ‘<Button-1>’, est un «descripteur de séquence» qui indique à tkinter que lorsque le bouton gauche de la souris est pressé, il faut qu’il appelle la fonction  chekInput fourni comme deuxième argument.

Une fonction lambda est une petite fonction anonyme qui peut prendre n’importe quel nombre d’arguments, mais ne peut avoir qu’une seule expression.

Ici elle va prendre le chiffre qui lui est associé et le joué dans la fonction chekInput.

btn0 = Label (fenetre, text = str(0))
btn0.bind("<Button-1>", lambda e: checkInput(0))
btn0.pack()

btn1 = Label (fenetre, text = str(1))
btn1.bind("<Button-1>", lambda e: checkInput(1))
btn1.pack()

btn2 = Label (fenetre, text = str(2))
btn2.bind("<Button-1>", lambda e: checkInput(2))
btn2.pack()

btn3 = Label (fenetre, text = str(3))
btn3.bind("<Button-1>", lambda e: checkInput(3))
btn3.pack()

btn4 = Label (fenetre, text = str(4))
btn4.bind("<Button-1>", lambda e: checkInput(4))
btn4.pack()

btn5 = Label (fenetre, text = str(5))
btn5.bind("<Button-1>", lambda e: checkInput(5))
btn5.pack()

btn6 = Label (fenetre, text = str(6))
btn6.bind("<Button-1>", lambda e: checkInput(6))
btn6.pack()

btn7 = Label (fenetre, text = str(7))
btn7.bind("<Button-1>", lambda e: checkInput(7))
btn7.pack()

btn8 = Label (fenetre, text = str(8))
btn8.bind("<Button-1>", lambda e: checkInput(8))
btn8.pack()

btn9 = Label (fenetre, text = str(9))
btn9.bind("<Button-1>", lambda e: checkInput(9))
btn9.pack()
  • Fin de la fenêtre

La méthode mainloop() permet d’afficher la fenêtre qui vient d’être créée. Pour ceux qui ne l’avais pas deviné, elle marque la fin de notre programme.

fenetre.mainloop()

Anecdote

A la base j’étais dans un groupe de 3 personnes et ont voulais créer un space invaders mais ont s’est vite rendu compte de la difficulté alors ont s’est orienté sur le jeu du morpion. Puis je décida de quitter le groupe et de me mettre en solo car ils ne travaillait pas et c’est ainsi que j’ai codé le jeu du plus ou moins.

Conclusion

Pour pouvoir jouer à mes des versions du jeu, téléchargez le code par l’intermédiaire du lien ci-dessous. Pour la 1ère version il vous faut écrire le nombre dans la console d’exécution et pour la 2nde il vous suffit juste de cliquer sur les boutons.
Amusez-vous bien !

Téléchargement