{"id":35546455,"url":"https://github.com/omeryildiz/simuduck","last_synced_at":"2026-01-04T06:02:31.767Z","repository":{"id":15595848,"uuid":"18331879","full_name":"omeryildiz/SimUduck","owner":"omeryildiz","description":"SimUduck sample in Head First Design pattern. Written with C++ language","archived":false,"fork":false,"pushed_at":"2024-06-04T12:47:45.000Z","size":8,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-06-04T14:30:47.736Z","etag":null,"topics":["cpp11","oop","simulation","strategy-design-pattern"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/omeryildiz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-04-01T14:17:20.000Z","updated_at":"2024-06-04T14:30:52.188Z","dependencies_parsed_at":"2024-06-04T14:40:54.333Z","dependency_job_id":null,"html_url":"https://github.com/omeryildiz/SimUduck","commit_stats":null,"previous_names":["omeryildiz/simuduck"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/omeryildiz/SimUduck","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omeryildiz%2FSimUduck","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omeryildiz%2FSimUduck/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omeryildiz%2FSimUduck/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omeryildiz%2FSimUduck/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/omeryildiz","download_url":"https://codeload.github.com/omeryildiz/SimUduck/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omeryildiz%2FSimUduck/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28198673,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2026-01-04T02:00:06.065Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp11","oop","simulation","strategy-design-pattern"],"created_at":"2026-01-04T06:01:50.721Z","updated_at":"2026-01-04T06:02:31.762Z","avatar_url":"https://github.com/omeryildiz.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SimUduck\n\nSimUduck is a simulation project designed to emulate the behavior and characteristics of ducks in a controlled environment. This project serves as a teaching tool to understand object-oriented programming principles and design patterns, particularly focusing on inheritance, polymorphism, and the strategy pattern.\n\n## Features\n\n- **Duck Simulation**: Simulate various types of ducks, each with unique behaviors.\n- **Behavioral Patterns**: Demonstrate the use of strategy patterns to change the behavior of ducks at runtime.\n- **Object-Oriented Principles**: Illustrate inheritance and polymorphism through a flexible and extensible codebase.\n\n## Getting Started\n\n### Prerequisites\n\nTo run this project, you will need:\n\n- A C++ compiler (GCC, Clang, MSVC, etc.)\n- CMake for building the project\n\n### Installation\n\n1. Clone the repository:\n\n```sh\ngit clone https://github.com/omeryildiz/SimUduck.git\ncd SimUduck\n```\n\n2. Create a build directory and navigate to it:\n\n```sh\nmkdir build\ncd build\n```\n\n3. Configure the project with CMake:\n\n```sh\ncmake ..\n```\n\n4. Build the project:\n\n```sh\nmake\n```\n\n### Running the Simulation\n\nAfter building the project, you can run the simulation using the following command:\n\n```sh\n./SimUduck\n```\n\n## Project Structure\n\n- **src/**: Contains the source code files for the simulation.\n- **include/**: Contains the header files.\n- **build/**: Directory for building the project.\n- **CMakeLists.txt**: CMake configuration file.\n\n## Design Patterns\n\nSimUduck employs the following design patterns:\n\n- **Strategy Pattern**: Used to define a family of algorithms (e.g., different flying behaviors), encapsulate each one, and make them interchangeable.\n- **Inheritance and Polymorphism**: Used to create a hierarchy of duck types, where each type can override and extend the base class functionalities.\n\n## Contributing\n\nContributions are welcome! If you would like to contribute to this project, please follow these steps:\n\n1. Fork the repository.\n2. Create a new branch (`git checkout -b feature-branch`).\n3. Make your changes and commit them (`git commit -m 'Add new feature'`).\n4. Push to the branch (`git push origin feature-branch`).\n5. Open a pull request.\n\n\n## Acknowledgments\n\n- Inspired by the classic \"Head First Design Patterns\" book which illustrates the strategy pattern using a duck simulation example.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fomeryildiz%2Fsimuduck","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fomeryildiz%2Fsimuduck","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fomeryildiz%2Fsimuduck/lists"}