aboutsummaryrefslogtreecommitdiff
path: root/exercises/38_structs2.zig
diff options
context:
space:
mode:
Diffstat (limited to 'exercises/38_structs2.zig')
-rw-r--r--exercises/38_structs2.zig51
1 files changed, 51 insertions, 0 deletions
diff --git a/exercises/38_structs2.zig b/exercises/38_structs2.zig
new file mode 100644
index 0000000..b6def93
--- /dev/null
+++ b/exercises/38_structs2.zig
@@ -0,0 +1,51 @@
+//
+// 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});
+ }
+}