ibra-kdbra / Cpp_Projects

A C/C++ playground for exploring diverse concepts like algorithms, game engines, CMake, and more. This evolving repository is a space for experimentation, designed to deepen understanding of C++ while encouraging growth and innovation.
7 stars 0 forks source link
algorithms c cmake collision-detection cpp data-structures game-engine json makefile monitoring-tool opengl qml qt6-gui searching-algorithms sfml2

C++ Projects PlayGround

      I hope this repository continues to grow and teaches me
       new things about this fascinating programming language
      ._._._._._._._._._._._._._._._._._._._._._._._._._._._._.


         *   .   `   .  ` *  `  .   *   .   `   .   `   .   +   
                  ________        *    .      .     *   .
                /   _____  \    .    *     `     .  `   .     *
               |  /     \   |       .  `  .   *   .   +   .  `  
               |  |      ¯¯¯ _||__||_   `    .   ,   `   .   *
               |  |       __ ¯||¯¯||¯   PLAYGROUND  .  *    .  
                \  \_____/  |       .  `  *   .  +   .  `  *  ,
                 \_________/    .  *   .   `   .  ` *  `  .  
        *  .  `  .   *   .   +   .  `   *   .   `   .  ` *  `  .  

      .~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.

📚 Table of Contents

ℹ️   - [**Overview**](#overview)   - [**Side Note**](#side-note)
🧾 Projects Titles
- [Atari Games](#atari-games) - [Beneficial C Programming](#beneficial-c_programming) - [CanChat](#canchat) - [Chess-Engine](#chess-engine) - [Chess 3D](#chess_3d) - [Collatz Conjecture](#collatz-conjecture) - [CPP20 Develop](#cpp20_develop) - [Customized Operators](#customizedoperators) - [Define Evil](#define_evil) - [Design Patterns](#design-patterns) - [Dump C++](#dump-c) - [FileLockSocket](#filelocksocket) - [Hangman Game](#hangman-game) - [InjectHook](#injecthook) - [Introspective](#introspective) - [Javascript Compiler](#javascript-compiler) - [JsonConverter](#jsonconverter) - [MarbleMarcher](#marblemarcher) - [Matrix ScreenSaver](#matrix_screensaver) - [MiniShell](#minishell) - [Mothbar](#mothbar) - [OfxAsync](#ofxasync) - [OpenGL Examples](#opengl_examples) - [PackSend](#packsend) - [Password Generator](#password_generator) - [Pipes ScreenSaver](#pipes_screensaver) - [POng](#pong) - [Random Utility Tools](#random_utility_tools) - [Regular Expression Convertors](#regular_expression_convertors) - [SFML Multithread Verlet](#sfml-multithread-verlet) - [Simple Turso](#simple_turso) - [Simple Code](#simple-code) - [Simplesdl2 Game Template](#simplesdl2_game_template) - [Static Page Generator](#staticpagegen) - [SystemMonitor](#systemmonitor) - [Template Language Generator](#template_language_generator) - [Terminal File Manager](#terminal_file_manager) - [Terminal Snake](#terminal_snake) - [Thread Pool](#thread_pool) - [Tokenizer_tok](#tokenizer_tok) - [Trigonometric Functions](#trigonometric-functions) - [ViteFA Config](#vitefa_config) - [Volumetric Clouds](#volumetric-clouds) - [WordProc](#wordproc)

Overview

This repository serves as a personal playground for experimenting with various C++ projects. It includes original implementations, as well as forked or cloned repositories from other developers with my own improvements where applicable. Each project aims to explore different concepts and features of the C++ programming language.

Side note:

Projects are organized alphabetically for easy navigation. Each corresponding README file provides specific details, usage instructions, and credits for any borrowed code. #

Projects

Atari-Games

A collection of classic Atari games implemented in C++:

  1. 2048 - Learn more

  2. Snake - Learn more

  3. Tetris - Learn more

    📚

#

Beneficial-C_programming

Compile and execute C "scripts" in one go!

A shell script designed to streamline the process of compiling and executing C (and C++) scripts with unparalleled speed. This tool allows users to run C code directly from the command line or via shebang, making it as convenient as running shell scripts. With support for multiple files and customizable compiler options.

📚

#

CanChat

Feature-complete rooms-based chat for tens of thousands of users. Client plus Server. Built with Oat++ Web Framework. Single-Node In-Memory WebSocket TLS.

📚

#

Chess_3D

A simple 3D chess game that depends on GLFW and GLM, with U-R-C-F for game controls.

📚

#

Chess-Engine

A Chess Engine implemented in C++17.

📚

#

Collatz-Conjecture

Learn more about the Collatz Conjecture.

A program that attempts to solve the Collatz Conjecture question, which asks whether repeating two simple arithmetic operations will eventually transform every positive integer into one.

📚

#

CPP20_Develop

A versatile collection of compile-time optimized tools for C++ programming.

This library uses the latest C++ features available in GCC, Clang and Visual Studio 2019 and 2022.

Co-Cpp19 contains numerous sublibraries and is splitted into many small headers. This aims to enable the "pay only what you use policy" of C++ at compile time.

📚

#

CustomizedOperators

Implements custom operators for C++.

Like what?

In C++, one cannot create new operators such as <> or |&. However, you can create a variable named x of a newly created type with an irrelevant name and overload the operators < and > so that you can write < x >, creating new operators of sorts.

📚

#

Define_evil

A macro library for the morally compromised C and C++ programmer.

It's an MIT-licensed collection of clean, modular, well-documented macro hacks with full unit test coverage.

Why?

Complex macros are useful when pushing the limits of what C/C++ can do. For example, you could use #define EVIL macros to construct a domain-specific language that is technically C or C++ (compiled by any normal compiler) but looks and feels quite different. An extreme example of this is Python++, where many of these ideas originated. #define EVIL was created to split out and clean up the reusable bits of Python++.

📚

#

Design-patterns

Object-Oriented Design(OOD) patterns implemented in C++ based on the book Head First Design Patterns: A Brain-Friendly Guide.

Implemented design patterns:

#

Dump C++

Dump C++ Itanium ABI from ELF objects.

A tool used to inspect C++ binaries for debug symbols (Learn more) and virtual function tables (Learn more) information.

📚

#

FileLockSocket

Transfer files quickly and securely!

The project utilizes PBKDF2 for key derivation, employs AES-256-GCM for encryption/decryption, and uses SHA3-256 for integrity checks.

📚

#

Hangman-game

What is the Hangman game? Learn more

A text-based game; the program takes in two parameters: the first is a word or expression, and the second is the number of attempts you want in your game.

📚

#

InjectHook

A lightweight C++ library designed for function interception within injected DLLs, providing a streamlined approach to modifying application behavior at runtime. It is ideal for educational purposes, debugging, and dynamic software analysis.

📚

#

Introspective

Introspective is a header file that brings reflection to any class that wants it, regardless of whether the reflected member is a constant, a static variable, or an instance member function. It records declaration order, (function) type, and address, passing them along unchanged during compile-time, with the ultimate goal of making interaction with embedded scripting languages like Lua a little less of a hassle.

📚

#

Javascript-compiler

The goal of the project development was to learn the mechanisms of compilers. The project contains five parts:

  1. A lexer
  2. A parser
  3. An interpreter
  4. A compiler
  5. A virtual machine

The designed programming language is similar to JavaScript but much simpler. Code samples can be found in each part's test case folder.

📚

#

JsonConverter

A C++ library providing a std::string parser for JavaScript Object Notation (JSON). The STL containers are used to represent the JSON entities: Object, Array, and Value.

📚

#

MarbleMarcher

Marble Marcher is a video game demo that uses a fractal physics engine, and fully procedural rendering to produce beautiful, and unique gameplay unlike anything you've seen before.

The goal of the game is to reach the flag as quickly as possible, but be careful not to fall off the level or get crushed by the fractal! There are 24 levels to unlock.

📚

#

Matrix_ScreenSaver

A Matrix terminal screen saver made in C.

Preview:

📚

#

MiniShell

Minishell is a simplified shell program that emulates a Unix-like shell environment. It is built using C and provides a basic command line interface (CLI) where users can interact with the system, execute commands, and manage environment variables. This project also includes implementations of several built-in commands such as cd, echo, env, and more.

Features:

📚

#

Mothbar

A small bar utility written in C for FreeBSD, which displays information such as the current desktop, clock, and volume. It works by creating FIFO pipes to receive data, and updates the bar in real-time using XCB for interaction with the X server.

Features:

📚

#

OfxAsync

An openFrameworks addon compatible with versions 0.9.8 to 0.10.1, designed to simplify multi-threading through a straightforward wrapper around ofThread.

📚

#

OpenGL_examples

A collection of examples created while taking a Computer Graphics course to better understand OpenGL and apply techniques learned from the literature.

Preview:


📚

#

PackSend

A small utility for constructing packets from various data sources and outputting them to sockets, serial ports, or files.

📚

#

Password_generator

A CLI password generator written in C++.

📚

#

Pipes_ScreenSaver

A Pipes terminal screen saver made in C.

Preview:

📚

#

POng

A Pong (learn more) clone for Linux written in C++ using SDL 2.0.

Preview:

📚

#

Random_Utility_tools

This subdirectory provides an overview of several converters used for instrument conversion between different formats such as BNK, IBK, and OPN. Each converter serves a specific purpose in processing sound patches and instrument banks.

Implemented converters:

#

Regular_Expression_Convertors

This project includes three converters:

#

SFML Multithread Verlet

Demonstrates a multithreaded particle simulation using the Verlet integration method for calculating particle motion, with optimized collision detection and interaction. It leverages SFML for rendering and handling the GUI.

Key Features:

Preview:

📚

#

Simple_turso

An experimental 3D/game engine technology partially based on the Urho3D codebase.

📚

#

Simple-Code

A collection of algorithms and data structures implemented in C++.

📚

#

Simplesdl2_game_template

A template for a future game that I am currently working on.

📚

#

StaticPageGen

staticpagegen is a tool used to generate static pages for directory hierarchies, using the simplest possible form for the protocols it supports.

📚

#

SystemMonitor

This project contains the result of the second project of the Udacity C++ Nanodegree Program. The project involves creating a system monitor for the Linux Operating System, which depends on the ncurses library.

📚

#

Template_Language_Generator

A small POSIX shell script for generating C/C++ code structures, build system files, and more.

📚

#

Terminal_File_Manager

A terminal file manager implemented in C++20 using the ncurses library.

📚

#

Terminal_Snake

tsnake is a terminal snake game written in C++ using the ncurses library, featuring support for maps and interactive resizing.

Preview:

📚

#

Thread_Pool

A thread pool is a software design pattern for achieving concurrency of execution in a computer program (learn more). This project is a simple async thread pool implementation in C++.

📚

#

Tokenizer_tok

A simple, dependency-free, single-header source code tokenizer written in ANSI C. It features an easy-to-use interface for manipulating tokens and concatenating them back into a string.

📚

#

Trigonometric-Functions

A small program that lets you visualize multiple trigonometric functions, built in C++ using OpenGL and GLUT.

Preview:

📚

#

ViteFA_config

ViteFA_config is a highly efficient configuration management system implemented in C. It is designed to handle over 100,000 concurrent agent connections with sub-second propagation of configuration changes. The system uses MySQL for storage and relies on libshmcache for shared memory management. The shared memory type is configured to mmap, and recycle_valid_entries must be set to false for the cache.

📚

#

Volumetric-clouds

A real-time GPU volumetric clouds renderer via OpenGL, based on The Real-time Volumetric Cloudscapes of Horizon: Zero Dawn by Andrew Schneider.

Preview:

Collage of real-time render results from the volumetric clouds renderer

📚

#

WordProc

An attempt to write a word processor using C++20, Qt5, and CMake as the build system.

📚

#