Pour ce projet, on voulait faire quelque chose d'intéressant, quelque chose qui ait un défi, et une des possibilités était de faire un jeu de courses de voitures.
Ici, vous serez face à une intelligence artificielle contre laquelle vous jouerez. Pour gagner, il faudra compléter 5 tours. Les contrôles sont assez intuitifs: w ou flèche du haut pour avancer, s ou flèche du bas pour descendre, a ou flèche de droite pour tourner à droite et d ou flèche de gauche pour tourner à gauche.
Comment l’a-t-on codé?:
Pour ce jeu, nous nous sommes divisé la tâche en plusieurs parties:
D’abord, travailler sur l’affichage des éléments du jeu.
Puis, coder les mouvements du joueur.
Ensuite, faire l’intelligence artificielle.
Finalement, faire des touches finales dans l’interface de l’utilisateur.
Nous avons bien-sûr utilisé la bibliothèque Pygame qui nous permettait de facilement coder les affichages et mouvements.
Qu’est-ce qu’on en sort?:
Nous avons appris une nouvelle méthodologie de programmation: la Object Oriented Programming (méthode ou les éléments du jeu sont traités comme des objets avec des caractéristiques, par exemple la voiture avait une accélération, une vitesse maximale, une vitesse de rotation…). Nous avons aussi appris à programmer une intelligence artificielle dans les jeux de course. Enfin, nous sommes heureux d’avoir pu finir l’intégralité du jeu.
C’est un automate cellulaire : ce sont des cellules, sur une grille, qui évoluent par étapes selon des règles très simples. Le but de cet automate est d’imiter les capacités auto reproductrices des êtres vivants.
Concrètement, comment cela est représenté dans notre jeu ? C’est une grille blanche, composée de cellules blanches, qui soit restent blanches ou deviennent noires, selon les règles de l’algorithme. Ces règles sont les suivantes :
une cellule devient vivante(la case devient noire) si elle possède trois cellules voisines vivantes(cases noires).
une cellule vivante le reste si la cellule possède deux ou trois cellules vivantes(noires) voisines.
une cellule meurt si elle possède moins de deux ou plus de trois cases voisines vivantes(la case devient blanche).
Pourquoi ce choix ?
Avec le Jeu de la Vie, les possibilités sont infinies, et si notre projet marchait vraiment bien, on pourrait s’amuser à faire plein de configurations différentes.
Comment l'avons-nous codé ?
Nous avons utilisé le langage de programmation Python, et Tkinter, la bibliothèque graphique pour Python.
Mode d’emploi
Il faut noircir les cases de la grille blanche, et dessiner le motif que vous voulez. Ensuite, il n’y a plus qu’à appuyer sur le bouton Start et le reste se fait tout seul, vous n’avez plus qu’à regarder votre motif évoluer! Il y a également d’autres boutons pour modifier la vitesse de l’exécution, la décomposer étape par étape ou encore remplir la grille aléatoirement !
Cliquez sur ce lien pour tester un simulateur du jeu de la vie :
Lors de ce second semestre, dans le cadre du cours de NSI, nous avons codé le jeu du morpion sur python avec une interface graphique et un “ordinateur intelligent”.
→ Pourquoi ce projet?
C’est un projet à notre niveau, qui allait nous apporter des nouvelles connaissances, comme comment faire une interface graphique sur python? De plus, nous avons choisi ce projet, puisque coder un jeu est plus ludique qu’un programme mathématique et que M.Perez semblait très content de l’idée.
→ Comment on l’a réalisé?
On a commencé le projet sans interface, donc seulement sur l'interpréteur. Puis nous avons découvert Tkinter et codée une interface graphique à l’aide de plusieurs fenêtres, d’images et même de boutons.
→ Comment il marche?
Nous avons plusieurs fenêtres: celle d’accueil avec les règles du jeu et le bouton start pour commencer, puis celle avec la grille de jeu (3X3). Arrivée sur la grille du jeu, il vous suffit de cliquer sur la case, où vous souhaitez que votre motif apparaissent et observer le tour de l’ordinateur. Une partie se termine lorsque trois motifs identiques sont alignés (en ligne, diagonale et colonne) ou lorsque la grille est remplie, mais attention, une nouvelle partie se lance. Il faut gagner 5 parties pour remporter la victoire et inversement, l’ordinateur intelligent doit vous battre 5 fois et vous perdez alors. Puis une image correspondant à la situation s’affiche et le jeu est fini.
→ Qu’est ce que cela nous a apporté?
Ce projet a été enrichissant, nous avons appris comment utiliser une interface graphique sur Tkinter mais aussi faire une intelligence artificielle. Nous avons à la fin un jeu qui fonctionne sans bugs et qui est beau!
Dans le cadre de la NSI, en première, nous devons réaliser des projets en vue de s’améliorer à la programmation. Dans notre cas, nous avons réalisé “Le jeu de la poule”, puisqu’on souhaitait enrichir nos connaissances de ‘Pygame’, une bibliothèque python. Grâce à ce projet, on a appris en s’amusant, c’était vraiment ludique. En plus de cela, les possibilités sont infinies, on peut choisir ce qu’on veut. Notre jeu consiste à ramasser des graines qui tombent, en bougeant une poule avec des flèches, pendant un temps impartis de 30 secondes.
Pour notre 1er projet d’NSI (notre 3eme de cette année) nous avons décidé de recréer le jeu d’arcade Asteroids développé par Atari. Dans Asteroids, le joueur contrôle le vaisseau spatial, et le but est de survivre le plus longtemps possible en se faisant attaquer par des astéroïdes, un score est généré et augmente à chaque fois qu’on détruit un astéroïde.
Présentation générale/ Description du projet
Description / mode d’emploi
le jeu se présente sous forme d’un jeu 2D dans lequel on est introduit avec un menu qui nous montre 3 choix : “Single Player”, “Multi Player” et “Quit”. Pour se déplacer dans le menu, on utilise “flèches haut” pour monter dans les choix ou “flèche bas” pour descendre dans les mêmes choix. finalement pour sélectionner un choix presser la touche “espace”.
Si “Single Player” est sélectionné, le jeu commence directement. Le vaisseau est placé au centre du terrain et des astéroïdes commencent à apparaître (seul les grands apparaissent). Pour avancer, on appuie sur la touche “flèche haut” ou “w” (on n’a pas la possibilité de reculer). Pour tourner, les touches “flèche droite” ou “d” pour le sens horaire et les touches “flèche gauche" ou “a” pour le sens horaire. finalement pour tirer, la touche “espace”. Le jeu se déroule sans limite de temps et le but est de détruire un maximum d’astéroïdes en tentant d’avoir le plus haut score. pour détruire les astéroïdes, ilfaut en toucher un avec les projectiles. Les grands astéroïdes donnent 100 points quand détruits et se divisent en plusieurs patits astéroïdes qui quand détruits donnent 50 points.
Si “Multi Player” est sélectionné, le menu propose 2 choix, si le joueur veut créer une nouvelle partie ou joindre une partie. ・Si le joueur choisit de créer une nouvelle partie(dans ce cas le joueur est l’hôte de la partie), il doit entrer le nombre de joueurs et son nom( qui va être utilisé pour distinguer son propre vaisseau des autres). Ensuite il devra attendre jusqu’à que tous les joueurs se connectent. L'adresse IP(adresse privée et non publique) de son ordinateur va être affichée dans un coin afin que les autres joueurs puissent avoir facilement l’adresse de l’hôte. ・Si le joueur choisit de joindre une partie (dans ce cas le joueur est un client), il doit entrer son nom et l'adresse IP de l’ordinateur où la partie est crée. Une fois la partie commence, tout se déroule comme dans single player mais avec d’autres joueurs, mais le score est la somme des scores de chaque joueur. Dans le mode multiplayer, on a réalisé une système pour détecter un timeout(=quand un autre ordinateur qu’on communique ne répond pas) : ・Chez le client, s' il reçoit pas de signal(message) de l’hôte pendant 10 secondes(cette valeur peut être changée en modifiant GameComponents/locals.py), le client va se déconnecter automatiquement de la partie et affiche une message au joueur. ・Chez l’hôte, même s'il trouve un joueur qui ne répond plus, il traite le joueur comme s' il était toujours là(c’est-à-dire que le vaisseau du joueur ne bouge plus sur l’écran des autres joueurs) .
Finalement, si “Quit” est sélectionné, la fenêtre se fermera