Logo Pierre Techer
Les projetsLe blog
Drapeau français
Drapeau englais
Githubtecherpierre.pro@gmail.com

C Pong

Un jeu de Pong minimaliste en C, développé avec SDL2 pour approfondir mes connaissances en programmation bas niveau. Ce projet met l’accent sur la compréhension du fonctionnement d’un programme, tout en offrant une expérience de jeu simple en multijoueur local. Une manière ludique d’explorer les bases du développement bas niveau.

Pong game screen

🎯 Pourquoi ce projet ?

J’ai choisi de réaliser ce projet pour approfondir mes compétences en langage C et découvrir plus en détail la bibliothèque SDL2. Après avoir acquis les bases du langage, je voulais mettre en pratique mes connaissances dans un projet concret, tout en explorant les aspects graphiques et interactifs que permet SDL2. Reproduire un jeu aussi simple et emblématique que Pong m’a permis de me concentrer sur la logique du code, la gestion des événements et l’affichage, sans être freiné par une complexité excessive.

📦 Fonctionnalités

  • 🎮 Joueur contre joueur : Deux joueurs peuvent s’affronter en temps rĂ©el, chacun contrĂ´lant sa propre raquette via le clavier.
  • đź§± Physique simplifiĂ©e : La balle rebondit dynamiquement sur les murs et les raquettes, rendant chaque Ă©change un peu plus imprĂ©visible.
  • đź§® Système de score : Lorsqu’un joueur laisse passer la balle, l’adversaire marque un point. Le score est affichĂ© Ă  l’écran pour suivre la progression de la partie.

🛠️Technologies utilisées

  • 🔤 C : Un langage bas niveau, rapide et exigeant, parfait pour se rapprocher des fondations du dĂ©veloppement logiciel.
  • 🖥️ SDL2 : Une bibliothèque graphique lĂ©gère mais puissante, idĂ©ale pour gĂ©rer la fenĂŞtre, les graphismes 2D et les entrĂ©es clavier.
  • ⚙️ Makefile : Un outil simple mais essentiel pour automatiser la compilation du projet, lancer le jeu ou nettoyer les fichiers gĂ©nĂ©rĂ©s.

đź’ˇPourquoi avoir choisi le language C ?

À première vue, le langage C peut paraître très complexe comparé à d'autres langages comme Python ou JavaScript. Il offre des fonctionnalités plutôt basiques, impose un typage strict, une gestion des dépendances parfois fastidieuse, et dans certains cas, nécessite même de gérer soi-même l'allocation de la mémoire. Pourtant, ces contraintes cachent plusieurs avantages majeurs, faisant du C un langage particulièrement utile lorsqu’il est utilisé dans le bon contexte.

1. ⚙️ Proche du matériel, loin de l’abstraction

Le C est un langage réputé pour sa rapidité d’exécution et sa proximité avec le système. Il est couramment utilisé dans les parties critiques d’un programme, là où les performances sont essentielles et où une gestion fine du matériel est requise, comme dans les systèmes embarqués, les moteurs de jeux ou les noyaux d’OS. Bien que ce ne soit pas nécessaire pour un projet simple comme Pong, utiliser le C ici permet d’explorer ces aspects bas niveau et de mieux comprendre les fondations du développement système.

2. 🔎 Comprendre la programmation à sa source

Apprendre le C, c’est revenir aux bases pures de la programmation : les types, les fonctions, les pointeurs, la mémoire… Chaque concept est manipulé de manière explicite, sans abstractions superflues. En ce sens, coder en C ne se limite pas à apprendre un langage, mais permet de comprendre ce qu’est véritablement un programme et comment les instructions interagissent avec le système. Cette clarté en fait une porte d’entrée précieuse pour saisir les principes fondamentaux que l’on retrouve, sous des formes variées, dans presque tous les langages modernes.

3. 🧩 Un langage pas si “complexe”

Bien qu’il puisse sembler austère au premier abord, le langage C reste fondamentalement simple. Il propose peu d’abstractions et se concentre sur un nombre réduit de concepts clés : variables, types, fonctions, structures… En l’absence de fonctionnalités haut niveau comme les classes, les promesses ou les frameworks, on se concentre sur l’essentiel. Cela le rend au final plus prévisible et plus facile à maîtriser lorsqu’on souhaite écrire un code clair, structuré et sans magie cachée.

📌 En bref

Le langage C est particulièrement adapté aux contextes où la performance et le contrôle du matériel sont essentiels. Il permet aussi de mieux comprendre les bases de la programmation, ce qui en fait un excellent choix pour apprendre ou développer des systèmes proches du matériel.

🎮 Comment jouer au jeu

  1. ContrĂ´les du joueur 1 (gauche) :
    • Utilise les touches W et S pour dĂ©placer la raquette vers le haut et vers le bas.
  2. ContrĂ´les du joueur 2 (droite) :
    • Utilise les touches ↑ et ↓ pour dĂ©placer la raquette vers le haut et vers le bas.
  3. Objectif du jeu :
    • L'objectif est de marquer des points en envoyant la balle dans le but de l'adversaire. Chaque fois que la balle touche la zone derrière un joueur, l'adversaire marque un point.
  4. Lancer le jeu :
    • Clonez le repository GitHub du projet.
    • Pour lancer le jeu, assurez-vous d'avoir installĂ© les dĂ©pendances nĂ©cessaires et utilisez la commande
make run