{{ Voici ci-dessous des projets faits par mes étudiants de l'année passée, cliquez pour voir en grand ! |Below, here are few projects my students made previous year, click to see the picture full screen! }}
{{ 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. |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. }}
{{Le support de cours se trouve sur le site du parascolaire programmation jeux vidéos. |The course material is on the videogame programming course website. }}
{{ Le code source de ces projets est disponible ici : | The source code of those projects is available here:}} Michal [zip], Arnaud [zip], {{ téléchargez le zip et installez python et pygame pour y jouer ! | download the zip and install python and pygame to play! }}
La correction de ce tutoriel se trouve dans la liste des versions de ma branche 2D_tutorial dans mon dépôt parascolaire-tutorials qui contient plusieurs tutoriels informatiques, ces tutoriels font parties de mon github. Une autre version de ce tutoriel se trouve sur dans la liste des versions de ma branche 2D_tutorial_images. Plus d'infos sur le système de correction ici.
a
, pos
ou ma_position
.
a = 100
par exemple.
#Correction
a
.
#Correction
[150, 80]
mais en [a, 80]
.
#Correction
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 !
#Correction
sens
vaut -1
au début du code.
#Correction
On peut faire deux dessins différents en fonction du sens ! Via des formes géométriques ou des images (voir plus bas).
pygame.draw.polygon(ecran, ROUGE, [[0,50], [100,0], [100,100]])
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]])
#Correction1
#Correction2
draw.polygon
pour que le triangle bouge avec le cercle ?
#Correction1
#Correction2
draw.polygon
pour que a
représente le centre ?
#Correction
Choisissez maintenant un projet ! Si vous êtes à court, choisissez dans la liste en dessous de cette section, ou regardez dans cette longue liste donnant même une correction !
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.
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 !
À la fin des exercices, vous aurez une balle qui rebondit, il vous faut donc rajouter les fonctionnalités de base :
Avec votre vaisseau et vos invader, exterminez les tous !
Plusieurs types d'android :
Plusieurs missiles/types d'armes :
Multijoueur :
Le snake du vieux nokia 3310. Ah vous êtes trop jeune pour avoir connu ce téléphone ? #vieux
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.
Voici ici un jeu similaire sur le même principe.
Je propose de faire cela dans cet ordre :
Multijoueur :
Ici le but sera de faire une version offline de agar.io.
Je propose de faire cela dans cet ordre :
Multijoueur
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.
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.
bombe_haut_droite
, bombe_haut_gauche
, bombe_bas_droite
, bombe_bas_gauche
,
if
pour savoir si vous devez dessiner une bombe dans la case.
Bombe
qui contient le x
et le y
.
On aura donc deux objets, bombe1
et bombe2
.
score
et l'afficher !
Le jeu est actuellement facile car on voit les bombes.
a_perdu
qui vaudra 1 si le joueur a perdu et 0 si le joueur est encore en jeu.
En fonction de cette variable vous saurez si vous devez afficher l'écran de game over.
a_perdu
par une variable etat_partie
qui vaut 0 si le joueur joue, 1 s'il a gagné et 2 s'il a perdu.
terrain = [0, 1, 1, 0] # deux bombes !
terrain = [[0, 1], [1, 0]] # deux bombes !
taille = 10
qui permettra de facilement changer la taille du jeu.
Il faudra aussi une autre variable qui dit combien de bombes seront placées via total_bombes = 20
par exemple.
Case
qui contiendra une ou deux informations :
nb_bombe
: Le nombre de bombe autour de la case (peut être zéro).
bombe
: Vaudra 1 si c'est une bombe, sinon zéro.
terrain = [0, 1, 1, 0] # deux bombes sur un terrain 2×2 !
Attention, le terrain ne contiendra pas des nombres, mais des objets Case !
terrain = [[0, 1], [1, 0]] # deux bombes sur un terrain 2×2 !
Attention, le terrain ne contiendra pas des nombres, mais des objets Case !
nb_bombe
au hasard pour l'instant pour toutes les cases, et afficher cette valeur dans la case avec du texte.
Vous pouvez également faire varier la couleur en fonction du nombre comme dans le vrai démineur.
nb_bombe
après avoir placé les bombes.
Pour cela je propose un algo comme ceci:
pour chaque case:
n = 0
if bombe à droite de case:
n = n + 1
if bombe en haut de case:
n = n + 1
if bombe en bas de case:
n = n + 1
...
case.nb_bombe = n