Université Pierre et Marie Curie Licence Ingénierie Electronique Développement d'un projet en langage C (LE384) Jeu « Kaa, le python » Objectif du jeu « Kaa, le python » Un python parcoure une scène rectangulaire où apparaissent de temps à autre des pommes. Le python a un corps flexible et une mauvaise digestion : à chaque pomme mangée, il s'allonge de la taille de la pomme. De plus, il a la particularité de ne jamais s'arrêter d'avancer. Enfin le déplacement du serpent est quelque peu particulier : il ne contrôle que la direction de déplacement de sa tête. Le reste du corps suit la tête : chaque section de son corps prends la place de la section qui le précède (comme cela est symbolisé par les flèches dans le schéma ci-dessous). L'objectif du jeu est de manger le plus de pommes possibles sans que le python mange une partie de son corps ou le mur. une pomme corps du serpent tête du serpent Travail demandé On demande de programmer le jeu en respectant les points suivants : – au début du jeu la taille du python est minimum (il n'est composé que de sa tête) – la gestion de son corps doit faire appel à une liste chaînée – les pommes doivent apparaître de manière aléatoirement – la vitesse du python sera réglée par le niveau du jeu. Dans une version plus complexe, on pourra : – ajouter des cachets d'Alka Seltzer qui permettent au python de digérer une (ou plusieurs) pomme avalée (sa taille diminue alors) : ils apparaîtront de manière aléatoire mais à une fréquence moins importante que les pommes et disparaissent au bout d'un moment. – Ajouter des poires ; plus énergisantes que les pommes, non seulement elles augmentent la taille du python mais également sa vitesse. – Ajouter des niveaux de jeu où le décor est plus complexe (des murs ou des obstacles supplémentaires) Université Pierre et Marie Curie Licence Ingénierie Electronique Développement d'un projet en langage C (LE384) Jeu « Ce matin, un lapin... » Objectif du jeu « Ce matin, un lapin... » Un lapin doit survivre en pleine période de chasse. Son objectif est d'échapper aux crocs des chiens que lui envoient un chasseur. Le chasseur fait des aller-retour en haut de l'écran, et lâche de manière aléatoire un de ses chiens sur le lapin. Le lapin peut se déplacer sur la moitié inférieure de l'écran. Le chien ne peut que descendre l'écran à une vitesse constante (composante en ordonnée constante). Par contre, il se dirigera latéralement en direction du lapin (composante en abscisse changeante). chasseur chien lapin Travail demandé On demande de programmer le jeu en respectant les points suivants : - les chiens devront être gérés par liste chainée, - l'apparition des chiens devront être aléatoire mais leur position de départ sera toujours la même que celle du chasseur, - la fréquence d'apparition (probabilité d'apparition à chaque boucle du jeu) et la vitesse des chiens devront être réglés selon le niveau de difficulté. Dans une version plus complexe, on pourra : – ajouter un fusil au chasseur qui tirera des balles de temps à autre en direction du lapin (les balles ne changeront jamais de direction) ; si elles croisent un chien (ou un lapin), elle le tue. Le lapin recevra des points supplémentaires s'il arrive à faire tuer un chien, – Les balles seront bien entendu gérées aussi par une liste chaînée, – plusieurs chasseurs peuvent se partager la moitié haute de l'écran, – des entrées de tunnel sont présents dans la moitié inférieure de l'écran et si le lapin rentre dans un terrier, il réapparaît à la sortie d'un autre terrier. Université Pierre et Marie Curie Licence Ingénierie Electronique Développement d'un projet en langage C (LE384) Jeu « Saute-mouton » Objectif du jeu « Saute-mouton » Un homme a des problèmes d'insomnie. Pour s'endormir, il compte les moutons au dessus desquels il saute virtuellement. Les montons apparaissent aléatoirement à droite de l'écran et le traverse de droite à gauche. L'homme peut se déplacer librement dans la moitié gauche de l'écran. Son objectif est de sauter au dessus d'un maximum de moutons ; attention, s'il se présente devant un mouton et ne saute pas, il « meurt » écrasé par le mouton. mouton homme Travail demandé On demande de programmer le jeu en respectant les points suivants : - les moutons devront être gérés par liste chainée, - l'apparition des moutons devront être aléatoire à la fois temporellement et spatialement (à droite de l'écran certes mais à une hauteur aléatoire), - la fréquence d'apparition (probabilité d'apparition à chaque boucle du jeu) et la vitesse des chiens devront être réglés selon le niveau de difficulté. Dans une version plus complexe, on pourra : - de temps à autre un bélier apparaît ; celui-ci, l'homme ne peut pas sauter au dessus et doit à tout prix ne pas se faire écraser par lui ; le bélier se dirige toujours de droite à gauche à vitesse constante (composante en abscisse constante) mais se dirige en direction de l'homme (composante en ordonnée variable selon les positions relatives bélier-homme). - la zone où peut évoluer l'homme est étendue à tout l'écran ; mais les moutons et les béliers peuvent apparaître à droite comme à gauche de l'écran. Lorsqu'un mouton allant de droite à gauche entre en collision avec un mouton allant de gauche à droite ; l'un d'eux doit changer de position selon l'ordonnée (pour ne pas s'écraser mutuellement). Par contre, si un bélier croise un autre bélier ou un mouton, le bélier se cogne sur celui-ci et est éliminé (ainsi que le bélier ou le mouton impliqué dans la collision). L'homme reçoit un bonus pour chaque bélier ainsi éliminé. Université Pierre et Marie Curie Licence Ingénierie Electronique Développement d'un projet en langage C (LE384) Jeu «Squash prisonnier» Objectif du jeu «Squash prisonnier» Un homme fan de squash et de ballon prisonnier décide de réunir les deux jeux ensemble. Le joueur humain peut se déplacer sur la moitié inférieure de l'écran. Il doit renvoyer une balle sur l'autre moitié de l'écran qui rebondit sur tous les murs sauf sur le mur derrière lui. D'autres joueurs (contrôlés par l'ordinateur) font des allers retours sur la moitié supérieure de l'écran ; si la balle les touche par devant, la balle rebondit. Si la balle les touche dans le dos, le joueur touché est éliminé. Si la balle touche le mur inférieur, le joueur humain a perdu. autre joueur balle joueur humain Travail demandé On demande de programmer le jeu en respectant les points suivants : - les joueurs non humains devront être gérés par liste chainée, de temps à autre un nouveau joueur apparaît dans la moitié supérieure de l'écran. - au début, la balle est lancée par le joueur humain ; son angle de départ est fixe (30°) - lorsque la balle rebondit, l'angle « réfléchi » sera le même que l'angle « incident » avec un bruit additionnel aléatoire de quelques degrés. Dans une version plus complexe, on pourra : - considérer plusieurs balles (les balles rebondiront alors sur le mur inférieur, et le joueur humain sera éliminé si une balle le touche dans le dos). - que lorsque la balle rebondit sur un joueur, l'angle « réfléchi » varie en fonction de la position relative de la collision par rapport à la tête du joueur. Université Pierre et Marie Curie Licence Ingénierie Electronique Développement d'un projet en langage C (LE384) Jeu « Saut à l'infini » Objectif du jeu « Saut à l'infini » Un lapin un peu dingue n'arrête pas de sauter. Votre objectif est de le diriger à droite ou à gauche de sorte à ce qu'il rebondisse toujours sur un plateau.. A chaque rebond, la vitesse en ordonnée sera la même au début (vers le haut) et diminuera avec le temps jusqu'à s'inverser (et le lapin chutera alors). Les plateaux descendent du haut vers le bas : ils apparaissent de manière aléatoire et à descende à des vitesses aléatoires. L'objectif est que le lapin ne chute jamais jusqu'en bas de l'écran. Travail demandé On demande de programmer le jeu en respectant les points suivants : - les plateaux devront être gérés par liste chainée. - au début du jeu, le lapin se trouve sur plateau et saute aussitôt. - avec le temps, les chances qu'un nouveau plateau apparaisse diminue. Dans une version plus complexe, on pourra : - considérer que le lapin doive éviter de se cogner la tête contre un plateau au dessus de lui. - le lapin dispose de carottes qu'il peut lancer au dessus de lui pour détruire des plateaux.