CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Python] Créer plusieurs objets -> class

orbit844
orbit844
Niveau 9
13 novembre 2014 à 22:11:10

Bonjour,

Je suis actuellement en train de créer un jeu avec Construct Classic et j'utilise pour cela Python.
J'ai un soucis, je fais spawn mes npcs de la sorte :

[méthode construct] For Each Object -> Create Object
Run Python Script : npc = GNPC() #GPNC() = ma classe

Mais le soucis c'est que dans ce cas, npc ne correspond qu'a 1 seul npc parmis tout ceux qui ont été crées ...

Comment faire pour créer autant d'instance de GNPC() que de npcs spawnés svp ?

Merci d'avance

Kakulukiam
Kakulukiam
Niveau 10
14 novembre 2014 à 08:53:23

J'ai pas bien compris le soucis étant donné que je connais pas du tout Construct Classic, mais j'aurais dit que là, tu remplaces la variable npc à chaque fois, du coup t'en a qu'un à la fin.
Tu peux faire un dict, avec pour clé l'id du NPC par exemple.

Genre :

npcs = {}
For Each Object -> Create Object
Run Python Script :
npc = GNPC()
npcs[npc.id] = npc

Ou une liste :
npcs = []
For Each Object -> Create Object
Run Python Script : npcs.append(GNPC())

Je connais pas non plus la syntaxe du truc, mais tu vois l'idée :)

Si le problème ne vient pas de là, au temps pour moi. :o))

EventListener
EventListener
Niveau 9
14 novembre 2014 à 10:40:10

je suis pas sur de bien comprendre mais si t'instancie dans une boucle for va falloir que tu garde des références en mémoire sur chaque objet construit donc balance les dans une structure de données(dico, liste) ce que tu veux. Car la à chaque itération de la boucle for npc est déréférencé

orbit844
orbit844
Niveau 9
14 novembre 2014 à 17:36:27

Salut, j'ai réussi avec une liste, merci :) !

(c'est un post que j'avais mis sur le forum de Construct Classic, c'est la solution)

Hey !

I found a way myself, I don't know if it's the best one but it's working !
First, to import the class, do :

Start of layout, python script :
CODE: SELECT ALL
import sys, os, random

class GNPC():

def __init__(self):
# npcList
self.npcList = []
self.npcListMov = []
def addNpc(self, npcObject, npcObjectRTS):
self.npcList.append(npcObject)
self.npcListMov.append(npcObjectRTS)

npcManager = GNPC()

Then, when you spawn NPCs (for each npcs etc..) do :
CODE: SELECT ALL
npcManager.addNpc(SOL.entity, SOL.entityRTS)

Finally, to call event from your object : (for example : every X seconds -> for each object -> do this code)
CODE: SELECT ALL
npcManager.npcList[0].SetValue("test", 500) # This is to call events from the object
npcManager.npcListMov[0].MoveTo(random.randint(1,7
000),
random.randint(1,4000)) # This is to call events from the RTS Behavior (of the object)

EDIT Btw, I don't know how to add python variables to objects in a list :/

orbit844
orbit844
Niveau 9
14 novembre 2014 à 17:52:27

Par contre, comment est ce que je peux ajouter des variables à mes objets dans la liste ?

par exemple :

For each object :
cNpc = npcManager.npcList[npcId]

cNpc.id = cNpc.Value("id")
cNpc.testva = "test"
cNpc.seconds = 0

quand je fais ça, les variables prennent la valeur du dernier objet uniquement :(

Merci d'avance

orbit844
orbit844
Niveau 9
15 novembre 2014 à 11:32:42

:up:

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment