aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/38_structs2.zig
blob: 9a67c254989a9362b7ed71da76d74653d01b9c7d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
//
// Grouping values in structs is not merely convenient. It also allows
// us to treat the values as a single item when storing them, passing
// them to functions, etc.
// 
// This exercise demonstrates how we can store structs in an array and
// how doing so lets us print them all (both) using a loop.
//
const std = @import("std");

const Class = enum{
    wizard,
    thief,
    bard,
    warrior,
};

const Character = struct{
    class: Class,
    gold: u32,
    health: u8,
    experience: u32,
};

pub fn main() void {
    var chars: [2]Character = undefined;

    // Glorp the Wise
    chars[0] = Character{
        .class      = Class.wizard,
        .gold       = 20,
        .health     = 100,
        .experience = 10,
    };

    // Please add "Zump the Loud" with the following properties:
    //
    //     class      bard
    //     gold       10
    //     health     100
    //     experience 20
    //
    // Feel free to run this program without adding Zump. What does
    // it do and why?

    // Printing all RPG characters in a loop:
    for (chars) |c, num| {
        std.debug.print("Character {} - G:{} H:{} XP:{}\n",
                        .{num+1, c.gold, c.health, c.experience});
    }

    std.debug.print("\n", .{});
}