commit a0743a3983324422f7ea1b5c5d237b546a16182f
parent dcf4500732cd7ed2c7171b84b9683865cde65857
Author: Georges Dupéron <jahvascriptmaniac+github@free.fr>
Date: Sun, 6 Nov 2011 22:24:42 +0100
Petit nettoyage.
Diffstat:
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: