You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
1.9 KiB
Zig
77 lines
1.9 KiB
Zig
const std = @import("std");
|
|
const io = std.io;
|
|
const mem = std.mem;
|
|
const os = std.os;
|
|
|
|
var player1Name: []const u8 = undefined;
|
|
var player2Name: []const u8 = undefined;
|
|
|
|
pub fn main() anyerror!void {
|
|
std.log.info("All your codebase are belong to us.", .{});
|
|
|
|
//Get input
|
|
const stdIn = io.getStdIn();
|
|
const stdOut = io.getStdOut();
|
|
var quit: bool = false;
|
|
|
|
var buffer: [1000]u8 = undefined;
|
|
// var fba = std.heap.FixedBufferAllocator.init(&buffer);
|
|
// const allocator = fba.allocator();
|
|
|
|
try stdOut.writer().print(">", .{});
|
|
while (!quit) {
|
|
const input = (try nextLine(stdIn.reader(), &buffer)).?;
|
|
|
|
try parser(input);
|
|
try stdOut.writer().print(">", .{});
|
|
}
|
|
}
|
|
|
|
fn nextLine(reader: anytype, buffer: []u8) !?[]const u8 {
|
|
var line = (try reader.readUntilDelimiterOrEof(
|
|
buffer,
|
|
'\n',
|
|
)) orelse return null;
|
|
// trim annoying windows-only carriage return character
|
|
if (@import("builtin").os.tag == .windows) {
|
|
return std.mem.trimRight(u8, line, "\r");
|
|
} else {
|
|
return line;
|
|
}
|
|
}
|
|
|
|
//TODO: Create command parser
|
|
fn parser(query: []const u8) !void {
|
|
const stdOut = io.getStdOut();
|
|
if (mem.eql(u8, query, "quit")) {
|
|
try quitApp();
|
|
}
|
|
if (mem.eql(u8, query, "player1")) {
|
|
player1Name = try getInput();
|
|
try stdOut.writer().print("Player 1 is now {s}\n", .{player1Name});
|
|
}
|
|
if (mem.eql(u8, query, "player2")) {
|
|
player1Name = try getInput();
|
|
try stdOut.writer().print("Player 1 is now {s}\n", .{player1Name});
|
|
}
|
|
}
|
|
|
|
fn quitApp() !void {
|
|
const stdOut = io.getStdOut();
|
|
try stdOut.writer().print("Bye!\n", .{});
|
|
os.exit(0);
|
|
}
|
|
|
|
fn getInput() ![]const u8{
|
|
const stdIn = io.getStdIn();
|
|
var buffer: [1000]u8 = undefined;
|
|
const input = (try nextLine(stdIn.reader(), &buffer)).?;
|
|
return input;
|
|
}
|
|
|
|
//TODO: Create inital settings
|
|
|
|
test "basic test" {
|
|
try std.testing.expectEqual(10, 3 + 7);
|
|
}
|