Author: COULIBALY R.

Tutoriels

Comment rendre une image basique en .gif 3D dynamique

Lors de la gestion et montages d’images il peut être utile de savoir rendre ces images différentes des autres en ajoutant votre petite touche personnelle. Ce la peut passer par le fait de simplement retoucher vos images mais également par le fait de les transformer !

C’est pour quoi nous allons donc voir comment rendre une image simple en image au format .gif pour lui ajouter du mouvement.

Dans ce tutoriel nous allons apprendre à mettre une image en 3D puis lui faire exercer une rotation infinie. Cela peut être utile pour donner de vie à un logo que vous voudriez publier sur internet.

Tout d’abord :

Il est nécessaire de se munir :
– d’un pc ;
– du logiciel Photoshop ;
– ainsi que de l’image déjà détourée sur laquelle vous voulez travailler.

Les différentes étapes :

Apres avoir lancé Photoshop, il vous est demandé de choisir un paramètre d’image spécifiant sa taille. Ici nous voudrons une image carrée de qualité intermédiaire (1000 x 1000 px).

Une fois que cela est fait, vous vous retrouvez avec un projet vierge. Il faut donc importer votre image sur laquelle vous voulez faire vos modifications. (aller dans Fichier > Importer et incorporer)

Une fois votre image importée, elle s’affichera sur le fond blanc de votre projet Photoshop. vous allez désélectionner ce fond blanc comme cela afin que votre image apparaisse sur un fond invisible :

N’oubliez pas de veiller à ce que votre image soit bien agrandie afin qu’elle prenne presque toute la place.

Une fois ces étapes respectées, nous allons nous occuper de la partie 3D de notre projet de transformation d’image. Pour cela, vous devez aller dans Fenêtre > 3D.

Quand cela sera fait, vous aurez une nouvelle petite fenêtre comme celle-ci.

Dans cette fenêtre vous sélectionnez « Extrusion 3D » puis « Créer » pour appliquer l’extrusion.

Vous vous retrouverez avec un aperçu ressemblant à ça.

Nous voyons donc que l’effet 3D s’est appliqué et a donc créé une profondeur à notre image.

Il est important de changer la profondeur de notre image afin qu’elle soit à notre gout et assez esthétique. ce réglage s’effectue dans les propriété de l’image (dans une fenêtre qui sera apparue lorsque nous avons exécuté l’extrusion).

Il est conseillé de mettre une profondeur d’extrusions comprise entre 50 et 80 px pour que le rendu soit joli. vous êtes cependant libre de mettre les paramètres qui vous chantent.

Il est important de désactiver les ombres portées afin de ne pas voir l’ombre qui sera sous votre image car cela n’es pas beau.

Ajouter du mouvement :

L’ajout de mouvement sera l’étape la plus importante de votre projet puisque cela va nous permettre de faire tourner votre image sur elle même.

Vous devrez donc aller dans Fenêtre > Montage

La fenêtre montage vous ouvrira la possibilité de faire une animation visuelle de votre image.

Vous devrez donc créer un Montage :

Puis vous aurez ceci qui s’affichera :

Une fois arrivé ici, nous irons dans « Filets 3D » puis nous aurons le nom de notre image qui va s’afficher avec un chronomètre à sa gauche. nous allons cliquer sur le chronomètre.

Nous allons ensuite raccourcir le temps de rotation de notre image à 3 secondes :

Sur la barre du temps, vous devez cliquer sur 15f.

C’est ici que notre image aura fait 180 degrés de rotation.

Une fois que cela est fait, vous cliquerez sur le petit losange jaune pour sélectionner ce temps :

Ensuite dans la barre du temps, nous allons cliquer sur 3f puis répéter l’action en cliquant sur le losange jaune.

Cliquez sur le losange sélectionné à 15f, puis allez dans l’onglet propriétés, puis sur le cube 3D.

Vous devrez rentrer les mêmes paramètres SEULEMENT SUR LA COLONE DU MILIEU.

Une fois cette étape achevée, nous allons faire de même sur le losange du 3f mais en changeant les paramètres comme cela :

Ces deux étapes servent à définir l’inclinaison/position de votre image au début, au milieu et à la fin du temps donné.

Il est très important de désactiver l’éclairage infini car il vous créera une ombre si il n’est pas enlevé.

Personnalisez le rendu des couleurs :

