Scène aléatoire qui ne se répète pas
OverdOzed
Inscrit:
18/02/2015 20:28
Post(s): 507
Bonjour à tous,

Voici le script écrit par Thibo (Gloire à son nom) pour, par exemple, créer un quizz dont les séries de questions changent d'ordre et dont chaque question n'apparaît qu'une seule fois:
------------------------------------------
#on importe le module bge.logic
from bge import logic
#depuis le module random, on importe la fonction choice()
#random.choice(liste) : choisit un élément au hasard dans liste
from random import choice

#on récupère la scene active
ma_scene = logic.getCurrentScene()

# logic.globalDict est un Dictionnaire (au sens Python), on peut y stocker
# des infos qui seront conservées pendant toute l'exécution du jeu
# (en particulier, lorsqu'on change de scene)

#si logic.globalDict ne contient pas 'liste_des_scenes'...
if not "liste_des_scenes" in logic.globalDict:
#on définit la liste des scènes
liste = ["1","2","3","4","5","6","7","8","9","10","11","12","13"]
#et on l'enregistre dans logic.globalDict
logic.globalDict['liste_des_scenes'] = liste
#on affiche un message dans la console
#(c'est juste pour bien comprendre le déroulement du script)
print("La liste des scenes est maintenant enregistrée")

#on essaye de choisir une scene au hasard...
try:
scene_a_charger = choice(logic.globalDict['liste_des_scenes'])
#on supprime cette scene de la liste
logic.globalDict['liste_des_scenes'].remove(scene_a_charger)
#on affiche un message dans la console
print("La scene "+scene_a_charger+ " va être chargée")
#et on remplace la scene active par cette scene
ma_scene.replace(scene_a_charger)

#si on n'y arrive pas, c'est que la liste des scenes est vide
except IndexError:
#J'aimerais ici envoyer une nouvelle scène extérieure à la liste
---------------------------------------------
Voilà, ça marche parfaitement, n'importe quel Sensor peut être lié à un controleur avec ce script. Il suffit de remplacer dans le script le nom des scènes ("1","2"...) j'ai supprimé la fin de son exemple qui affichait un message disant que toutes les scènes avaient été chargées.

Si quelqu'un peut juste me dire comment on sort de la dernière scène pour en mettre une nouvelle extérieure à la liste; j'ai bien essayé
ma_scene.replace(scene_extérieure) mais c'est pas ça..

Du coup mon jeu devrait pouvoir devenir un jeu drôle(et non pas de rôle)et Di..DhAÂ^Ha Ktik

Contribution le : 11/12/2015 14:44
Créer un fichier PDF de la contribution Imprimer


Re: Scène aléatoire qui ne se répète pas
RegulatorZ
Inscrit:
23/05/2004 07:11
De Metz
Post(s): 11300
Salut !

Utilise les balises [ code ] pour mettre un script python sur le forum, c'est plus lisible et surtout ça conserve l'indentation (qui est indispensable en python) :

#on importe le module bge.logic
from bge import logic
#depuis le module random, on importe la fonction choice()
#random.choice(liste) : choisit un élément au hasard dans liste
from random import choice

#on récupère la scene active
ma_scene = logic.getCurrentScene()

# logic.globalDict est un Dictionnaire (au sens Python), on peut y stocker
# des infos qui seront conservées pendant toute l'exécution du jeu
# (en particulier, lorsqu'on change de scene)

#si logic.globalDict ne contient pas 'liste_des_scenes'...
if not "liste_des_scenes" in logic.globalDict:
    #on définit la liste des scènes
    liste = ["Scene 1", "Scene 2", "Scene 3"]
    #et on l'enregistre dans logic.globalDict
    logic.globalDict['liste_des_scenes'] = liste
    #on affiche un message dans la console
    #(c'est juste pour bien comprendre le déroulement du script)
    print("La liste des scenes est maintenant enregistrée")

#on essaye de choisir une scene au hasard...
try:
    scene_a_charger = choice(logic.globalDict['liste_des_scenes'])
    #on supprime cette scene de la liste
    logic.globalDict['liste_des_scenes'].remove(scene_a_charger)
    #on affiche un message dans la console
    print("La scene "+scene_a_charger+ " va être chargée")
    #et on remplace la scene active par cette scene
    ma_scene.replace(scene_a_charger)

#si on n'y arrive pas, c'est que la liste des scenes est vide
except IndexError:
    ma_scene.replace("scene_exterieure")

À la dernière ligne, note les guillemets. Ils indiquent qu'on utilise une chaîne de caractère (string). Cette chaîne contient le nom de la scène, comme dans la liste ["1","2", ... ,"13"].

Contribution le : 11/12/2015 15:24
_________________
Portfolio
Créer un fichier PDF de la contribution Imprimer


Re: Scène aléatoire qui ne se répète pas
OverdOzed
Inscrit:
18/02/2015 20:28
Post(s): 507
http://www.pasteall.org/blend/39607

Super, merci. Voici le lien. Le script fonctionnait jusqu'à ce que je touche au shading

Contribution le : 11/12/2015 15:57
Créer un fichier PDF de la contribution Imprimer


