Klasse für den Character
Der Klasse Character kommt die Aufgabe zu, die Eigenschaften und Attribute der Spielfigur aufzunehmen. Im einzelnen sind das Stärke (strength), Geschicklichkeit (dexterity), Konstitution (constitution), Intelligenz (intelligence), Weisheit (wisdom) und Charisma (charisma). Für all diese Attribute benötigt auch die Klasse Eigenschaften und Accessor-Methoden.
In diesem Beispiel verwenden wir wirklich Accessor-Methoden und nicht die seit OS X 10.5 vorhandenen Properties. Sie brauchen sich aber nicht die Mühe machen, alles selbst zu programmieren. Das Script Menü von Xcode ist eine große Hilfe und nimmt Ihnen die meiste Arbeit ab. Alles was Sie noch tun müssen, ist die Instanzvariablen zu markieren und dann von Xcode die passenden Methodendeklarationen und Definitionen erzeugen zu lassen, wie es hier beschrieben wurde.
Der Klasse Character kommt die Aufgabe zu, die Eigenschaften und Attribute der Spielfigur aufzunehmen. Im einzelnen sind das Stärke (strength), Geschicklichkeit (dexterity), Konstitution (constitution), Intelligenz (intelligence), Weisheit (wisdom) und Charisma (charisma). Für all diese Attribute benötigt auch die Klasse Eigenschaften und Accessor-Methoden.
In diesem Beispiel verwenden wir wirklich Accessor-Methoden und nicht die seit OS X 10.5 vorhandenen Properties. Sie brauchen sich aber nicht die Mühe machen, alles selbst zu programmieren. Das Script Menü von Xcode ist eine große Hilfe und nimmt Ihnen die meiste Arbeit ab. Alles was Sie noch tun müssen, ist die Instanzvariablen zu markieren und dann von Xcode die passenden Methodendeklarationen und Definitionen erzeugen zu lassen, wie es hier beschrieben wurde.

Wenn Sie den Code aus der Zwischenablage an den richtigen Stellen einfügen, sollte die Klasse so aussehen.
Die Character.h
Die Character.h
#import
<Cocoa/Cocoa.h> @interface Character : NSObject { NSNumber *strength; NSNumber *dexterity; NSNumber *constitution; NSNumber *intelligence; NSNumber *wisdom; NSNumber *charisma; } - (NSNumber *)strength; - (void)setStrength:(NSNumber *)value; - (NSNumber *)dexterity; - (void)setDexterity:(NSNumber *)value; - (NSNumber *)constitution; - (void)setConstitution:(NSNumber *)value; - (NSNumber *)intelligence; - (void)setIntelligence:(NSNumber *)value; - (NSNumber *)wisdom; - (void)setWisdom:(NSNumber *)value; - (NSNumber *)charisma; - (void)setCharisma:(NSNumber *)value; @end |
Die Character.m
#import
"Character.h" @implementation Character - (NSNumber *)strength { return [[strength retain] autorelease]; } - (void)setStrength:(NSNumber *)value { if (strength != value) { [strength release]; strength = [value copy]; } } - (NSNumber *)dexterity { return [[dexterity retain] autorelease]; } - (void)setDexterity:(NSNumber *)value { if (dexterity != value) { [dexterity release]; dexterity = [value copy]; } } - (NSNumber *)constitution { return [[constitution retain] autorelease]; } - (void)setConstitution:(NSNumber *)value { if (constitution != value) { [constitution release]; constitution = [value copy]; } } - (NSNumber *)intelligence { return [[intelligence retain] autorelease]; } - (void)setIntelligence:(NSNumber *)value { if (intelligence != value) { [intelligence release]; intelligence = [value copy]; } } - (NSNumber *)wisdom { return [[wisdom retain] autorelease]; } - (void)setWisdom:(NSNumber *)value { if (wisdom != value) { [wisdom release]; wisdom = [value copy]; } } - (NSNumber *)charisma { return [[charisma retain] autorelease]; } - (void)setCharisma:(NSNumber *)value { if (charisma != value) { [charisma release]; charisma = [value copy]; } } @end |
Auch an dieser Stelle noch ein Mal der Hinweis auf den Garbage Collector. Bei manueller Speicherverwaltung wäre diese Klasse auch dafür zuständig, dass alle von ihr verwalteten Objekte auch wieder freigegeben würden. Wie bereits angesprochen überlassen wird diese Arbeit aber dem Garbage Collector. Später werden Sie diese Klasse auch noch um weitere Eigenschaften erweitern, doch für den Moment sollte es genügen.
Der nächste Schritt ist die grafische Oberfläche.
nächste Seite
Der nächste Schritt ist die grafische Oberfläche.
nächste Seite