Pour ajouter un peu de touche personnelle à votre image, vous pouvez bien évidement changer l’aspect de la matière en passant aussi par les couleurs.

Vous devez donc sélectionner la partie à personnaliser :

Ici nous allons modifier l’aspect de la matière de l’avant de l’image.

Une fois sélectionnée, vous devez vous rendre dans les propriétés de celle-ci puis changer le personnaliser à vos goûts.

Exportation au format .gif

Nous avons maintenant fini les modifications sur notre image et nous devons à présent l’enregistrer dans nos fichiers.

Pour cela, allez dans Fichier > Exportation > Enregistrer pour le Web

Puis une fenêtre comme celle-ci s’ouvrira :

Il vous suffira tout simplement d’aller sur le bouton « Enregistrer »

Nous sommes désormais arrivés à la fin de ce tutoriel expliquant comment transformer une simple image en .gif 3D dynamique !

Nous vous remercions d’avoir suivi notre tutoriel !

Projets

Une machine à sous en Python

Jouez à une machine à sous et jeu du nombre inconnu sur python avec de l’argent virtuel ! Obtenez 2 ou 3 fois le même signe et trouvez le nombre inconnu ! Moins de chance de se ruiner !

Présentation du projet

Projet réalisé sur Thonny en Python par COULIBALY Rayan, GARCIA Florian et BRYCKAERT Aurélien de la classe de première 2021-2022 en spécialité NSI.

Nous avons eu l’idée de reconstituer une machine à sous où le but est d’obtenir 2 ou 3 fois le même signe pour ainsi recevoir une somme d’argent variante selon l’argent misé. Nous n’avons mis que 4 symboles différents dans la machine, contrairement à une vraie machine à sous qui en comporte 16 en moyenne.

Nous avons aussi décidé de crée un deuxième mini-jeu : le nombre inconnu. Ce jeu est également connecté au même système d’argent virtuel. Le but est de trouver un nombre caché entre 1 et 1000, la limite est de 10 tentatives mais il faut juste un peu de réflexion pour gagner. L’argent misé sera multiplié par deux et pourra être utilisé dans le jeu de la machine à sous ou dans la boutique.

Style

Pour ce projet, nous avons décidé de créer une machine à sous en style art ASCII. Ce dernier consiste à réaliser une image avec tout type de lettres et de caractères spéciaux. Ceci est totalement esthétique et ne change pas vraiment l’expérience du jeu. Pour le jeu du nombre inconnu, nous n’avons pas pu faire créer un objet en ASCII car il n’y a pas vraiment de moyen pour représenter ce jeu autrement qu’avec du texte. Pour le menu et la boutique, nous avons décidé de faire quelque chose de classique, facile à comprendre. Pour les articles du shop, nous avons décidé de les montrer en art ASCII uniquement quand ils sont achetés par le joueur. C’est comme une récompense pour celui-ci pour d’avoir joué et gagné à nos jeux. Nous n’avons pas fait ces 3 objets en ASCII nous même, voici le lien du site où nous les avions trouvé https://www.asciiart.eu/.

Capture d’écrans

Évolution

La création du projet à commencé en plusieurs parties :

Le design de la machine à sous (visuellement) :

Le groupe à d’abord pensé à comment la machine sera construite, les différents symboles que la machine possèdera ainsi que le nombre de cases qu’elle comportera. Un modèle d’une machine à 6 cases, comportant 7 symboles différents.

Finalement, ça sera un modèle d’une machine à sous contenant 3 cases ainsi que 4 symboles diffèrent qui sera choisie.

                         .-------.
                         |Jackpot|
                  _______|_______|_______
                 |        _       _      |
                 |       | |     | |     |
                 |    ___| | ___ | |_    |
                 |   / __| |/ _ \| __|   | ___
                 |   \__ \ | (_) | |_    |(   )
                 |   |___/_|\___/ \__|   | | |
                 |    ___   ___   ___    | | |
                 | ===___===___===___=== | | |
                 | |*|   |*|   |*|   |*| | | |
                 | |*|   |*|   |*|   |*| |_| |
                 | |*|___|*|___|*|___|*| |___|
                 | ===* *===* *===* *=== |
                 |    /_____________\    |
                 |     |           |     |
                _|     \___________/     |_
               (___________________________)

Symbole: ♥, ♠, 7, ♣

La programmation de la machine à sous :

