{"id":15907723,"url":"https://github.com/laggui/predator-simulator","last_synced_at":"2025-06-20T18:08:03.025Z","repository":{"id":80591060,"uuid":"160588425","full_name":"laggui/predator-simulator","owner":"laggui","description":null,"archived":false,"fork":false,"pushed_at":"2018-12-29T17:57:37.000Z","size":189,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-08T14:10:02.224Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/laggui.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":"2018-12-05T22:49:01.000Z","updated_at":"2018-12-29T17:59:38.000Z","dependencies_parsed_at":null,"dependency_job_id":"68478666-8b6c-4a2f-9ec9-164b53cb6acb","html_url":"https://github.com/laggui/predator-simulator","commit_stats":{"total_commits":96,"total_committers":5,"mean_commits":19.2,"dds":"0.27083333333333337","last_synced_commit":"86201b47132a009844ed25ae7c602ed043f0f050"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/laggui%2Fpredator-simulator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/laggui%2Fpredator-simulator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/laggui%2Fpredator-simulator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/laggui%2Fpredator-simulator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/laggui","download_url":"https://codeload.github.com/laggui/predator-simulator/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246911495,"owners_count":20853654,"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","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":[],"created_at":"2024-10-06T14:02:29.432Z","updated_at":"2025-04-02T23:42:07.381Z","avatar_url":"https://github.com/laggui.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# predator-simulator\n\nProjet dans le cadre du cours de conception et analyse orientée objet.\n\n## À PRENDRE EN CONSIDÉRATION QUAND VOUS \"PULLEZ\" LES CHANGEMENTS DU PROJET\n\nIl semble y avoir un léger problème avec la compatibilité du projet sur différentes machines. En gros, deux problèmes peuvent causer des problèmes à la compilation:\n- Version SDK du projet. On a peut-être des versions différentes, donc changer dans les propriétés du projet: (right-click sur le projet) Properties \u003e Configuration Properties \u003e General \u003e Windows SDK Version: sélectionnez la vôtre.\n- Propriétés Qt.\n\t- Premièrement, sélectionnez la version de Qt que vous avez pour le projet: (right-click sur le projet) Qt Properties \u003e Properties tab \u003e Version: sélectionnez la vôtre.\n\t- Deuxièmement, sélectionnez les modules Qt à utiliser: (right-click sur le projet) Qt Properties \u003e Qt Modules tab: cochez Core, GUI et Widgets.\n\n## Entités Dynamiques\n\nQRunner, QPredator et QSuicideBomber\n\n## Entités Statiques\n\nQWall et QCloningZone.\n\n## Act Of God\n\nL'act of god va geler le déplacement des prédateurs pour un temps donné.\n\n## Paramètres Initiaux\n\nOn doit avoir des sélecteurs qui permettent de définir le nombre de QRunner, QPredator et QSuicideBomber (au minimum). Si on veut, on peut aussi définir des attributs initiaux pour ces classes (ex: vitesse, dommage).\n\n## Gestion de collision (interaction)\n\nExemple sua' coche: http://doc.qt.io/qt-5/qtwidgets-graphicsview-collidingmice-example.html. Par contre, dans notre cas, on n'a pas besoin d'éviter les collisions donc on peut tout simplement vérifier quand une collision se passe et effectuer les changements dans ce cas-ci.\n\nPour ce faire, dans la méthode *advance()* des items à action dominante (ex: les prédateurs **endommagent** les runners - action dominante), on vérifie à l'aide de [QGraphicsItem::collidingItems](http://doc.qt.io/qt-5/qgraphicsitem.html#collidingItems).\n\nPseudo code:\n\n```cpp\nvoid NotreClasse::advance(int phase)\n{\n\t// Récupérer les items qui sont en collision\n\tQList\u003cQGraphicsItem *\u003e collidingItems = collidingItems(); // Par défaut: les items qui overlap avec la shape de l'item et les items qui touchent au contour de l'item\n\t\n\t// Itérer à travers les items et vérifier leur type\n\tforeach (QGraphicsItem *item, collidingItems) {\n\t\tif (auto classeUn = dynamic_cast\u003cNotreClasseUn*\u003e(item)) {\n\t\t\t...\n\t\t}\n\t\telse if (auto classeDeux = dynamic_cast\u003cNotreClasseDeux*\u003e(item)) {\n\t\t\t...\n\t\t}\n\t\t...\n\t}\n\n}\n```\n\n## TO-DO\n\n- [x] PredatorSimulator avec ActOfGod\n- [x] QBasicItem\n\t- [x] QWall\n\t\t- [x] QCloningZone\n\t- [x] QDynamicObject\n\t\t- [x] QRunner\n\t\t- [x] QPredator\n\t\t- [x] QSuicideBomber\n\t- [x] QEcosytem\n\n- [x] **Rapport**\n- [x] **UML**\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flaggui%2Fpredator-simulator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flaggui%2Fpredator-simulator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flaggui%2Fpredator-simulator/lists"}