www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit a0743a3983324422f7ea1b5c5d237b546a16182f
parent dcf4500732cd7ed2c7171b84b9683865cde65857
Author: Georges Dupéron <jahvascriptmaniac+github@free.fr>
Date:   Sun,  6 Nov 2011 22:24:42 +0100

Petit nettoyage.

Diffstat:
MMakefile | 2+-
Adirections.hh | 18++++++++++++++++++
Aio.cpp | 3+++
Aio.hh | 13+++++++++++++
Amain.cpp | 13+++++++++++++
Drules.cpp | 14--------------
Drules.hh | 23-----------------------
Drules.md | 41-----------------------------------------
Mrules/carrefour.hh | 2+-
Mrules/rectangleroutes.cpp | 10+++++-----
Mrules/rectangleroutes.hh | 3++-
Mrules/route.cpp | 2+-
Mrules/route.hh | 2+-
13 files changed, 58 insertions(+), 88 deletions(-)

diff --git 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/directions.hh b/directions.hh @@ -0,0 +1,18 @@ +#ifndef _DIRECTIONS_HH_ +#define _DIRECTIONS_HH_ + +typedef enum Cardinaux { + N = 0, + E = 1, + S = 2, + W = 3 +} Cardinaux; + +typedef enum Diagonales { + NE = 0, + SE = 1, + SW = 2, + NW = 3 +} Diagonales; + +#endif diff --git a/io.cpp b/io.cpp @@ -0,0 +1,3 @@ +#include "io.hh" + +IO::IO(): in(0), out(0) {} diff --git a/io.hh 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/main.cpp b/main.cpp @@ -0,0 +1,13 @@ +#include "vertex.hh" +#include "hash.hh" +#include "rules/rectangleroutes.hh" + +int main() { + // Générer une tile de base + Vertex ne(100, 100); + Vertex sw(0, 0); + RectangleRoutes r(ne, sw, random()); + r.subdivide(); + // tile.subdivide tant qu'on n'a pas le niveau de détail désiré. + return 0; +} diff --git a/rules.cpp b/rules.cpp @@ -1,14 +0,0 @@ -#include "vertex.hh" -#include "rules.hh" -#include "hash.hh" -#include "rules/rectangleroutes.hh" - -int main() { - // Générer une tile de base - Vertex ne(100, 100); - Vertex sw(0, 0); - RectangleRoutes r(ne, sw, random()); - r.subdivide(); - // tile.subdivide tant qu'on n'a pas le niveau de détail désiré. - return 0; -} diff --git a/rules.hh b/rules.hh @@ -1,23 +0,0 @@ -#ifndef _RULES_HH_ -#define _RULES_HH_ - -typedef enum Cardinaux { - N = 0, - E = 1, - S = 2, - W = 3 -} Cardinaux; - -typedef enum Diagonales { - NE = 0, - SE = 1, - SW = 2, - NW = 3 -} Diagonales; - -typedef struct IO { - int in; - int out; -} IO; - -#endif diff --git a/rules.md b/rules.md @@ -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 @@ -3,7 +3,7 @@ #include <iostream> #include "../vertex.hh" -#include "../rules.hh" +#include "../directions.hh" class Carrefour { public: diff --git 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 @@ -3,7 +3,8 @@ #include <iostream> #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 @@ -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 @@ -3,7 +3,7 @@ #include <iostream> #include "../vertex.hh" -#include "../rules.hh" +#include "../directions.hh" class Route { public: