|
Mr-Blonde
|
Posté le 13 Fév 2009 à 11:57
|
|

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 :
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
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
|
Posté le 13 Fév 2009 à 12:43
|
|

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
|
Posté le 13 Fév 2009 à 14:00
|
|

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
|
Posté le 13 Fév 2009 à 15:28
|
|

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
|
Posté le 13 Fév 2009 à 15:40
|
|

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
|
Posté le 13 Fév 2009 à 15:46
|
|

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* :
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
|
|
softreaver
|
Posté le 13 Fév 2009 à 17:04
|
|

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
|
Posté le 13 Fév 2009 à 22:36
|
|

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
|
Posté le 14 Fév 2009 à 15:22
|
|

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 :
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
|
Posté le 22 Fév 2009 à 21:36
|
|

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
|