Petit nettoyage.
This commit is contained in:
parent
dcf4500732
commit
a0743a3983
2
Makefile
2
Makefile
|
@ -3,7 +3,7 @@ CXX=g++
|
||||||
CCWARN=-Wall -Wextra -Werror
|
CCWARN=-Wall -Wextra -Werror
|
||||||
CFLAGS=-O3 $(CCWARN) -g3
|
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
|
EXECUTABLE = city
|
||||||
|
|
||||||
.PHONY: test
|
.PHONY: test
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#ifndef _RULES_HH_
|
#ifndef _DIRECTIONS_HH_
|
||||||
#define _RULES_HH_
|
#define _DIRECTIONS_HH_
|
||||||
|
|
||||||
typedef enum Cardinaux {
|
typedef enum Cardinaux {
|
||||||
N = 0,
|
N = 0,
|
||||||
|
@ -15,9 +15,4 @@ typedef enum Diagonales {
|
||||||
NW = 3
|
NW = 3
|
||||||
} Diagonales;
|
} Diagonales;
|
||||||
|
|
||||||
typedef struct IO {
|
|
||||||
int in;
|
|
||||||
int out;
|
|
||||||
} IO;
|
|
||||||
|
|
||||||
#endif
|
#endif
|
13
io.hh
Normal file
13
io.hh
Normal 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
|
|
@ -1,5 +1,4 @@
|
||||||
#include "vertex.hh"
|
#include "vertex.hh"
|
||||||
#include "rules.hh"
|
|
||||||
#include "hash.hh"
|
#include "hash.hh"
|
||||||
#include "rules/rectangleroutes.hh"
|
#include "rules/rectangleroutes.hh"
|
||||||
|
|
41
rules.md
41
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);
|
|
||||||
}
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include "../vertex.hh"
|
#include "../vertex.hh"
|
||||||
#include "../rules.hh"
|
#include "../directions.hh"
|
||||||
|
|
||||||
class Carrefour {
|
class Carrefour {
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#include "rectangleroutes.hh"
|
#include "rectangleroutes.hh"
|
||||||
#include "../vertex.hh"
|
#include "../vertex.hh"
|
||||||
#include "../rules.hh"
|
#include "../directions.hh"
|
||||||
#include "../hash.hh"
|
#include "../hash.hh"
|
||||||
|
|
||||||
#include "carrefour.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 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));
|
Route rw(roadEndW.add(0,-1), roadEndW.add(0,+1), split.add(-1,+1), split.add(-1,-1));
|
||||||
// Sous-quartiers
|
// Sous-quartiers
|
||||||
RectangleRoutes(this->ne, re.corners[NW], newSeed(this->seed, 2));
|
RectangleRoutes rrne(this->ne, re.corners[NW], newSeed(this->seed, 2));
|
||||||
RectangleRoutes(re.corners[SE], rs.corners[SE], newSeed(this->seed, 3));
|
RectangleRoutes rrse(re.corners[SE], rs.corners[SE], newSeed(this->seed, 3));
|
||||||
RectangleRoutes(rs.corners[NW], this->sw, newSeed(this->seed, 4));
|
RectangleRoutes rrsw(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 rrnw(Vertex(this->sw.x, this->ne.y), rn.corners[SW], newSeed(this->seed, 5));
|
||||||
}
|
}
|
||||||
|
|
||||||
std::ostream& operator<<(std::ostream& os, const RectangleRoutes* r) {
|
std::ostream& operator<<(std::ostream& os, const RectangleRoutes* r) {
|
||||||
|
|
|
@ -3,7 +3,8 @@
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include "../vertex.hh"
|
#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°.
|
// RectangleRoutes est un quadrilatère de routes avec des angles aux coins égaux à 90°.
|
||||||
class RectangleRoutes {
|
class RectangleRoutes {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#include "route.hh"
|
#include "route.hh"
|
||||||
#include "../vertex.hh"
|
#include "../vertex.hh"
|
||||||
#include "../rules.hh"
|
#include "../directions.hh"
|
||||||
|
|
||||||
Route::Route(Vertex ne, Vertex se, Vertex sw, Vertex nw) {
|
Route::Route(Vertex ne, Vertex se, Vertex sw, Vertex nw) {
|
||||||
corners[NE]=ne;
|
corners[NE]=ne;
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include "../vertex.hh"
|
#include "../vertex.hh"
|
||||||
#include "../rules.hh"
|
#include "../directions.hh"
|
||||||
|
|
||||||
class Route {
|
class Route {
|
||||||
public:
|
public:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user