{"id":652,"date":"2018-06-21T09:33:41","date_gmt":"2018-06-21T08:33:41","guid":{"rendered":"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/?p=652"},"modified":"2018-06-21T09:33:41","modified_gmt":"2018-06-21T08:33:41","slug":"space-invaders","status":"publish","type":"post","link":"https:\/\/blog.univ-angers.fr\/polytech_2A\/2018\/06\/21\/space-invaders\/","title":{"rendered":"Space Invaders"},"content":{"rendered":"<div style=\"text-align:justify\">\nNous sommes Adrien Chotard et Pierre Engelstein, deux \u00e9tudiants d\u2019EI2.  Nous avons r\u00e9alis\u00e9 une adaptation du Space Invaders, un jeu cr\u00e9\u00e9 \u00e0 l\u2019origine par  Tomohiro Nishikado en 1978.<\/p>\n<div style=\"text-align:center\"><img decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/en\/2\/20\/SpaceInvaders-Gameplay.gif\" alt=\"Space Invaders Original\" \/><br \/>\n<em>Le space invaders original<\/em>\n<\/div>\n<div style=\"text-indent: 40px\">\nLe but de ce projet \u00e9tait de travailler avec le langage de programmation Python et d\u2019organiser un projet de d\u00e9veloppement avec toutes les probl\u00e9matiques qui entrent en jeu\u00a0: la d\u00e9couverte d\u2019un nouveau langage, l\u2019organisation en groupe et le d\u00e9veloppement d\u2019algorithmes sp\u00e9cifiques<br \/>\n<\/br><br \/>\nLa vid\u00e9o suivante montre le rendu final du jeu :<br \/>\n<div style=\"width: 584px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-652-1\" width=\"584\" height=\"329\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2018\/06\/SpaceInvader_Win.mp4?_=1\" \/><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2018\/06\/SpaceInvader_Win.mp4\">https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2018\/06\/SpaceInvader_Win.mp4<\/a><\/video><\/div>\n<\/div>\n<ul style=\"margin-top:20px;margin-bottom:0px\">\n<li>\n<h2 style=\"font-size:19px\">Le d\u00e9placement du joueur\u00a0:<\/h2>\n<\/li>\n<\/ul>\n<div style=\"text-indent: 40px\">\nCe jeu est cens\u00e9 se jouer sur une borne d\u2019arcade, avec des joysticks. Les entr\u00e9es sont analogiques, et donc pour pouvoir en avoir un aper\u00e7u sur ordinateur nous avons d\u00e9cid\u00e9 de g\u00e9rer le d\u00e9placement du joueur avec la souris. Pour cela, le joueur d\u00e9place la souris et fait bouger en cons\u00e9quence le vaisseau \u00e0 l\u2019\u00e9cran. Si le pointeur de souris est en dehors de la fen\u00eatre de jeu, le vaisseau ne sort pas de la fen\u00eatre mais reste bloqu\u00e9 contre le bord de la fen\u00eatre.\n<\/div>\n<ul style=\"margin-top:20px;margin-bottom:0px\">\n<li>\n<h2 style=\"font-size:19px\">Le d\u00e9placement des aliens\u00a0:<\/h2>\n<\/li>\n<\/ul>\n<div style=\"text-indent: 40px\">\nLe principe est que chaque monstre se d\u00e9place l\u2019un apr\u00e8s l\u2019autre. Ainsi, le premier (en bas \u00e0 gauche) avance, puis peu de temps apr\u00e8s le deuxi\u00e8me, puis encore apr\u00e8s le troisi\u00e8me, etc, en suivant un d\u00e9filement de gauche \u00e0 droite, puis de bas en haut. Ensuite, d\u00e8s lors que l\u2019un des monstres est arriv\u00e9 \u00e0 l\u2019autre bout de la fen\u00eatre, tous les monstres (en partant du premier) repartent dans l\u2019autre sens.\n<\/div>\n<ul style=\"margin-top:20px;margin-bottom:0px\">\n<li>\n<h2 style=\"font-size:19px\">La gestion des collisions\u00a0:<\/h2>\n<\/li>\n<\/ul>\n<div style=\"text-indent: 40px\">\nAfin de d\u00e9tecter lorsqu\u2019une balle touche un ennemi (ou qu\u2019une balle ennemie touche le joueur), nous avons impl\u00e9ment\u00e9 une gestion des collisions. Pour cela, nous avons consid\u00e9r\u00e9 des bo\u00eetes de collision rectangulaires autour de chaque entit\u00e9, et si une des bo\u00eetes de collision intersecte avec une autre (celle d\u2019une balle avec celle d\u2019un alien ou du joueur), alors il y a collision. D\u00e8s lors, un script faisant perdre de la vie aux aliens, ou tuant le joueur (Game Over) se lance.\n<\/div>\n<ul style=\"margin-top:20px;margin-bottom:0px\">\n<li>\n<h2 style=\"font-size:19px\">Les menus\u00a0:<\/h2>\n<\/li>\n<\/ul>\n<div style=\"text-align:center\">\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2018\/06\/SpaceInvader_Menu-300x181.png\" alt=\"Menu Space Invaders\" width=\"300\" height=\"181\" \/><br \/>\n<em>Le menu de d\u00e9marrage<\/em><\/div>\n<table border=\"0\">\n<tr>\n<td style=\"float:center;width:50%\">\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2018\/06\/SpaceInvader_Win-300x181.png\" alt=\"Menu Gagn\u00e9\" width=\"270\" height=\"181\" \/>\n<\/td>\n<td style=\"float:center;width:50%\">\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2018\/06\/SpaceInvader_Lost-300x181.png\" alt=\"Menu Perdu\" width=\"270\" height=\"181\" \/>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"float:center;width:50%;text-align:center\">\n<em>Menu de fin &#8211; Gagn\u00e9<\/em>\n<\/td>\n<td style=\"float:center;width:50%;text-align:center\">\n<em>Menu de fin &#8211; Perdu<\/em>\n<\/td>\n<\/tr>\n<\/table>\n<div style=\"text-indent: 40px\">\nNous avons mis en place un syst\u00e8me de menus de mani\u00e8re \u00e0 naviguer, lancer la partie, afficher les scores puis de quitter le jeu. Pour cela, nous avons mis en place un syst\u00e8me de boutons personnalis\u00e9s, nous permettant de naviguer au clavier entre eux (toujours dans l\u2019optique d\u2019une adaptation pour borne d\u2019arcade). De m\u00eame, pour cette partie du projet, nous avons d\u00e9cid\u00e9 de cr\u00e9er des titres pour le menu principal et les menus de fin (Perdu et Gagn\u00e9).\n<\/div>\n<ul style=\"margin-top:20px;margin-bottom:0px\">\n<li>\n<h2 style=\"font-size:19px\">Conclusion :<\/h2>\n<\/li>\n<\/ul>\n<div>\n<p>Nous pourrions am\u00e9liorer et adapter ce projet, par exemple en le faisant fonctionner via une raspberry pi reli\u00e9e \u00e0 un joystick, mais aussi l&#8217;adapter sur un autre langage de programmation de mani\u00e8re a aborder le probl\u00e8me d&#8217;une optique diff\u00e9rente.<\/p>\n<p>Nous remercions Mr. Fasquel, notre encadrant pour ce projet.<\/p>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Nous sommes Adrien Chotard et Pierre Engelstein, deux \u00e9tudiants d\u2019EI2. Nous avons r\u00e9alis\u00e9 une adaptation du Space Invaders, un jeu cr\u00e9\u00e9 \u00e0 l\u2019origine par Tomohiro Nishikado en 1978. Le space invaders original Le but de ce projet \u00e9tait de travailler &hellip; <a href=\"https:\/\/blog.univ-angers.fr\/polytech_2A\/2018\/06\/21\/space-invaders\/\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":46634,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[147],"tags":[],"class_list":["post-652","post","type-post","status-publish","format-standard","hentry","category-147"],"_links":{"self":[{"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/posts\/652","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/users\/46634"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/comments?post=652"}],"version-history":[{"count":0,"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/posts\/652\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/media?parent=652"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/categories?post=652"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/tags?post=652"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}