Re: Scène aléatoire qui ne se répète pas
OverdOzed
Inscrit:
19/01/2008 03:25
De tu voit le nuage sur la carte météo bin j'habite là
Post(s): 2554
@ tibo

juste un petit truc si tu fait 2 fonctions une init pour crée ta liste

et une main pour choisir ta scène et que tu les balances en mode module t'augmente un peu les perfs de ton script

Contribution le : 11/12/2015 18:19
Créer un fichier PDF de la contribution Imprimer


Re: Scène aléatoire qui ne se répète pas
RegulatorZ
Inscrit:
23/05/2004 07:11
De Metz
Post(s): 11300
Citation :
juste un petit truc si tu fait 2 fonctions une init pour crée ta liste

et une main pour choisir ta scène et que tu les balances en mode module t'augmente un peu les perfs de ton script
Effectivement j'aurais fait ça en temps normal ; là le but était d'avoir un script "plug and play" et facile à lire.

Citation :
Super, merci. Voici le lien. Le script fonctionnait jusqu'à ce que je touche au shading

En principe ça n'a rien à voir. Peut être que le BGE n'aime pas qu'on mélange GLSL et Multitexture entre deux scènes ; je vais regarder ça.

Contribution le : 11/12/2015 19:39
_________________
Portfolio
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
Compte*
Nom   Mot de passe   Authentification
Message:*



[Recherche avancée]



Sujets récemment répondus
Forums Sujets Réponses Lus Dernières contributions
[WIP] et travaux terminés [WIP] Kanata et personnage secret coucours Blender 3D France 4 31 Aujourd'hui 01:59:45
meltingman 
Questions & Réponses [WIP] Cours Blender 2.9 une proposition de liste 6 338 Aujourd'hui 01:29:48
meltingman 
Le coin des geeks gain de fluidité viewport entre ryzen 3900X et 3950X    [1][2] 14 323 Hier 23:01:04
papillon 
Questions & Réponses les cheveux le scale 1 16 Hier 21:30:20
Rimpotche 
Questions & Réponses Boids, boids, boids... 4 83 Hier 21:25:54
Rimpotche 
[WIP] et travaux terminés [terminé] Blender 2.9 Tracking Camera - Tutoriel en Français 2 54 Hier 19:48:43
meltingman 
The Blender Clan 'tchat Ralentissement du chargement de Blender 6 79 Hier 19:35:51
Rimpotche 
[WIP] et travaux terminés [WIP] Teeny Tiny - Story    [1][2][3]...[10] 93 7152 Hier 19:09:28
Bibi09 
The Blender Clan 'tchat Avenir du blender clan    [1][2][3]...[12] 115 7467 17/09 20:08:54
Bibi09 
The Blender Clan 'tchat Benchmark EEVEE    [1][2] 19 503 17/09 20:08:01
JaAlVir657 
Questions & Réponses application de texture à taille réelle sur objets 3D simples 4 122 17/09 12:52:58
jc223 
Questions & Réponses Anomalies visuelles lors d'un export vidéo 4 93 17/09 10:37:47
Bibi09 
[WIP] et travaux terminés [WIP] Court métrage de sauvegarde des tortues marines 3 157 15/09 23:31:29
meltingman 
Questions & Réponses Médaille club de karate 3 153 15/09 15:25:10
meltingman 
Questions & Réponses Dimininuer la déformation avec une texture transparente (Cycles) 3 168 15/09 09:32:10
Gabdng 
Moteur de jeu GameBlender et alternatives [WIP] DeadSigns FPS horreur - Nouvelle mise à jour Steam    [1][2][3]...[63] 621 104049 14/09 23:19:41
Bibi09 
Questions & Réponses Fichier blender volumineux 4 186 14/09 21:57:38
Rimpotche 
Questions & Réponses Feu avec EEVEE 8 189 14/09 17:53:58
Crocodile_13 
Hors Sujet !! Tutoriel : Strasses et paillettes #eevee #debutant #blender2.8 4 132 14/09 17:25:05
Bibi09 
Questions & Réponses alignement d'une primitive géométrique sur un nuage de points 3 200 14/09 08:13:00
Sziuny 

Qui est en ligne
83 utilisateur(s) en ligne (dont 56 sur Forums)

Membre(s): 1
Invité(s): 82


meltingman, plus...
Nouveaux membres
KellieZcs4 19/9/2020
BessieWood 19/9/2020
JoesphHara 19/9/2020
Kathlene89 19/9/2020
Margherita 19/9/2020
RollandDal 19/9/2020
ChristenaR 19/9/2020
Sadie26F77 19/9/2020
FrankieChi 19/9/2020
TangelaLan 19/9/2020
Dernier Ajout
mirages-preview~0.jpg

Evènements à venir
Nov 18
Anniversaire de RichDeg
Dec 29
Anniversaire d'ebrain
Jan 9
BUG de Lyon
plus 264 plus d'élément(s)
 Par Mickaël Guédon [ebrain] © 2003-2020 The Blender Clan - hébergé par TuxFamily - Site déclaré à la CNIL sous le numéro 1155445