Nous devions pour la réalisation du fonctionnement de la machine à sous, créer un script qui prendrait 3 valeurs choisissant aléatoirement un des quatre symboles. Pour que l’aléatoire fonctionne, nous devions importer la fonction random au script (Random signifiant aléatoire en anglais). Nous avions ensuite créé trois valeurs, qui correspondent aux trois symboles qui seront dans les cases de la machine à sous.

import random
signe1 = ("♥", "♠", "7", "♣")
num1 = random.randrange(0,4)
signe2 = ("♥", "♠", "7", "♣")
num2 = random.randrange(0,4)
signe3 = ("♥", "♠", "7", "♣")
num3 = random.randrange(0,4)

Le système d’argent est aussi nécessaire à la réalisation d’une machine à sous. Nous avions décidé que le joueur aurait en début de jeu, une somme de 5000€. Nous avons aussi décidé que le joueur ne pourrait pas miser une somme inférieure ou égale à 10€ dans la machine.

money = [5000]

mise = int(input("Combien veux tu miser ? "))
        if mise > money[0]:
            print("tu n'as pas assez d'argent pour miser cette somme")
            slot()           
        if mise >= 10:
            money[0] = money[0] - mise
            print("")
            print("          -",mise,"€")

Nous avons ensuite créé les scritps qui récompensent ou non le joueur lorsqu’il gagne ou perd. La mise est multipliée par 5 puis mise au carré lorsque le joueur obtient 3 symboles identiques, et par 4 lorsqu’il obtient 2 symboles identiques et rien si il obtient aucun symboles identiques.

if signe1[num1] == signe2[num2] == signe3[num3]:
	gagne = 5*mise**2 
	money[0] = money[0] + gagne
	print("Bravo! tu as gagné ",gagne,"€")
elif signe1[num1] == signe2[num2]:
	gagne2 = mise * 4
	money[0] = money[0] + gagne2
	print("Bravo! tu as gagné ",gagne2,"€")
elif signe2[num2] == signe3[num3]:
	gagne3 = mise * 4
	money[0] = money[0] + gagne3
	print("Bravo! tu as gagné ",gagne3,"€")
elif signe1[num1] == signe3[num3]:
	gagne4 = mise * 4
	money[0] = money[0] + gagne4
	print("Bravo! tu as gagné ",gagne4,"€")
elif signe1[num1] != signe2[num2] != signe3[num3]:
	perd = mise*0
	money[0] = money[0] + perd
	print("Dommage tu as perdu cette fois-ci !")

La programmation du jeu du nombre inconnu :

Pour ce deuxième mini-jeu, nous avions aussi eu besoin de l’aléatoire, en effet le nombre que le joueur doit trouver est compris en 1 et 1000. Nous devions aussi faire en sorte que le joueur possède 10 essais pour trouver le nombre inconnu. Pour faire cela nous avions entré une valeur nommé « nb_coup » égale à 10 qui correspond donc aux nombres d’essais restants du joueur. A chaque réponse, « nb_coup » sera soustraite de 1 et quand cette valeur sera à 0, le joueur aura perdu. La valeur « nb_test » est la nombre écrit par le joueur, cette valeur sera utilisée pour annoncer si le nombre inconnu est supérieur ou inférieur au nombre choisi ou si elle correspond au nombre inconnu.

mise2 = int(input("Combien d'argent jouez vous ?\t"))
        if mise2 > money[0]:
            print("Tu n'as pas assez d'argent pour miser cette somme")
            le_nombre_inconnu()
        nb_inconnu = random.randint(1,1000)
        nb_coup=10
        while nb_coup>0:
            print("\n")
            nb_test = input("Entrez un nombre : ")
            nb_coup = nb_coup - 1
            nb_test = int(nb_test)
            if nb_test < nb_inconnu :
                print("\n")
                print(nb_test, ": Plus haut\n")
                print("Il te reste", nb_coup, "essai(s)\n")
            if nb_test > nb_inconnu :
                print("\n")
                print(nb_test, ": Plus bas\n")
                print("Il te reste", nb_coup, "essai(s)\n")
            if nb_test == nb_inconnu :
                print(nb_test, ": Trop fort\n")
            	money[0] = money[0] - mise2
                mise2 = mise2 + mise2
                mise3 = mise2 + money[0]
                print("Bravo, tu as maintenant", mise3," € \n")

La programmation du menu :

