diff --git a/Makefile b/Makefile index 6c168f2..2927902 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,7 @@ CXX=g++ CCWARN=-Wall -Wextra -Werror CFLAGS=-O3 $(CCWARN) -g3 -OBJECTS = rules.o hash.o segment.o vertex.o rules/rectangleroutes.o rules/route.o rules/carrefour.o +OBJECTS = main.o hash.o segment.o vertex.o io.o rules/rectangleroutes.o rules/route.o rules/carrefour.o EXECUTABLE = city .PHONY: test diff --git a/rules.hh b/directions.hh similarity index 64% rename from rules.hh rename to directions.hh index 0b8cb4d..eb1207a 100644 --- a/rules.hh +++ b/directions.hh @@ -1,5 +1,5 @@ -#ifndef _RULES_HH_ -#define _RULES_HH_ +#ifndef _DIRECTIONS_HH_ +#define _DIRECTIONS_HH_ typedef enum Cardinaux { N = 0, @@ -15,9 +15,4 @@ typedef enum Diagonales { NW = 3 } Diagonales; -typedef struct IO { - int in; - int out; -} IO; - #endif diff --git a/io.cpp b/io.cpp new file mode 100644 index 0000000..e545086 --- /dev/null +++ b/io.cpp @@ -0,0 +1,3 @@ +#include "io.hh" + +IO::IO(): in(0), out(0) {} diff --git a/io.hh b/io.hh new file mode 100644 index 0000000..0c541b3 --- /dev/null +++ b/io.hh @@ -0,0 +1,13 @@ +#ifndef _IO_HH_ +#define _IO_HH_ + +class IO { +public: + int in; + int out; +public: + IO(); + //IO(int in, int out); +}; + +#endif diff --git a/rules.cpp b/main.cpp similarity index 93% rename from rules.cpp rename to main.cpp index e3acea9..1fa2450 100644 --- a/rules.cpp +++ b/main.cpp @@ -1,5 +1,4 @@ #include "vertex.hh" -#include "rules.hh" #include "hash.hh" #include "rules/rectangleroutes.hh" diff --git a/rules.md b/rules.md deleted file mode 100644 index 6bae670..0000000 --- a/rules.md +++ /dev/null @@ -1,41 +0,0 @@ -rectangle suffisemment petit, résidentiel → maison -rectangle suffisemment petit, commercial → magasin -… - -// TODO : condition : les routes présentes sur le bord du rectangle doivent être signalées. -// TODO : largeur des routes -// TODO : quand on trace une route jusqu'au bord, faire un carrefour / T avec la route voisine. - - -// TODO : faire pour des angles entre 70° et 110°. - -// TODO : distinguer à la création les RectangleRoutes avec (all sides length > 10) et les autres cas. - -RectangleRoutes r (all sides length > 10) { - Vertex split = { .x = randomInRange(r.seed, 0, r.no.x+5, r.ne.x-5), .y = randomInRange(r.seed, 1, r.no.x+5, r.ne.x-5) }; - Carrefour(split + (1,1), split - (1,1)) - // routes au NESW du carrefour - Route((r.ne.x, split.y) + (0,1)), split + (1,1)) - Route((split.x, r.se.y) + (1,0)), split + (-1,1)) - Route((r.so.x, split.y) + (0,-1)), split + (-1,-1)) - Route((split.x, r.no.y) + (-1,0)), split + (1,-1)) - // subrectangles - RectangleRoutes(split + (1,1), r.ne, newSeed(r.seed, 2)); - RectangleRoutes(split + (1,-1), r.se, newSeed(r.seed, 3)); - RectangleRoutes(split + (-1,-1), r.so, newSeed(r.seed, 4)); - RectangleRoutes(split + (-1,1), r.no, newSeed(r.seed, 5)); -} - -// rectangle suffisemment grand → rectangle*4 avec un T de routes au milieu. -Rectangle r (r.width > 10 && r.height > 10) { - Vertex split = randomPointInRect(r); - Carrefour(split + (1,1), split - (1,1)) - // routes au NESW du carrefour - Route((r.ne.x, split.y) + (0,1)), split + (1,1)) - Route((split.x, r.se.y) + (1,0)), split + (-1,1)) - Route((r.so.x, split.y) + (0,-1)), split + (-1,-1)) - // subrectangles - Rectangle((r.so.x,split.y) + (0,1), r.ne); - Rectangle(split + (1,-1), r.se); - Rectangle(split + (-1,-1), r.so); -} diff --git a/rules/carrefour.hh b/rules/carrefour.hh index e7de9e0..5a626a8 100644 --- a/rules/carrefour.hh +++ b/rules/carrefour.hh @@ -3,7 +3,7 @@ #include #include "../vertex.hh" -#include "../rules.hh" +#include "../directions.hh" class Carrefour { public: diff --git a/rules/rectangleroutes.cpp b/rules/rectangleroutes.cpp index bddf4c3..21883e7 100644 --- a/rules/rectangleroutes.cpp +++ b/rules/rectangleroutes.cpp @@ -1,6 +1,6 @@ #include "rectangleroutes.hh" #include "../vertex.hh" -#include "../rules.hh" +#include "../directions.hh" #include "../hash.hh" #include "carrefour.hh" @@ -30,10 +30,10 @@ void RectangleRoutes::subdivide() { Route rs(roadEndS.add(+1,0), roadEndS.add(-1,0), split.add(-1,-1), split.add(+1,-1)); Route rw(roadEndW.add(0,-1), roadEndW.add(0,+1), split.add(-1,+1), split.add(-1,-1)); // Sous-quartiers - RectangleRoutes(this->ne, re.corners[NW], newSeed(this->seed, 2)); - RectangleRoutes(re.corners[SE], rs.corners[SE], newSeed(this->seed, 3)); - RectangleRoutes(rs.corners[NW], this->sw, newSeed(this->seed, 4)); - RectangleRoutes(Vertex(this->sw.x, this->ne.y), rn.corners[SW], newSeed(this->seed, 5)); + RectangleRoutes rrne(this->ne, re.corners[NW], newSeed(this->seed, 2)); + RectangleRoutes rrse(re.corners[SE], rs.corners[SE], newSeed(this->seed, 3)); + RectangleRoutes rrsw(rs.corners[NW], this->sw, newSeed(this->seed, 4)); + RectangleRoutes rrnw(Vertex(this->sw.x, this->ne.y), rn.corners[SW], newSeed(this->seed, 5)); } std::ostream& operator<<(std::ostream& os, const RectangleRoutes* r) { diff --git a/rules/rectangleroutes.hh b/rules/rectangleroutes.hh index fca69de..2c8c70c 100644 --- a/rules/rectangleroutes.hh +++ b/rules/rectangleroutes.hh @@ -3,7 +3,8 @@ #include #include "../vertex.hh" -#include "../rules.hh" +#include "../directions.hh" +#include "../io.hh" // RectangleRoutes est un quadrilatère de routes avec des angles aux coins égaux à 90°. class RectangleRoutes { diff --git a/rules/route.cpp b/rules/route.cpp index cb522df..92d9a19 100644 --- a/rules/route.cpp +++ b/rules/route.cpp @@ -1,6 +1,6 @@ #include "route.hh" #include "../vertex.hh" -#include "../rules.hh" +#include "../directions.hh" Route::Route(Vertex ne, Vertex se, Vertex sw, Vertex nw) { corners[NE]=ne; diff --git a/rules/route.hh b/rules/route.hh index a48a469..1c318df 100644 --- a/rules/route.hh +++ b/rules/route.hh @@ -3,7 +3,7 @@ #include #include "../vertex.hh" -#include "../rules.hh" +#include "../directions.hh" class Route { public: