Tutorial and ideas for a project

Français ici !

Below, here are few projects my students made previous year, click to see the picture full screen!

The students are from 14 to 16 years old, they begin the year with zero knowledge of computing, and finish being able to code those projects after 16h of programming with me! The rate is 1 hour per week, the projets shown are the most developped ones of the group, those include some work at home, those students were naturally motivated to work at home.

The course material is on the videogame programming course website.

The source code of those projects is available here: Michal [zip], Arnaud [zip], download the zip and install python and pygame to play!

Tutorial

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

  1. Quelle est la taille de l'écran, en pixels ?
  2. Vous voyez 3 formes, un rectangle rouge, un grand cercle bleu et un petit cercle vert, ils ont une certaine position et une certaine taille, quelles lignes de code indiquent précisément ces informations ?
  3. Changez la couleur, la position et la taille des éléments, vous pouvez même en dessiner un quatrième. Je rappelle qu'une couleur est définie par 3 entiers entre 0 et 255, indiquant la composante de rouge, de vert, et de bleu, petit rappel ici.
  4. On aimerait que la balle verte se déplace vers la droite, il faut créer une variable que vous appelez comme vous voulez, que ce soit a, pos ou ma_position.
    1. Au tout début du code, ajoutez ma_position = 100 par exemple.
    2. Et à chaque tick (dans la boucle while), on ajoute +1 à ma_position.
    3. Finalement, le cercle ne devra plus être dessiné en [150, 80] mais en [ma_position, 80].
  5. Elle avance un peu lentement, comment faire pour qu'elle avance de 5 pixels par tick ?
  6. 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.
  7. Comment faire pour que la balle avance vers la gauche ?
  8. Comment faire pour que la balle commence à droite de l'écran ?
  9. 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. Vérifiez que la balle va vers la gauche quand vous imposez que sens vaut -1 au début du code.
    4. 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..
  10. 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]])
  11. Que sera la commande draw.polygon pour que le triangle bouge avec le cercle ?
  12. Quelle est la position du centre du triangle ? Quelle sera la commande draw.polygon pour que ma_position représente le centre ?
  13. Le cercle bleu ne bouge pas, utilise le clavier (version ponctuelle) pour faire pour le faire bouger !
  14. 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.