Un menu était nécessaire pour choisir à quel jeu le joueur veut-il jouer, soit la machine à sous, soit le jeu du nombre inconnu. C’est un script assez simple à réaliser et est majoritairement composé de « print ». Dans ce menu nous avons 3 choix. Tout d’abord, le choix des deux jeux (machine à sous et nombre inconnu) et le choix pour la boutique. La boutique étant du contenue ajouté en dernier. slot() correspond au script de la machine à sous, le_nombre_inconnu() correspond au jeu du nombre inconnu et shop() correspond à la boutique.

    time.sleep(1)
    print("\n")
    print("|------------------------------------|")
    print("|---------- MENU PRINCIPAL ----------|")
    print("|------------------------------------|\n")
    print("Tu as",money[0],"€\n")
    print("|-- A quel jeu voulez vous jouer ? --|\t")
    print("\n")
    print("1. Machine à sous\n")
    print("2. Le nombre inconnu\n")
    print("|------------------------------------|\n")
    print("3. Shop\n")
    choix=int(input("Veuillez selectionner votre choix:\t"))
    print("\n")
    if choix==1:
        slot()
    if choix==2:
        le_nombre_inconnu()
    elif choix==3:
        shop()
    else:
        print("Choix non valide\n")

Pour retourner au menu depuis les jeux, nous avons créé un script proposant au joueur un choix, s’il veut retourner au menu ou continuer à jouer. game() correspond au script du menu, et slot() correspond au script de la machine à sous, comme dit précédemment.

def continuer():
    print("Voulez-vous continuer?\n")
    print("1.Oui\n")
    print("2.Non (retour au menu)\n")
    choix2=int(input("Veuillez selectionner votre choix:\t"))
    if choix2==1:
        slot()
    elif choix2==2:
        game()
    else:
        print("Choix non valide\n")

La programmation de la boutique :

L’ajout d’une boutique sert à donné une sorte de but dans notre programme. Les jeux nous faisant gagner ou perdre de l’argent sans réel but n’ont pas vraiment d’intérêts à être joué. La programmation de la boutique est très similaire à celle du menu, en effet plusieurs choix nous sont proposés, comme au menu. Ce script est divisé en deux car on ne voulait pas que la phrase d’accueil de la boutique se répète à chaque fois.

def shop():
    print("   _____ _                 ")
    print("  / ____| |                ")
    print(" | (___ | |__   ___  _ __  ")
    print("  \___ \| '_ \ / _ \| '_ \ ")
    print("  ____) | | | | (_) | |_) |")
    print(" |_____/|_| |_|\___/| .__/ ")
    print("                    | |    ")
    print("                    |_| ")
    time.sleep(1)
    print("\n")
    print("Bienvenue dans la boutique!\n")
    shop2()
    
def shop2():
    print("Tu as",money[0],"€\n")
    time.sleep(0.5)
    print("|------------------------------------|\n")
    time.sleep(0.5)
    print("1.Bouteille d'eau (5001€)\n")
    time.sleep(0.5)
    print("2.Peluche ours (6000€)\n")
    time.sleep(0.5)
    print("3.Voiture neuve (10000€)\n")
    time.sleep(0.5)
    print("|------------------------------------|\n")
    time.sleep(0.5)
    print("4.retour au menu\n")
    time.sleep(0.5)
    choix3=int(input("Que souhaitez vous acheter ?:\t"))

L’importation du temps et du son :

Pour rendre le script plus sympathique et moins agressif, nous avions importer des son de victoire ou de défaite ainsi que durant les apparitions de texte, du temps entre chaque texte pour ne pas rendre le joueur confus à cause d’une surabondance de texte.

import winsound
import time

winsound.PlaySound("", winsound.SND_ASYNC)
time.sleep()

Problèmes rencontrés

Nous n’avons pas vraiment rencontré beaucoup de problèmes durant ce projet, le seul problème était de rassembler tout les scripts dans un seul et même script. Nous avions commencé à programmer chacun dans notre coin en tapant des valeurs se nommant différemment alors qu’elles sont les même.

Heureusement nous avons réussi à tout rassembler, sinon nous n’aurions aurait pas pu finir le projet!

Conclusion

Ainsi, ce projet était vraiment intéressant, nous avions pris plaisir à y travailler dessus. Cela fut enrichissant, car par la pratique, nous avions beaucoup appris !

Voici notre script :