Tutoriel et idées de projet

English here!

Voici ci-dessous des projets faits par mes étudiants de l'année passée, cliquez pour voir en grand !

Les élèves ont de 14 à 16 ans, ils débutent l'année avec zéro connaissances d'informatique, et finissent par coder ces projets après 16h de programmation avec moi  ! Le rythme est de 1h par semaine, les projets montrés sont les plus développés du groupe, ces étudiants ont également travaillé de leur plein gré à la maison pour améliorer leur projet au cours de l'année.

Le code source de ces projets est disponible ici : Michal [zip], Arnaud [zip], téléchargez le zip et installez python et pygame pour y jouer !

Tutoriel

Le premier défi demandé au cours sera de copier le code de base et d'effectuer ces exercices :

  1. Une balle se déplaçant vers la droite, il faut créer une variable ma_position. Au tout début du code, ma_position = 100 (par exemple). Et à chaque tick (dans la boucle while), on ajoute +1 à ma_position. Finalement, le cercle ne devra plus être dessiné en [30, 80] mais en [ma_position, 80].
  2. Elle avance un peu lentement, comment faire pour qu'elle avance de 5 pixels par tick ?
  3. Elle sort de l'écran... Vu que l'écran est de taille 700×500, il faut rajouter une condition Si la position est plus grande que 700: mettre la position à zéro.
  4. Maintenant la balle reste dans l'écran mais ne rebondit pas, nous faisons ça en trois étapes :
    1. Il faut créer une variable sens qui mémorisera si la balle va à gauche ou à droite. Par exemple, si la balle va à droite sens = 1, et si elle va à gauche sens = -1. À la place de -1 et 1, on peut aussi dire 1 et 2, ou 0 et 1 !
    2. Le déplacement sera donc une condition : Si sens vaut 1: se déplacer à droite, sinon: se déplacer à gauche
    3. Il faut pouvoir changer de sens, si la balle est trop à droite (position plus grande que 700): mettre sens à -1, sinon: si la balle est trop à gauche (position négative): mettre sens à 1..
  5. On peut faire deux dessins différents en fonction du sens ! Par exemple si sens = -1, dessiner un triangle vers la gauche, sinon dessiner un triangle vers la droite. Les triangles peuvent être dessinés avec pygame.draw.polygon(ecran, ROUGE, [[0,50], [100,0], [100,100]]) ou avec une image.
    Un triangle dessiné grâce à la commande pygame.draw.polygon(ecran, ROUGE, [[0,50], [100,0], [100,100]])
  6. Que sera la commande draw.polygon pour que le triangle bouge avec le cercle ?
  7. Quelle est la position du centre du triangle ? Quelle sera la commande draw.polygon pour que ma_position représente le centre ?
  8. Le cercle bleu ne bouge pas, utilise le clavier (version ponctuelle) pour faire pour le faire bouger !
  9. Cependant, ce déplacement est saccadé, il faut appuyer 5 fois sur gauche pour que le cercle avance plusieurs fois, utilise plutôt la version continue des événements pour le faire bouger !

Choisissez maintenant un projet ! Si vous êtes à court, choisissez dans la liste en dessous de cette section.

Vous aurez sûrement besoin des événements clavier et souris, de connaître l'état du clavier et de la souris, de faire des images (ou de la musique) ou d'écrire du texte. Pour trouver des images et des sons, programarcadegames conseille les sites Kenney.nl, OpenGameArt.org, HasGraphics.com pour les images et OpenGameArt.org, www.freesound.org pour les sons.

Afin de structurer son programme, on peut également faire des objets et des fonctions.

Plus de programmation ? Lisez mes fichiers de programmation.

Vous pouvez également lire ma page de math, par exemple pour faire des polygones réguliers.

Pour dessiner un hexagone avec la fonction draw.polygon, on fait des maths !

Ou bien ma page de physique pour faire des effets de gravité ?

Si vous êtes à l'aise et motivé, il est même possible d'apprendre plus, comme écrire dans les fichiers ou bases de données. Faire de la 3D ou du réseau !

Pong

À la fin des exercices, vous aurez une balle qui rebondit, il vous faut donc rajouter les fonctionnalités de base :

Améliorations

Space invaders

Avec votre vaisseau et vos invader, exterminez les tous !

Améliorations

Plusieurs types d'android :

Plusieurs missiles/types d'armes :

Multijoueur :

Snake

Le snake du vieux nokia 3310. Ah vous êtes trop jeune pour avoir connu ce téléphone ? #vieux

Améliorations

Serveuse

Serveuse est un jeu où vous devez gérer une serveuse de restaurant. Des clients arrivent dans votre restaurant à une table, vous marchez jusqu'à leur table et prenez leur commande. Ensuite vous retournez en cuisine pour leur faire parvenir la commande. Vous attendez que les plats soient prêts puis les servez aux clients, Les clients mangent et quand ils partent en payant l'addition vous devez ramenez leur vaisselle en cuisine.

Je propose de faire cela dans cet ordre :

Améliorations

Multijoueur :

Agario

Ici le but sera de faire une version offline de agar.io.

Je propose de faire cela dans cet ordre :

Note sur le déplacement dans toutes les directions

Améliorations

Multijoueur

Bomberman

Jeu d'arcade où des joueurs doivent s'affronter sur un terrain quadrillé en posant des bombes qui détruisent les bombes ou les bomberman.

RPG

Un rpg, comme Zelda en 2D. Ici c'est trop vaste pour vous proposer un projet, libre cours à votre imagination.

Pokemon est également un chouette exemple de RPG.