Oui. Elles le sont par défaut au lancement du jeu, à moins que tu aies mis une valeur lors de la création de la variable.
Pour être plus pro, tu pourrais créer un évènement externe que tu appellerais dans chaque scène.
Si Au lancement de la scène et JeuInitialisé == 0 alors
SceneCourante = 0
SceneSuivante = 0
JoueurHP = 100
randomDesScenes // l'évènement externe où est généré le random des niveauX
etc.
Jeuinitialisé = 1
fin si
Comme ça, quelque soit la scène que tu veux tester, tu auras un minimum de variables initialisées comme il faut.
La condition au début te permet d’être sûr que ce ne sera lu qu’une fois par lancement de jeu.
Tu pourras aussi provoquer une réinitilisation, en mettant JeuInitialisé = 0, par exemple après les crédits de fin ou le game over, pour que le joueur recommence une partie sans récupérer ses valeurs de fin de partie.
Oui.
C’est moins chiant que de gérer des collisions, puisque c’est automatique. Idéal pour du test.
Désactive cette ligne quand tu veux tester “pour de vrai” le comportement de la scène.
Tu peux aussi lui rajouter une conditionnelle “si modeDebug==1 alors” et tu changes la valeur de debug depuis un évènement externe “Debug” ou dans la fenêtre de gestion des variables.
Ton jeu a besoin de deux informations : la scène où il se trouve actuellement (numéroSceneCourante) et la scène où tu veux qu’il se rende (numéroScèneSuivante).
En changeant numéroScèneSuivante, tu lui indiques qu’il doit gérer un changement de scène, avec tout le pataquès que cela peut impliquer (transition, sons, contrôles, variables, graphismes, etc.).
Tu auras donc au minimum deux grands évènements dans chaque scène :
numéroScèneSuivante == numéroScèneCourante, où tu gères ce qu’il se passe dans ta scène.
numéroScèneSuivante != numéroScèneCourante, où tu gères ce qu’il se passe quand tu veux changer de scène (game over, retour au titre, écran de sauvegarde, inventaire, carte du monde, niveau suivant, intro, options, etc.).
Pour ce deuxième évènement, il sera dans un évènement externe, je le nomme GestionDeScenes, pour qu’il soit appelable par toutes les scènes.
Il devrait ressembler à un truc comme ça :
si numéroScèneSuivante != numéroScèneCourante alors
--- numéroScèneSuivante = numéroScèneCourante // on évite de changer de scène après avoir changé de scène
--- si numeroScèneSuivante = 0 alors aller à la scène titre
--- si numeroScèneSuivante = 1 alors aller à la scène Niveau1
--- si numeroScèneSuivante = 2 alors aller à la scène Niveau2
--- si numeroScèneSuivante = 3 alors aller à la scène Niveau3
--- si numeroScèneSuivante = 4 alors aller à la scène Niveau4
--- etc.
--- si numeroScèneSuivante = 997 alors aller à la scène Intro
--- si numeroScèneSuivante = 998 alors aller à la scène Credits
--- si numeroScèneSuivante = 999 alors aller à la scène GameOver
--- si numeroScèneSuivante = 1000 alors aller à la scène Chargement
--- etc.
fin si
En réalité, tu auras toute une liste d’évènements externes (gestionJoueur, gestionEnnemi, BandeSon, Interface, etc.), qui agiront en fonction de la valeur de numéroScèneSuivante et de numéroScèneCourante.
Les évènements 1, 2 & 3 devraient être rassemblés en un seul, avec en condition de déclenchement “si niveau1 == 0 alors”. On aurait alors :
si niveau1 == 0 alors random pour niveau1, random pour niveau2, random pour niveau3
-- tant que niveau1 == niveau2 alors random pour niveau2
-- étiquette refaireRandom
-- tant que niveau1 == niveau3 alors random pour niveau3
-- tant que niveau2 == niveau3 alors random pour niveau3
-- si niveau3 == niveau1 aller à l'étiquette refaireRandom
Le mieux sera de passer par un tableau, dont on intervertit les éléments une ou deux fois. Mais je ne sais pas si GD gère les tableaux. Il y a une extension je crois, mais je suis pas sûr qu’elle soit encore maintenue …
tab[0] = 1, tab[1] = 2, tab[2] = 3, i=0
tant que i < 3
-- val1 = random(2)
-- val2 = random(2)
-- temp = tab[val1]
-- tab[val1] = tab[val2]
-- tab[val2] = temp
-- i++
fin tant que
niveau1 = tab[0]
niveau2 = tab[1]
niveau3 = tab[2]
Ajoutes avant 4.1 “si numeroSceneCourante > x alors numeroSceneCourante = 0 et aller à la scène Titre”, où x est le nombre max de niveaux