Petit nettoyage.

This commit is contained in:
Georges Dupéron 2011-11-06 22:24:42 +01:00
parent dcf4500732
commit a0743a3983
11 changed files with 29 additions and 59 deletions

View File

@ -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

View File

@ -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

3
io.cpp Normal file
View File

@ -0,0 +1,3 @@
#include "io.hh"
IO::IO(): in(0), out(0) {}

13
io.hh Normal file
View File

@ -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

View File

@ -1,5 +1,4 @@
#include "vertex.hh"
#include "rules.hh"
#include "hash.hh"
#include "rules/rectangleroutes.hh"

View File

@ -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);
}

View File

@ -3,7 +3,7 @@
#include <iostream>
#include "../vertex.hh"
#include "../rules.hh"
#include "../directions.hh"
class Carrefour {
public:

View File

@ -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) {

View File

@ -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 {

View File

@ -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;

View File

@ -3,7 +3,7 @@
#include <iostream>
#include "../vertex.hh"
#include "../rules.hh"
#include "../directions.hh"
class Route {
public: