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
|
||||
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
|
||||
|
|
|
@ -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
|
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 "rules.hh"
|
||||
#include "hash.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 "../vertex.hh"
|
||||
#include "../rules.hh"
|
||||
#include "../directions.hh"
|
||||
|
||||
class Carrefour {
|
||||
public:
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
#include <iostream>
|
||||
#include "../vertex.hh"
|
||||
#include "../rules.hh"
|
||||
#include "../directions.hh"
|
||||
|
||||
class Route {
|
||||
public:
|
||||
|
|
Loading…
Reference in New Issue
Block a user