top of page
721017-espace-un-objet-mysterieux.jpg

MELTECH

Bienvenu dans la page de mon site dédié à mon jeu vidéo. Son nom, MELTCH. Un jeu sur la conquête spaciale en 2D. Attachez vos ceinture nous décollons..

ciel-etoile-etoiles-sombre.jpg

MELTECH

La création de mon jeu a commence le jeudi 26 janvier 2023 et ci-dessous je vous propose de me suivre dans cette aventure 

fusée-de-dessin-animé-44831312.jpg
​Nous sommes le 26 janvier et c'est aujourd'hui que je vais commencer mon jeu. A vrai dire je n'en ai jamais fait et l'idée est très intéressante maintenant je ne sais pas encore comment faire. Je commence par une petite préparation en amont qui me guidera lors de la programmation.  Je me pose des questions primordiale pour établir une sorte de plan qui me guidera afin de garder un seul objectif en tête. 
OIP.jpg
plan.jpg
Comme vous l'avez surement déjà vu j'ai opté pour un jeux, c'était la première question, ensuite je me demande un jeu basé sur quoi ? Pour répondre à cette question très vaste je suis retourné près d'une décennie en arrière. Et je me souviens d'un jeu auquel j'avais joué avec un jeune garçon de mon âge rencontré dans l'Eurostar.  Voilà je vais essayer de le refaire de la même manière qu'il est resté dans mon imagination de petit enfant, magique.  La modélisation du programme peut enfin commencer. C'est un projet toutefois ambitieux qui pourra comporter de nombreux paramètres à prendre en comptes, de nombreuses variables et d'éléments pouvant largement embellir mon jeux mais qui pourront aussi me poser problème. 
Ensuite quelques questions de plus pour mon jeux, les choses que j'aimerai retrouver lors de expérience de jeu. Quels paramètres feront décoller ma fusée ? Quels paramètres feront rater le décollage de ma fusée ? Quels commandes permettrons de tenir le joueur au courant des différent paramètres de jeux en temps réel (jauge pour l'essence par exemple).
bouton rouge.jpg

Séance 1 : Aujourd'hui je commence par créer les paramètres qui feront décoller ou non ma fusée. L'utilisateur pourra choisir la contenance de son réservoir, le moteur de sa fusée ou encore  le nombre d'étages .Pour se faire je crée des dictionnaires de listes. 

​

​

tank_capacity =[["XS",3000],["S",8000],["M" ,12000],["L",18000],["XL",25000],["XL",30000]]
engine_model=  [["US", "Moteur_A",700], ["URSS", "gagarinne",850], ["JAPAN","Suchi_sauce_sucree",1200], ["FRENCH", "oui_oui_baguette",1500], ["MAURITIAN", "banane_plantin_X",2000]]
number_of_floors =[1,2,3]
tank_user=0
engine_user=0
floors_user=0

J'affecte à chaque paramètres un nom ainsi qu'une valeur. d'autre part je crée une variable a laquelle j'affecte 0 de manière a pouvoir faire une requête auprès du joueur

Séance 2 : Aujourd'hui je suis allé voir mon professeur afin d'obtenir des conseils. Il m'indique que de créer des dictionnaires de listes n'est absolument pas optimal ! Surtout dans le logiciel qu'il me conseille d'utiliser,  Processing.  Je procède donc au changement de tout les dictionnaires par des listes. Créant ainsi des listes de listes. puis sur le site de Codearcade je vais modéliser ma fusée.

​

​

Séance 3 : Je rencontre des difficultés avec Processing rien ne s'affiche alors que l'on me l'a conseillé pour sa praticité d'affichage. J'ai donc l'impression d'aller droit dans le mur. Pour palier à ce problème je décide de faire une pause sur mon programme et je décide d'aller maintenant sur YouTube afin d'en apprendre un peu plus sur la façon dont on développe un jeu. Toutefois aucune copie de mon jeu n'existe et même aucun équivalent, c'est ce qui en fait sa force mais aussi difficulté.
Il faut donc prendre les explications de 0 et prendre du temps pour regarder. 
 

sens interndit.jpg
processing.jpg
youtube.jpg
attention.webp

Je n'ai pu faire de capture de mon programme parce que ce mercredi il y avait rattrapage du bac blanc de philosophie donc j'ai du m'adapter avec un autre pc sur lequel il n'y avait pas mon programme. Je me suis débrouillé mon faire des copies textuelles, en solution

Séance 4 : J'ai regardé les deux premières parties de la modélisation d'un jeu en python. La première partie est à propos de la création de la fenêtre de jeu, la seconde partie quant à elle nous apprend à créer un joueur ainsi que le faire se déplacer. Mon programme s'élance donc de cette base. L'avantage,  j’ai une sorte de syntaxe déjà faites qui m'aide et me donne un fil conducteur afin de ne rien oublier. L’inconvénient, je suis contraint d'utiliser des "classes" choses avec laquelle je n'ai jamais été amené à travailler sur le programme de première.
Ce n'est pas un soucis pour le moment. je continue...

​

 

Au lieu pour le personnage de créer des fonctions qui vont donner au programme des flux de 500 lignes où on ne va plus se retrouver à la fin et il sera difficile d’ajouter des nouvelles fonctionnalités. Nous allons créer des classes pour chaque composants de notre jeu. par exemple on aura une classe pour le joueur, une classe  pour les comètes et une classe pour la planète. 
 

rétrospective : Au final dans cette séance rien ne sera retenue dans la suite de mon programme.


​

jeu.jpg

Séance 5 : Je continue mon travail mais avec les requêtes qui ne s'affichent pas, il commence a se créer une distinction grandissantes avec le reste qui, lui avance. Je demande donc de l'aide. Le professeur m'indique qu’en plus de créer des listes de listes il faut rajouter autant de variables que de paramètres. Soit trois dans mon cas. trois lignes de codes très simple à l'image de "tank_user=0" Je procède donc au changement et les requêtes s'affichent la première étape est complétée.
 

requete.png

C'est de cette manière que j'affiche les requêtes avec toutes les informations dans la console

Roche illuminée

Séance 6 : Mais comme je l'ai stipulé il reste une dernière chose a faire, un calcul qui déterminera si la fusée pourra aller sur la lune.

 

 

 

 

 

 

 

Je créer donc une multiplication qui fait le produit des numéros des paramètres choisis. Chaque possibilité est associée à un chiffre. Pour deux étages, il y a donc un produit par 2, et ce avec chaque choix. Si ce produits est inférieur à un nombre déterminé la fusée sera inapte à la conquête de la lune. Ne vous inquiétez pas, la console toutefois vous donnera le message suivant : "vous pouvez aller sur la lune" ou "vous ne pouvez pas aller sur la lune". Attention si vous ne pouvez pas y aller la fenêtre de jeu s'ouvrira quand même. A vous de la fermer pour faire de nouveaux choix.

​

calcul.jpg
fusée.jpg

calcul_distance_possible=floors_user*engine_user*tank_user

if calcul_distance_possible>30:

​

En ayant affecté un numéros a chaque possibilité, il me suffisait de faire ma nomenclature dans l'ordre croissant. Ainsi la multiplication est juste logique . Le joueur a juste a choisir suffisamment d'essence et de puissance moteur  

print("Vous pouvez atteindre la Lune")

else:

print("Vous ne pouvez pas atteindre la Lune")

Séance 7 : Je souhaite intégrer dans mon jeu,

la Terre, la Lune, la fusée (qui même après les choix de l'utilisateur aura toujours la même apparence), ainsi que des comètes qui viendront interrompre la trajectoire de la fusée et rendre l'expérience de jeu plus amusante obligeant ainsi le joueur à les éviter.

 

 

Mettre des éléments immobile (Terre et Lune) est très facile donc je prend deux images en formats png et c'est déjà fini. Afin de donner l'effet que le fusée décolle de la Terre, Je la fait se générer à des coordonnées de manière à la voir d'emblée sur un pôle. Ne connaissant pas les coordonnées des fenêtre python j’ai du y aller a tâtons.

​

​

​

​

​

​

​

​

​

​

​

​

​

​

objet pygame pour stocker des coordonnées rectangulaires

Rect(gauche, haut, largeur, hauteur) -> Rect

Rect((gauche, haut), (largeur, hauteur)) -> Rect

Je prend sur internet la syntaxe :
Je finis avec ça :

rectangle_lune = pygame.Rect(700,50,31,32)

rectangle_terre = pygame.Rect(20,700,31,32)

lune 2.png

terre = pygame.image.load('terre.png')

lune = pygame.image.load('lune.png')

J'indique a python le chemin qu'il doit prendre, ici le programme étant dans le même dossier que les images seul les noms sont nécessaires

terre2.png

Dans la foulée je décide de rajouter un bouton sur lequel le joueur pourra cliquer. Ainsi la fenêtre de jeu se fermera automatiquement. Je rencontre ici un autre problème. Quand le bouton est généré, les comètes telles qu'elles étaient sont supprimés et laissent place à des polygones bleus, mon jeu ressemble plus a Tetris qu'a autre chose. Je continue à chercher, à modifier des éléments et je finis par empirer mon problème. Le bouton "QUIT" s'affiche avec une sorte de vibration frénétique qui ainsi, empêche l’accès visuel au jeu puisque quand le bouton s'affiche, un fond noir violet s'affiche en même temps.

 

 

Finalement je ne trouverai pas d'issue a ce problème. Je reprendrais donc un version antérieure de mon programme fonctionnelle et cette idée de bouton sera rejetée

arracher les cheveux.jpg

Je paramètre les commandes afin que mon vaisseau se déplace de droite a gauche

if event.key==K_RIGHT:

Droite = True

if event.key==K_LEFT:

Gauche = True

Dans cette même logique j'assaie de parametrer les touches pour que le vaisseau puisse aller en haut et en bas

​

if event.key==K_UP:

Haut = True

if event.key==K_DOWN:

Bas = True

Cette commande ne marchera jamais...

integar.png

Pour que l'utilisateur ne rentre de que des valeurs entières j'utilise la commande int, qui ne permet de rentrer que des nombre entier "integar". Plus le str qui permet de rentrer des chaines de caractères

​print("Le reservoir n° " + str(i) + " "+ tank_capacity[i][0]+ " contient "+str(tank_capacity[i][1])+ " litres")

De façon a faire apparaitre des objets qui viendront troubler la trajectoire de la fusée j'utilise un programme de space invaders, ou je remplace les aliens par des images de comètes.

programme.png
comete.png

Certaines lignes sont inutiles dans notre cas

Pour avoir une fusée, je l'ai prise sur MAkeCodeArkade, https://arcade.makecode.com/

​

J'ai pris un sprite sur cette application qui m'a été conseillé par un l'élève Roumeguere. Au final j'ai pris une capture d'écran de la fusée que j'ai convertis en format png pour plus de simplicité. l’esthétique convenait parfaitement pour un jeu en 2d

jeu.png

c'est avec ceci que s'acheve mon jeu, la Terre et la Lune sont genérés ainsi que le sprite de ma fusée. Et pour les afficher aux endroits voulus j'ai tout fait à tatons

affichage.png
bottom of page