[DBPro]Créer plusieurs classes de personnages.

Mr-Blonde Message lu Posté le 13 Fév 2009 à 11:57 Bulle
Avatar de Mr-Blonde
Explorateur

Messages : 140
GCPoints : 6102
Bonjour à tous,

Je suis en train de programmer un jeu de rôle en DBPro, ce qui inclut la création de classes de personnages comme le Bandit, l'Epeiste, le Soldat, etc.

Pour le moment, je n'ai comme solution que celle-ci :
Spoiler - Cliquez pour afficher
Code :
rem Le Ninja

personnage=1

load image "Personnages/Ninja.png", 3

Sprite personnage,220,100,3

ForceNinja=2  rem Force du Ninja Moyenne

ResistanceNinja=1  rem Resistance du Ninja Faible

AgiliteNinja=4  rem Agilité du Ninja Excellente

PerceptionNinja=3  rem Perception du Ninja Bonne



rem L'Epeiste

personnage=2

load image "Personnages/Epeiste.png", 4

Sprite personnage,90,180,4

ForceEpeiste=2  rem Force Moyenne

ResistanceEpeiste=4 rem Resistance Excellente

AgiliteEpeiste=3  rem Agilité Bonne

PerceptionEpeiste=1 rem Perception Faible



rem Le Soldat

personnage=3

load image "Personnages/Soldat.png", 5

Sprite personnage,10,310,5

ForceSoldat=4  rem Force Excellente

ResistanceSoldat=2 rem Resistance Moyenne

AgiliteSoldat=1  rem Agilité Faible

PerceptionSoldat=3 rem Perception Bonne



rem Le Mercenaire

personnage=4

load image "Personnages/Mercenaire.png", 6

Sprite personnage,670,200,6

ForceMercenaire=3  rem Force Bonne

ResistanceMercenaire=4 rem Resistance Excellente

AgiliteMercenaire=1  rem Agilité Faible

PerceptionMercenaire=2 rem Perception Moyenne



rem Le Bandit

personnage=5

load image "Personnages/Bandit.png", 7

Sprite personnage,730,300,7

ForceBandit=1  rem Force Faible

ResistanceBandit=3 rem Resistance Bonne

AgiliteBandit=2  rem Agilité Moyenne

PerceptionBandit=4 rem Perception Excellente


Cette solution inclut des quantités de variables différentes qui ne peuvent pas être misent en relation par la suite, ce qui induit une utilisation de conditions à foison dans la suite du code.

Comment faire en sorte de créer quatre variables (Force, Résistance, Agilité, Perception) pour toutes les classes puis de leurs assigner une valeur en fonction de la classe sélectionnée.
J'ai entendu parler des Tableaux, qui seraient peut-être une solution, mais je ne sais pas comment les utiliser...

Merci d'avance à tous :wink:

PS : Et puis aussi, existe-t-il un code comme en HTML pour afficher les caractères du genre é,è,à,ù... ? Ceux-ci ne s'affichent pas lorsque je les demande.
softreaver Message lu Posté le 13 Fév 2009 à 12:43 Bulle
Avatar de softreaver
Membre Novice

Messages : 89
GCPoints : 23521
Franchement en réfléchissant bien tu pourrait utiliser des tableau typés.
c'est la solution que j'ai trouvé pour la plupart de mes jeux.

EXEMPLE :

Code :

PlayerNum = 3      `Le nombre de joueur

Type Player
   ImagePath$ as string        `Cela pourrait être la variable contenant le sprite à charger (EX : "Personnages/Ninja.png" )
   Name$        as string
   Class           as byte
   Strenght      as byte
   Agility          as byte
   X#               as float
   Y#               as float
EndType

DIM PlayersList(PlayerNum) as Player



Ainsi pour chaque personnage c'est le même tableau, tu veux savoir la force du personnage numéro deux tu ferais : Force = PlayersList(2).Strenght

Ou encore pour charger tous les joueurs tu pourrais faire :

Code :
For i = 1 to NumPlayer Step 1
   Load image PlayersList(i).ImagePath$, i
   Sprite i, PlayersList(i).X#, PlayersList(i).Y#, i
Next i


ETC.....
Dernière édition le 13 Fév 2009 à 12:47
Mod Message lu Posté le 13 Fév 2009 à 14:00 Bulle
Avatar de Mod
Webmaster

Messages : 4954
GCPoints : 2100823
La méthode décrite par softreaver est en effet la meilleure manière pour gérer des données en masse sous DBPro (pour ne pas dire la seule qui soit viable). Juste à noter qu'il n'y a pas d'obligation d'utiliser les # et $.

Ceci revient à la même chose :

Code :
type Player
   imagePath       as string
   name            as string
   class           as byte
   strenght        as byte
   agility         as byte
   x               as float
   y               as float
endtype

Dernière édition le 13 Fév 2009 à 14:01
softreaver Message lu Posté le 13 Fév 2009 à 15:28 Bulle
Avatar de softreaver
Membre Novice

Messages : 89
GCPoints : 23521

Mod a écrit :

Juste à noter qu'il n'y a pas d'obligation d'utiliser les # et $.



Oui c'est exacte, mais je les met quand même ainsi cela permet de relire son code source plus facilement.
Mod Message lu Posté le 13 Fév 2009 à 15:40 Bulle
Avatar de Mod
Webmaster

Messages : 4954
GCPoints : 2100823
Ah tiens, personnellement, je trouve que ça surcharge au contraire plus que ça n'aide. Sans doute un autre héritage du C ^^.
Mr-Blonde Message lu Posté le 13 Fév 2009 à 15:46 Bulle
Avatar de Mr-Blonde
Explorateur

Messages : 140
GCPoints : 6102
Merci beaucoup pour vos réponses.

J'ai donc essayé ce code sur une de mes classes, celle du ninja, comme ceci :

Code :
rem Le Ninja

personnage=1

type Player

   ImagePath       as string="Personnages/Ninja.png"

   ImageNumber     as byte=3

   x               as float=220

   y               as float=100

   nom             as string="le Ninja"

   Force           as byte=2

   Resistance      as byte=1

   Agilite         as byte=4

   Perception      as byte=3

   Education       as byte=2

endtype

DIM PlayersList(1) as Player

load image PlayersList(1).ImagePath, PlayersList(1).ImageNumber

Sprite personnage,PlayersList(1).x,PlayersList(1).y,PlayersList(1).ImageNumber


Mais quand je test l'application, *pouf* :
Image


Apparemment le programme à du mal à lire mon tableau ou quelque chose comme ça, mais vu que cette notion de tableaux est quand même nouvelle pour moi dans le milieu de la programmation (étrange, non ?) je ne sais pas d'où le problème peut venir...
Comment faire ?

Merci et bonne après-midi :wink:
softreaver Message lu Posté le 13 Fév 2009 à 17:04 Bulle
Avatar de softreaver
Membre Novice

Messages : 89
GCPoints : 23521

Citation :

ImagePath as string="Personnages/Ninja.png"



Ceci est faux, car ImagePath (sur la ligne ci-dessus) n'est pas réellement une variable.

essaye de remplacer le code source que tu nous a fournit par celui-ci :

Code :

REM Attribution d'un numéro pour chaque personnage
#CONSTANT Ninja      1
#CONSTANT Epeiste    2
#CONSTANT Soldat     3
#CONSTANT Mercenaire 4
#CONSTANT Bandit     5

REM Nombre de personnage
PlayerNum = 5

type Player
   ImagePath       as string
   ImageNumber     as byte
   x               as float
   y               as float
   nom             as string
   Force           as byte
   Resistance      as byte
   Agilite         as byte
   Perception      as byte
   Education       as byte
endtype

REM Définition du tableau typé
DIM PlayersList(PlayerNum) as Player

REM Définition du ninja
PlayersList(Ninja).ImagePath   = "Personnages/Ninja.png"
PlayersList(Ninja).ImageNumber = 3
PlayersList(Ninja).x           = 220.0
PlayersList(Ninja).y           = 100.0
PlayersList(Ninja).nom         = "le ninja"
PlayersList(Ninja).Force       = 2
PlayersList(Ninja).Resistance  = 1
PlayersList(Ninja).Abilite     = 4
PlayersList(Ninja).Perception  = 3
PlayersList(Ninja).Education   = 2

load image PlayersList(Ninja).ImagePath, PlayersList(Ninja).ImageNumber

Sprite personnage,PlayersList(Ninja).x,PlayersList(Ninja).y,PlayersList(Ninja).ImageNumber

Darktib Message lu Posté le 13 Fév 2009 à 22:36 Bulle
Avatar de Darktib
Membre Ultime

Messages : 4017
GCPoints : 347288
Pour les caractères il faut que tu change de police d'affichage, met arial par exemple.
Sinon la méthode des tableaux typés est la meilleure. Les types possèdent bien des variables, mais comme c'est une définition de type tu n'a pas le droit d'initialiser la variable dans la définition de la structure.
Il n'y a pas non plus en dbp de fonctionnalités avancées comme les constructeurs ou destructeurs en C++ (notament).

Le code de SofReaver est tres bien en tout cas^^
Mr-Blonde Message lu Posté le 14 Fév 2009 à 15:22 Bulle
Avatar de Mr-Blonde
Explorateur

Messages : 140
GCPoints : 6102
Merci beaucoup pour ton aide SoftReaver.
Après une petite adaptation, tout est parfait.
Enfin, merci à vous tous pour votre aide sur les topics, grâce à vous j'ai pu avancer jusqu'ici :
Spoiler - Cliquez pour afficher
Image

Tout, excepté la silhouette de localisation des dégâts, est actif et réactif

Youpi, peut être que cette fois-ci, je mènerai mon projet à bien et que je ne l'abandonnerai pas.
softreaver Message lu Posté le 22 Fév 2009 à 21:36 Bulle
Avatar de softreaver
Membre Novice

Messages : 89
GCPoints : 23521
Salut et désoler pour le temps de réponse, j'étais en vacance au ski.
Pas de problème pour l'aide, ça m'as fait plaisir :)

En tous cas je trouve les sprites super jolis les as-tu fait toi même?
Dernière édition le 23 Fév 2009 à 11:01
Répondre
GameCorp - Site d'apprentissage et d'entraide à la création de jeux vidéo.
XHTML Valid 1.1 - Page générée en 0.0379 secondes