summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/input.c53
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);
}
nihil fit ex nihilo