Re: Scène aléatoire qui ne se répète pas

Posté par _tibo_ le 11/12/2015 15:24:23
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"].

Cette contribution était de : http://blenderclan.tuxfamily.org/html/newbb/viewtopic.php?forum=3&topic_id=45297&post_id=546549