home *** CD-ROM | disk | FTP | other *** search
- {* Program that works!
- ** Shows use of Variant Records.
- ** roleplaying Type implemented.
- *}
- Uses Crt;
- Type
- CharType = (Warrior, Wizard);
- CharacterType = Record
- Name: String[16];
- Health, MaxHealth: Integer;
- Char: CharType;
- Case CharType of
- Warrior: ( DamagetoHit: Integer);
- Wizard : ( Spell, MaxSpell: Integer);
- end;
-
- Var
- Character: CharacterType;
- S: String;
-
- begin
-
- { select Character Type }
- Writeln;
- Writeln('Select Character Type:');
- Writeln(' [ 1 ] Warrior');
- Writeln(' [ 2 ] Wizard');
- Readln(S);
-
- With Character do
- begin
- if S = '1' then Character.Char := Warrior else
- Character.Char := Wizard;
-
- { set fixed Variables }
- Write('Enter Character name: ');
- Readln(Name);
- Write('Enter Character health value: ');
- Readln(MaxHealth);
- Health := MaxHealth;
- { set Variant Variables }
- Case Char of
- Warrior: begin
- Write('Enter ', Name, '''s hit value: ');
- Readln(Character.DamagetoHit);
- end;
- Wizard: begin
- Write('Enter ', Name, '''s spell value: ');
- Readln(MaxSpell);
- Spell := MaxSpell;
- end;
- end;
- end;
-
- With Character do { display Character info }
- begin
- { fixed Variables }
- Writeln;
- Writeln('*** Your Character:');
- Writeln(' Name: ', Name);
- Writeln(' Health: ', Health,'/',MaxHealth);
- { Variant Variables }
- Case Char of
- Warrior: Writeln(' Hit: ', DamagetoHit);
- Wizard: Writeln(' Spell: ', Spell, '/', MaxSpell);
- end;
- end;
- end.