diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/input.c | 53 |
1 files changed, 25 insertions, 28 deletions
diff --git a/lib/input.c b/lib/input.c index 8b696e1..ea5f368 100644 --- a/lib/input.c +++ b/lib/input.c @@ -7,40 +7,37 @@ #define LENGTH 80 -static Coord _input_coord() { - char line[LENGTH]; - int done = 0; +Move input_move() { + Coord orig, dest; + char line[LENGTH], orig_line[3], dest_line[3]; + int done = 0; + printf("Please, enter your movement: "); while (!done) { fgets(line, LENGTH, stdin); - if (strnlen(line, LENGTH) == 3 && line[2] == '\n') - line[2] = 0; - - if (!coord_is_valid(line)) - printf("Invalid coordinate. Write something like \"e2\": "); + if (strnlen(line, LENGTH) == 6 && line[2] == '-' && line[5] == '\n') { + orig_line[0] = line[0]; + orig_line[1] = line[1]; + orig_line[2] = 0; + + dest_line[0] = line[3]; + dest_line[1] = line[4]; + dest_line[2] = 0; + + printf("Coordinates %s-%s\n", orig_line, dest_line); + + if (!coord_is_valid(orig_line) || !coord_is_valid(dest_line)) + printf("Invalid coordinate, try again: "); + else { + orig = coord_init(orig_line); + dest = coord_init(dest_line); + done = 1; + } + } else - done = 1; + printf("Invalid movement. Write something like \"e2-e4\": "); } - return coord_init(line); -} - -static Coord _input_orig_coord() { - printf("Orig coordinate: "); - - return _input_coord(); -} - -static Coord _input_dest_coord() { - printf("Dest coordinate: "); - - return _input_coord(); -} - -Move input_move() { - Coord orig = _input_orig_coord(); - Coord dest = _input_dest_coord(); - return move_init(orig, dest); } |