Je recommande la solution Steves comme point de départ, mais aller un peu plus loin avec l'utilisation de types et ensembles ...
type
TRace = (rcRace0, rcRace1, rcRace2, rcRace3, rcRace4);
TCharacterClass = (ccClass0, ccClass1, ccClass2, ccClass3);
TCharacterClassSet = set of TCharacterClass;
const
validCombinations : array[TRace] of TCharacterClassSet = (
[ccClass0, ccClass1, ccClass2, ccClass3], // race0 can be any class
[ccClass0, ccClass2], // race1
[ccClass0, ccClass1, ccClass2], // race2
[ccClass0, ccClass3], // race3
[ccClass0] // race4
);
énumérés
vous pouvez également mettre en place des constantes pour les noms de course et classes de personnages:
const
raceNames : array[TRace] of string = (
'Race 0',
'Race 1',
'Race 2',
'Race 3',
'Race 4'
);
characterClassNames = array[TCharacterClass] of string = (
'Class 0',
'Class 1 ',
'Class 2',
'Class 3'
);
maintenant, si vous utilisez comboboxes pour les entrées utilisateur et carte à l'entrée de ces types énumérés, c si une combinaison est valide est simple:
function ValidRaceAndClass(aRace : TRace; aClass : TCharacterClass) : Boolean;
begin
result := aClass in validCombinations[ aRace ];
end;
Merci Steve. C'est une bonne solution bien rangée. –