Update Readme
This commit is contained in:
104
Readme.md
104
Readme.md
@@ -1,26 +1,90 @@
|
|||||||
|
# Treender
|
||||||
|
|
||||||
# Code style
|
A genetic algorithm visualization tool with interactive evolution simulation.
|
||||||
|
|
||||||
## Naming Conventions:
|
## Overview
|
||||||
- PascalCase:
|
|
||||||
- Functions
|
|
||||||
- Class names
|
|
||||||
- Struct names
|
|
||||||
|
|
||||||
- camelCase:
|
Treender is a C++ application that simulates genetic algorithms through an interactive visual interface. Users can observe and influence the evolution of digital organisms represented as visual patterns.
|
||||||
- Class attributes
|
|
||||||
- Class methods
|
|
||||||
- Struct attributes
|
|
||||||
- Variables
|
|
||||||
|
|
||||||
## Class Structure:
|
## Features
|
||||||
|
|
||||||
- Header (.h) Files:
|
- **Interactive Evolution**: Like/dislike organisms to guide evolution
|
||||||
- Declare public methods and attributes first, followed by private members.
|
- **Genetic Algorithm**: DNA-based reproduction with mutation
|
||||||
- Implementation (.cpp) Files:
|
- **Visual Representation**: Organisms displayed as colorful patterns
|
||||||
- Implement methods in the same order as declared in the corresponding header file.
|
- **Client-Server Architecture**: Separate app and server components
|
||||||
|
- **Cross-Platform**: Supports Web, Android, and Desktop platforms
|
||||||
|
|
||||||
## Include order
|
## Architecture
|
||||||
- Std
|
|
||||||
- local ( form inc dir )
|
```
|
||||||
- external raylib
|
Treender
|
||||||
|
├── app/ # Main application (Raylib + Dear ImGui)
|
||||||
|
├── server/ # TCP server for data management
|
||||||
|
├── shared/ # Shared code (DNA logic, networking)
|
||||||
|
├── external/ # Third-party libraries
|
||||||
|
└── data.db # SQLite database
|
||||||
|
```
|
||||||
|
|
||||||
|
## Components
|
||||||
|
|
||||||
|
### Application
|
||||||
|
- **Main Entry**: `app/src/main.cpp`
|
||||||
|
- **Core Class**: `App` class handles rendering, input, and evolution logic
|
||||||
|
- **Visualization**: Uses Raylib for graphics and Dear ImGui for UI
|
||||||
|
|
||||||
|
### Server
|
||||||
|
- **TCP Server**: Handles client connections and data persistence
|
||||||
|
- **Database**: SQLite for storing organism data and user preferences
|
||||||
|
- **Block Management**: Tracks warnings and blocked organisms
|
||||||
|
|
||||||
|
### Shared Library
|
||||||
|
- **DNA System**: Genetic algorithm implementation (`Dna.cpp`)
|
||||||
|
- **Networking**: TCP socket communication
|
||||||
|
- **Data Structures**: Shared between app and server
|
||||||
|
|
||||||
|
## Building
|
||||||
|
|
||||||
|
### Prerequisites
|
||||||
|
- CMake 3.10+
|
||||||
|
- C++17 compiler
|
||||||
|
- Raylib
|
||||||
|
- Dear ImGui
|
||||||
|
- SQLite3
|
||||||
|
|
||||||
|
### Build Instructions
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mkdir build
|
||||||
|
cd build
|
||||||
|
cmake ..
|
||||||
|
make
|
||||||
|
```
|
||||||
|
## Running
|
||||||
|
|
||||||
|
1. Start the server:
|
||||||
|
```bash
|
||||||
|
./build/server
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Run the application:
|
||||||
|
```bash
|
||||||
|
./build/app
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
- **Like/Disike**: Click on organisms to influence evolution
|
||||||
|
- **Rotation**: Drag to rotate the view
|
||||||
|
- **Statistics**: View similarity scores and generation information
|
||||||
|
|
||||||
|
## Database
|
||||||
|
|
||||||
|
The application uses SQLite database (`data.db`) to store:
|
||||||
|
- Organism DNA data
|
||||||
|
- User preferences
|
||||||
|
- Blocked/warned organisms
|
||||||
|
|
||||||
|
## Screenshots
|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
|
|||||||
BIN
pictures/capture_show_noraml.jpg
Executable file
BIN
pictures/capture_show_noraml.jpg
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 168 KiB |
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
Reference in New Issue
Block a user