This project aims to simulate basic lifeforms evolving and getting smarter, in a simplified manner.
- Install cmake & Catch2 on your OS
- Clone this repository:
HTTPS:git clone https://github.com/Xerus2000/eve
SSH:git clone git@github.com:Xerus2000/eve.git
- Build 'eve' via CLion so that all tasks become available for running
- In CLion go to
Settings > Editor > File and Code Templates
and remove the "Created by" header in c/cpp files - Execute this to set up the git commit message hooks:
git config core.hooksPath .dev/githooks
All production code goes into src, separated into model, view and controller.
test contains the tests and mirrors the source file structure.
The folder structure should represent classes and inheritance.
Therefore,
- every class belongs in its own folder with the same name
- every sub-class belongs within its parents folder
Thus, as of currently we have the following directory tree:
object
├── entity
│ ├── food
│ └── individual
│ ├── species1
│ ├── species2
│ └── ...
└── obstacle
Representing the following Inheritance Diagram:
Object
│
+------+------+
Obstacle Entity
│
+------+------+
Food Individual
│
+------+------+
Sp1 Sp2 ...
We use Catch2 for testing.
The tests should be in BDD style, except for simple functions & data structures where it is usually more appropriate to use test cases and sections.
Commit messages use the type-scope format as seen in Karma Runner.
Branch names should roughly follow this convention as well, so a branch adding an individual called Fred should be called something like feat/fred
while a branch fixing a bug in the list of individuals in the world could be named fix/world-individuals
.
More detailed Collaboration Guidelines are being worked on in Notion.