Author: Maxime V.

Tutoriels

Comment créer un jeu sur scratch ?

Vous avez toujours voulu créer un jeu vidéo par vos propres moyens ? Si c’est le cas vous êtes au bon endroit. Créer un jeu vidéo est généralement très compliqué et impose de nombreuse propriétés inconnu du grand public, je vais ainsi vous montrer un exemple de jeu sur Scratch comme vous pouvez le voir ci dessous

Pour commencer il faut d’abord soit sélectionner un arrière plan ou en créer un comme dans mon cas ci dessus. Il faut ensuite choisir des personnages et les modifier pour rendre le jeu de plus en plus attractif, par exemple j’ai modifié le costume de mon personnage pour le mettre avec le maillot du Réal de Madrid

Maintenant que le personnage est customisé il faut créer son code qui va permettre de faire le jeu. Le code ci dessous permet d’animer le personnage pour le rendre mobile en le changeant de costume. L’objectif de ce code est de faire taper le joueur dans le ballon et de faire une célébration en cas de victoire atteinte pour un score de 10 buts marqués en 20 tirs

Le but de la création de ce jeu est de simuler des tirs au but il faut donc ajouter un autre personnage qui servira de gardien qui a pour but d’arrêter le tir de l’attaquant. Il faut ensuite créer un code comme ci dessous qui lui permet de se déplacer avec les touches X pour se déplacer vers la gauche, C pour se déplacer vers la droite, W pour plonger à gauche et V pour plonger à droite. La barre espace permet de faire sauter le gardien.

Pour que le jeu puisse réellement fonctionner il faut ajouter les commandes du tireur, le ballon, et le compteur de points. Tout ceci va être exécuté sur le script du ballon ci dessous :

Ce script permet d’annoncer les buts, les arrêts et les loupés car si le ballon touche le gardien c’est un arrêt, si le ballon est en dehors du cadre c’est loupé sinon c’est but. Ce code permet à l’attaquant de tirer avec le viseur de souris. Ce jeu est un jeu pour 2 un tireur et un gardien, il peut être ajouté des options facultatives comme une animation de victoire ou de défaite que je ne vous montre pas car il faut essayer d’améliorer son jeu avec son inspiration et car cela permet aussi d’apprendre à coder par soi même

Vous pouvez maintenant jouer au jeu à 2 et aussi le publier sur Scratch

Art

Astronomie : Voyage dans les étoiles

Observer les étoiles, c’est contempler l’immensité et percer les mystères de l’Univers : « À travers ses télescopes, l’astronomie sonde l’immensité de l’espace, révélant des mondes lointains et des mystères insoupçonnés. Elle nous invite à explorer l’infini, à contempler les astres, les étoiles et à comprendre l’origine de l’univers, suscitant l’émerveillement et la soif de connaissance « (Extrait du livre « Le grand guide de l’astronomie « )

Qu’est ce que l’Astronomie ?

L’astronomie… c’est comme une énorme chasse au trésor dans le ciel, mais avec des étoiles, des planètes et des galaxies ! On apprend à étudier les astres, les étoiles, à comprendre comment elles naissent et évoluent, on étudie aussi leurs propriétés physiques et chimiques.

Pourquoi avons-nous choisi le thème de l’astronomie ?

Tout simplement parce que l’Astronomie est un sujet fascinant, qui captive. Cette science permet d’explorer l’immensité de l’univers, les mystères des étoiles, des planètes et des galaxies. Choisir l’astronomie pour un projet offre une opportunité de découverte, d’apprentissage et d’inspiration.

Les différents problèmes...

Bien évidemment, il y a toujours des problèmes rencontrés lors d’un DM.

Le premier problème a été la communication. En effet, travailler en groupe est toujours compliqué…

Le deuxième problème a été d’assembler les scripts, un message d’erreur apparaissait à chaque fois. La plupart de ces erreurs étaient l’orthographe. En effet, chaque professionnel fait des erreurs…

Ensuite nous avons eu pour les montagnes un bug graphique sur le remplissage qui n’apparaissait que sur le dossier PNG ce qui rendait assez lourd le script sur les montagnes avec « begin_fill() » et « end_fill() »

Analyse du script

Afin d’analyser ce script, nous allons le découper en plusieurs parties, correspondantes aux différentes étapes.

1-Avant de détailler chaque fonction, il faut s’assurer que le script comporte tous les modules nécessaire à la création de l’image.

from turtle import *
from PIL import Image, ImageDraw
from random import randint

titre = "Astronomie - construite avec turtle"


title(titre + " | Au lycée, la meilleure spécialité, c'est la spé NSI")

setup(1280, 720, 0, 0)
speed(0)
goto(0,-200)

On importe les modules PIL (installés auparavant) afin de travailler avec des images, turtle afin de dessiner des formes géométriques sur l’image, et enfin randint afin de générer des nombres aléatoires. Après avoir importé tous ces modules, on définie un titre, ici Astronomie. Ensuite, on définit les titres de la fenêtre graphique. On définit alors la résolution de l’image, ici 1280×720 pixels. On définit aussi la vitesse. Enfin, on place la tortue à la position de départ.

2- Le fond

for i in range(hauteur_degrade):
    bleu_fonce = 0.1 + (i / hauteur_degrade) * 0.8 
    ciel.color(0, 0, bleu_fonce)
    ciel.penup()
    ciel.goto(x, y)
    ciel.pendown()
    ciel.forward(largeur_degrade)
    y -= 1

Afin de réaliser le fond de l’image, nous avons décidé de commencer la réalisation de l’image par une fenêtre noire similaire au lever d’un rideau, nous avons ensuite réalisé un dégradé de bleu similaire à un coucher de soleil à l’aide de chatgpt.

3-Les étoiles

def etoiles():
    for _ in range(42):
        speed(0)
        penup()
        x = randint(-600, 600)
        y = randint(-300, 300)
        penup()
        goto(x, y)
        pendown()
        dot(8, "orange")
        
etoiles()

Ne pas faire d’étoile sur une image qui porte sur l’Astronomie, ce n’est pas de l’Astronomie ! Afin de réaliser des étoiles aléatoirement, nous avons utilisé randint. Nous avons bien évidemment pensé a Halloween et pour cela, nous avons réalisé des étoiles en orange.

4-Les astres

Nous avons réalisé deux astres : le soleil et la lune.

def planète():
    speed(0)
    penup()
    goto(300, 250)  
    pendown()
    color("red")
    begin_fill()
    circle(50)  
    end_fill()
hideturtle()
planète()
penup()
goto(0,-200)
pendown()
fillcolor("white")
begin_fill()
circle(180)
end_fill()

Toujours dans le thème d’Halloween, nous avons décidé de faire le soleil rouge.

5-Le sol

Les montagnes, ça ne volent pas, et pour cela, nous avons mis un sol qui est en fait un rectangle en turtle.

def sol():
         for i in range(2):
             color("black")
             forward(1280) 
             left(90)
             forward(250)
             left(90)
sol()

6- Les montagnes :

Elles sont seulement constituées de triangle les uns à la suite des autres par une boucle. Nous avons mis à certains moments une légère inclinaison du triangle dans la boucle afin de créer un effet de montée

def triangle():
    forward (150) 
    left (120)
    forward (150)
    left (120)
    forward (150)


goto(-640,-200)

def montagne_plane():
         for i in range(50):
             begin_fill()
             triangle()
             left(300)
             backward(1)
             left(180)
             end_fill()
begin_fill()             
montagne_plane()
end_fill()
def montagne_ascendante1():
        for i in range(50):
             begin_fill()
             triangle()
             left(300)
             backward(4)
             left(180)
             left(0.2)
             end_fill()
montagne_ascendante1()

def montagne_ascendante2():
    for i in range(10):
        begin_fill()
        triangle()
        left(300)
        backward(10)
        left(180)
        left(2)
        end_fill()
montagne_ascendante2()

begin_fill() 
#triangle venant juste apres la montée
right(25)
goto(-310,-130)
triangle()
# recalibrage afin de pouvoir continuer l'algorithme
left(300)
backward(10)
left(180)
left(2)
end_fill()
# je fait redescendre legerement la montagne
goto(-290,-200)
for i in range(10):
     begin_fill()
     triangle()
     left(300)
     backward(4)
     left(180)
     end_fill()
for i in range(6):
     begin_fill()
     triangle()
     left(300)
     backward(4)
     right(5)
     end_fill()


left(8)
def montagne_ascendante3():
  for i in range(40):
       begin_fill()
       triangle()
       left(300)
       backward(7)
       left(180)
       left(1)
       end_fill()
montagne_ascendante3()
        
begin_fill()
right(25)
goto(150,-130)
triangle()

goto(150,-220)
left(300)
backward(10)
left(180)
left(1)
end_fill()


for i in range(2):
      montagne_ascendante1()

L’image finale

Le fichier.py