Programmieren mit Swift - Für macOS und iOS
Programmieren mit Swift - Für macOS und iOS
Die grafische Oberfläche

Die erste Version der grafischen Oberfläche soll ganz einfach sein. Alles, was Sie benötigen, sind 12 NSTextField vom Typ Label. In sechs Feldern werden später die Eigenschaftswerte angezeigt, während die anderen sechs Felder als Bezeichnung dienen. Ändern Sie die Textausrichtung der Felder für die Eigenschaftswerte, damit die Zahlen später bündig untereinander stehen. Ein Button ist ebenfalls nötig. Mit ihm soll über eine Action das Auswürfeln der Character-Eigenschaften gestartet werden.
stacks_image_E8310F43-91C0-42B2-9177-4DD71D4517ED
Für jedes Textfeld, auf dem Text ausgegeben werden soll, benötigt der Controller ein Outlet. Ebenfalls muss ein Objekt der Character-Klasse deklariert werden. Vergessen Sie auch die zugehörige #import-Anweisung nicht.
#import <Cocoa/Cocoa.h>
#import
"Dice.h"
#import
"Character.h"

@interface MyController : NSObject {

    Dice *rpgDice;
    Character *rpgCharacter;
   
IBOutlet NSTextField *txtStrength;
   
IBOutlet NSTextField *txtDexterity;
   
IBOutlet NSTextField *txtConstitution;
   
IBOutlet NSTextField *txtIntelligence;
   
IBOutlet NSTextField *txtWisdom;
   
IBOutlet NSTextField *txtCharisma;
}

- (
IBAction)rollCharacterAttributes:(id)sender;

@end
Zentraler Kern diese Anwendung ist die rollCharacterAttributes-Methode. In ihr werden für den Character neue Eigenschaftswerte ermittelt. Zusätzlich werden in dieser Methode die Werte an die Textfelder gesendet, sodass man am Ende tatsächlich etwas auf der grafischen Oberfläche sieht.
- (IBAction)rollCharacterAttributes:(id)sender
{
    [rpgCharacter setStrength: [rpgDice Roll3W6]];
    [rpgCharacter setDexterity: [rpgDice Roll3W6]];
    [rpgCharacter setConstitution: [rpgDice Roll3W6]];
    [rpgCharacter setIntelligence: [rpgDice Roll3W6]];
    [rpgCharacter setWisdom: [rpgDice Roll3W6]];
    [rpgCharacter setCharisma: [rpgDice Roll3W6]];

    [txtStrength setIntValue:[[rpgCharacter strength] intValue]];
    [txtDexterity setIntValue:[[rpgCharacter dexterity] intValue]];
    [txtConstitution setIntValue:[[rpgCharacter constitution] intValue]];
    [txtIntelligence setIntValue:[[rpgCharacter intelligence] intValue]];
    [txtWisdom setIntValue:[[rpgCharacter wisdom] intValue]];
    [txtCharisma setIntValue:[[rpgCharacter charisma] intValue]];
}
Mit dieser Methode und den richtigen Verbindungen ist das Programm einsatzbereit. Durch Anklicken des Würfel-Button werden für alle Eigenschaften neue, zufällige Werte erzeugt und diese im Fenster angezeigt. Jetzt kann man mit dem Programm sogar schon etwas anfangen, aber wir sind noch lange nicht fertig.
stacks_image_41DF5698-7F14-4D91-9246-ABFFAA120644