images bannieres

Mathgames

Cours de mathématiques pour la programmation de jeux vidéo

Accueil

Bienvenue sur ce modeste site web sans prétention où je vous présente plusieurs cours de mathématiques de base pour la programmation de jeux vidéo, j'ai choisi comme sujets la trigonométrie, les vecteurs et une partie infime de l'analyse. Ensuite sous la rubrique « programmation », nous étudierons des différents algorithmes d'un jeu vidéo avec avion mère qui vise sur plusieurs séries d'avions avec tir de munitions et animation de collision, on le programmera avec une couche du langage Java orienté objet dans un IDE (mot anglais, pour integrated development environment) qui veut dire environnement de développement intégré et on utilisera Processing* pour programmer votre jeu vidéo. Cela ressemblera à la vidéo ci-dessous qui est le projet de jeu vidéo UNITÉ-1,* un jeu vidéo « rétrogaming » remake de 1942* que je viens tout juste de finir de programmer fin décembre 2016 en version web avec la participation de Carlos un ami d'enfance qui de par son expérience est un programmeur averti, nous avons commencé l'apprentissage des langages de programmation informatique en tant qu'autodidacte, en 1983, jusqu'à aujourd'hui où vous lisez ces lignes. Pour l'instant, le jeu vidéo se lance sur Linux, Mac OS X, Windows et sur plateforme Android (mobile et tablette).


Note : Processing* est un environnement de programmation qui a été conçu pour la création graphique interactive. C'est un logiciel open source qui repose sur une couche Java orienté objet. Son principe majeur est la simplicité, tant dans la syntaxe du langage que dans la mise en oeuvre des programmes. Il permet de générer des images 2d et 3d et il peut être étendu à l'animation, à la gestion de flux vidéos, à la génération et à la manipulation de sons, à l'interfaçage d'entrées-sorties, etc...


Note : UNITÉ-1* contient plus de 4 350 lignes de code, un fichier source index HTML, 29 fichiers sources Javascript, un dossier data pour toutes les ressources des images et un dossier sounds pour tous les bruitages sonores. Toutes les images et décors du jeu vidéo ont été développées par Claire Méjean, qui assure une remarquable aptitude dans son métier d'infographiste. Ce jeu vidéo contient cinq niveaux au total (Océan, Désert, Montagne, Forêt et agglomération) avant d'arriver à la finale où se trouvent les Boss et leurs vassaux au-dessus de l'Océan.


Note : 4 350 lignes de code, c'est infinitésimal par rapport à des programmes ou application qui font des dizaines de millions de lignes de code, mais aussi les développeurs sont des centaines à programmer sur de tel projet.

Exemple : 4 350 << 15 753 931 lignes de code.


En langage mathématique le symbole << veut dire « beaucoup plus petit que ».


Note : 1942* est un jeu vidéo 2d de type shoot them up à défilement vertical sorti en 1984 sur système d'arcade Z80 Based de Capcom, puis porté par la suite sur de nombreuses autres machines. Il s'agit du premier jeu développé par Yoshiki Okamoto pour Capcom.

article wikipédia.


Voici ces deux versions différentes de ces jeux vidéo, 1942 et UNITÉ-1 un jeu vidéo « rétrogaming » que j'ai programmé avec une couche du langage Java orienté objet dans l'environnement de développement intégré de Processing qui a débuté, en 2013, pour arriver jusqu'au bout du programme, en 2015, puis une seconde version web finalisée cette fois-ci programmée avec le langage Javascript dans l'environnement de développement intégré de P5.js, en 2016, pour pouvoir l'intégrer dans cette page web. Vous pouvez voir les démos ci-dessous.


Retrogaming

Nostalgie de la décennie des années 1980

J'ai du respect pour Yoshiki Okamoto et si je pouvais le rencontrer s'il est toujours de ce monde, je lui dirais que son jeu vidéo original 1942 est tout simplement meilleur sur tous les points de vue que le jeu vidéo que j'ai développé UNITÉ-1 pour plusieurs raisons dont une, c'est que 1942 a été programmé avec le langage de programmation assembleur de bas niveau* sur la base d'un microprocesseur 8 bits, c'est-à-dire pour les connaisseurs que son jeu vidéo a un grain unique et inimitable que les PC avec processeur 64 bits de maintenant ne peuvent pas et ne pourront jamais reproduire à l'original d'un microprocesseur 8 bits de l'époque de la décennie des années 1980.

bas niveau* : un langage de programmation de bas niveau* ne fournit que peu d'abstraction par rapport au jeu d'instructions du processeur de la machine. Les langages de bas niveau sont à opposer aux langages de haut niveau, qui permettent de créer un programme sans tenir compte des caractéristiques particulières (registres, etc) de l'ordinateur censé exécuter le programme.

Le langage machine et le langage d'assemblage sont les archétypes de langages de bas niveau, puisqu'ils permettent de manipuler explicitement des registres, des adresses mémoires, des instructions machines.

article wikipédia.

En gros, dans le jargon des langages de programmation informatique, le langage machine (binaire) et l'assembleur (hexadécimal) sont des langages de bas niveau qui sont très proche de la machine qui compose un ordinateur (électronique numérique), ensuite vient les langages C puis C++ toujours de bas niveau mais plus lisible.

Voici un exemple de code source de ces différents langages sortis respectivement dans l'ordre, de la décennie des années 1930 à la décennie des années 1980 :

Langage binaire de bas niveau

langage binaire

Langage hexadécimal de bas niveau

langage hexadécimal

Langage C de bas niveau mais plus lisible

langage hexadécimal

Langage C++ de bas niveau mais plus lisible

langage hexadécimal


Note : en fait UNITÉ-1 n'est pas le premier jeu vidéo que j'ai développé, le premier jeu vidéo que j'ai développé s'appelait Serpentine et je l'avais copié sur un jeu vidéo sur borne d'arcade qui s'appelait Nibbler, l'ancêtre du jeu du serpent que Nokia a repris, je l'avais compliqué avec des mines dans un labyrinthe avec cinq tableaux, je l'avais programmé sur un micro ordinateur de marque Thomson TO 7/70 avec le langage Basic en 1985 dans une association informatique qui s'appelait A.D.E.M.I.R gérer par Mr Yves Janin, ce programme ou listing du programme mesurait plus de deux mètres de hauteur, à ce moment-là, un étudiant chinois nous donnais des cours d'algorithmie tous les samedis après-midi. Mr Yves Janin a travaillé en Algérie dans sa jeunesse et c'est de lui qu'est venu l'idée de faire rentrer les ordinateurs TO 7/70 et MO 5 dans toutes les écoles de la France entière dans la décennie 1980 pour que les écoliers puissent avoir une éducation de l'informatique et du numérique.

Nibbler sur borne d'arcade (1982)

new game

Si vous me lisez Mr Yves Janin, je vous remercie pour ce que vous avez fait à l'époque pour la jeunesse là ou je vis et pour le reste de la jeunesse française, cela ma propulser là où j'en suis en informatique et ma emmener dans d'autres domaines des sciences. Je me rappelle d'une équipe de programmeurs qui ne rigolait vraiment pas du tout, tous des barbus, des vrais hackers où des gourous de l'informatique si vous préférez nous avaient confié une tâche à nous tous dans l'association de basculer des listings de programme qu'ils avaient écrit en langage hexadécimal depuis des ordinateurs Apples IIe connecter sur le réseau du minitel sur toute la France, cela nous a pris des jours, ce programme était une application sur la prévention domestique et tout le monde pouvait y accéder ensuite depuis leur minitel dans toute la France.

1942

1942 sur borne d'arcade : version original de Yoshiki Okamoto (1984)

UNITÉ-1

Voici UNITÉ-1, le second jeux vidéo retrogaming, je viens de finir de le développer fin décembre 2016 où votre objectif sera de détruire cette horde de renégats ayant pris d'ample territoire sur tous les continents, vous devrez tout faire pour les freiner et les anéantir une fois pour toutes, UNITÉ-1 est un jeu vidéo fictif.

UNITÉ-1 remake de 1942 par himalaya2004 (2016)


Vous pouvez cliquer sur l'image ci-dessous pour jouer en ligne.

new game

War in Space

Voici le troisième jeu vidéo, War in Space, je viens de finir de le développer en novembre 2017, ce jeu vidéo contient quatre niveaux avec bruitage sonore, la durée totale du jeu est d'environ 45 minutes en l'ayant programmé avec l'horloge interne du PC, c'est une suite du précédent jeu vidéo UNITÉ-1 qui se déroulait au dessus de la planète terre, pour cette suite logique qui se passe en périphérie de la planète terre dans la zone de l'orbite terrestre basse allant jusqu'à 2 000 kilomètres d'altitude, située entre l'atmosphère et la ceinture de Van Allen, cette fois-ci, Il faudra anéantir cette horde de renégats et leur flotte de véhicule spatiaux et couper toutes les communications de leurs satellites transmettant des ondes radio vers la terre. Ce jeu vidéo War in Space est fictif.

Note : si vous jouer à ce jeu vidéo, en arrivant entre la fin du niveau deux et un petit peu après le niveau trois, vous vous apercevrez que la musique du jeu s'arrête toute seule, mais les bruitages sonores continue, j'ai décelé un bug* informatique que je n'arrive pas à corriger et je n'ai pas l'esprit à cela pour le moment pour rectifier ce bug de ma part dans le codage de ce programme qui contient plus de 3 130 lignes de code, sinon le jeu est jouable sans problème, en fait, quand la musique du jeu s'arrête, il faut couper le son et le remettre de nouveau si vous le voulez, mais le problème persiste un peu plus loin dans le temps et ainsi de suite.

Note : en informatique, un bug* (mot anglais bug) ou bogue (au Nouveau-Brunswick, au Québec et en France) est un défaut de conception d'un programme informatique à l'origine d'un dysfonctionnement.

article wikipédia.

War in Space par himalaya2004 (2017)


Vous pouvez cliquer sur l'image ci-dessous pour jouer en ligne.

jeu vidéo War in Space

Lunar Lander

Un peu de physique avec Newton et Lunar Lander, de nouveau, je vous présente le quatrième jeu vidéo avec simulation de la gravité et bruitage sonore, je viens de finir de le developper fin décembre 2017, ce jeu contient plus de 2 275 lignes de code et simule l'atterrissage ou l'alunissage d'un spacecraft sur la lune, ce jeu contient dix stages et ressemble beaucoup aux jeux vidéo sur console des années 80, je le voulais vintage, rétrogaming, simple graphiquement et avec des couleurs sobres. Je viens de m'apercevoir que j'aurais dù diviser par dix l'échelle de l'altitude du spacecraft, je le ferais plus tard dans une nouvelle mise à jour de ce jeu vidéo Lunar Lander si j'ai le temps. Une des consoles les plus vintage qui a exister sortie, fin 1982, était la console de jeux « vectrex » qui a cessé d'être produite en 1984 après le krach du jeu vidéo de 1983. Vous pourrez voir ses caractéristiques « ici ».

Lunar Lander par himalaya2004 (2017)


Vous pouvez cliquer sur l'image ci-dessous pour jouer en ligne.

new game

Lives on earth

De nouveau, je vous présente le cinquième jeu vidéo Lives on earth, je viens de finir de le développer au mois d'août 2018, ce jeu video contient plus de 4 350 lignes de code, ce jeu vidéo se passe dans l'espace avec défilement de différentes planètes et fini au-dessus de la planète terre, votre objectif sera de détruire cette horde de renégats ayant semé le désordre sur terre et voulant fuir vers d'autres planète. Lives on earth est un jeu vidéo fictif.

Lives on earth par himalaya2004 (2018).


Vous pouvez cliquer sur l'image ci-dessous pour jouer en ligne.

new game

Space Invaders

Voici Space Invaders, un jeu vidéo programmé par Tristan Brismontier qui l'a mis sur Internet que j'ai ensuite récupéré en ligne pour lui faire de la rétro-ingénierie (anglais: reverse engineering*), son jeu vidéo est en noir et blanc avec les blocs de défense verte et avec la participation de Carlos, nous avons hacker les codes sources du programme en lui rajoutant 15 fonds d'écran tirés aléatoirement avec le nombre de blocs de défense qui varie suivant les différents niveaux sur le thème de l'espace et nous avons rajouté une icône (on/off) pour les bruitages sonores. Au passage, j'ai redessiné le graphique du canon dans la version hacker, les démos de ces deux jeux vidéo, sont ci-dessous.

Note : reverse engineering* veut dire activité qui consiste à étudier un objet pour en déterminer le fonctionnement interne ou sa méthode de fabrication.

article wikipédia.

SpaceInvader

Space Invaders par Tristan Brismontier

Vous pouvez cliquez sur l'image ci-dessous pour jouer en ligne.

SpaceInvader

Space Invaders version hacker par Carlos et himalaya2004 (2013)

Télécharger la version hacker de Space Invaders « ici ».


Cette version est pour les systèmes Windows mais en bas de cette page web, vous avez un lien de téléchargement pour la version Linux, pour la versions Mac OS X, la version Linux devrait être compatible car ces deux derniers systèmes son programmé sur un même noyau système commun qui se nomme Unix.


Vous pourrez voir plus bas sur cette page web quelques programmes que j'ai développés avec p5.js, c'est une nouvelle version pour le web sorti, en 2014, de Processing qui remplace l'ancienne version web de Processing.js et vous pourrez visionner les vidéos de mes projets informatiques sur Youtube ou sur votre navigateur préféré (Google ou autre navigateur) en tapant himalaya2004.


Applications de géométrie

Je vous présente une application de bureau cette fois-ci que j'ai programmée avec le langage Java orienté objets dans l'environnement de développement intégré Netbeans, en 2008 et remis au goût du jour, en 2014, dans l'environnement de développement intégré Eclipse qui se nomme MathGéo, ce programme calcule les aires, périmètres, volumes de plusieurs figures géométriques et fait quelque conversion d'unité de mesure. Je vous laisse voir aussi la même application de Mathgéo en version web que j'ai nommé cette fois-ci MathGéométrie que j'ai développé, en 2014, avec les purs langages HTML, CCS3 et Javascript avec la participation de Carlos qui sans lui n'aurait pas vu le jour dans cette version bien définie. Les illustrations des figures géométriques de la version bureau et web, sont de Claire Méjean encore une fois.

MathGéo (2008 - 2014)

Télécharger la version de MathGéo « ici ».

géométrie géométrie géométrie

MathGéométrie (2014)

Cliquer sur l'image ci-dessous pour essayer MathGéométrie en ligne.

géométrie

Note : il vous faudra la machine virtuelle Java d'installé pour que la version bureau de MathGéo puisse s'ouvrir sur votre PC, cette version est multiplate-forme, c'est-à-dire que cette application peut s'ouvrir sur les systèmes Linux, Mac OS X, et Windows.


Système de positionnement par satellites de Galileo

La vidéo ci-dessous est une simulation sur le futur système de positionnement par satellite de Galileo européen, que j'ai entièrement programmé avec une couche du langage Java orienté objet dans l'environnement de développement intégré de Processing, par contre pour la partie mathématique, j'ai été aidé par François Foucault un professeur de mathématiques pour positionner aux coordonnées sphériques les 30 satellites répartis sur trois orbites différentes du système Galileo.

Pour arriver à ces résultats, j'ai récupéré toutes les bonnes altitudes, latitudes et longitudes de chaque satellite sur leurs trois orbites respectivement différente positionné dans l'espace dans un livre de science qui décrit le système de positionnement par satellite de Galileo. Au passage, je remercie encore le professeur François Foucault qui m'a appris ce que sont que les coordonnées sphériques et bien plus encore et qui servent à repéré un point (Exemple : satellite, projectile, avion ou hélicoptère etc.) autour d'une sphère (la planète terre ou autres planètes du système solaire ou en dehors du système solaire) dans un espace 3d, finalement, ce n'était pas si dur que ce que je pensais.

Note : ne fête par attention à la texture plaquée sur la planète terre en rotation dans la simulation ci-dessous, vous verrez que le continent de l'Amérique ne se trouve pas à sa place, c'est parce que, j'ai eu un problème avec les paramètres en retouchant le code source quelques mois après avoir développé ce programme qui date du mois de mai 2012 et que je n'ai pas pu remettre en place à cause de la texture de la planisphère.

Programme version Processing de Galileo (2012)


Note : dans la rubrique « satellites artificiels » en bas de cette page web, vous verrez un lien « système de positionnement par satellites de Galileo », cliqué dessus ou « ici » et vous verrez cette simulation que j'ai cette fois-ci programmé, en 2015, avec les purs langages HTML, CSS3, et Javascript en utilisant une bibliothèque graphique qui se nomme three.js avec laquelle on peut programmer des applications 3d.

Programme version Javascript de Galileo avec la bibliothèque three.js (2015)

Définition des coordonnées sphériques

On appelle coordonnées sphériques divers systèmes de coordonnées de l'espace qui généralisent les coordonnées polaires du plan. Un point de l'espace y est repéré par la distance à un pôle et deux angles. Ce système est d'emploi courant pour le repérage géographique : l'altitude, la latitude, et la longitude sont une variante de ces coordonnées. Plusieurs systèmes de coordonnées sphériques sont également employés en astrométrie.

Il existe différentes conventions concernant la définition des angles. Ici nous utilisons la convention P(ρ,θ,φ), utilisée en mathématiques, où θ désigne la longitude et est compris entre 0 et 2π, et φ désigne la colatitude et est compris entre 0 et π.

article wikipédia.


Web Programmes

J'ai développé 17 programmes ci-dessous entièrement avec P5.js, les mathématiques que j'ai utilisées dans ces programmes ne vont pas beaucoup plus loin que les coordonnées polaires, les vecteurs, les dérivées, la trigonométrie avec quelques fonctions trigonométriques comme l'arc tangent par exemple parmi trois jeux vidéo que j'ai développés comme UNITÉ-1, War in Space et Lives on Earth, quelques équations à deux inconnues pour le programme de croisement de segments et les quatre opérations de base que sont l'addition, la soustraction, la multiplication et la division. J'ai aussi utilisé la physique de Newton avec simulation de la gravité pour les mouvements balistiques avec portés, flèche et temps de vol d'un projectile, mais sans les frottements, de même, j'ai utilisé la physique de Newton encore une fois pour le jeu vidéo Lunar Lander que j'ai développé, j'ai aussi utilisé la trigonométrie 3d avec les coordonnées sphériques pour la simulation du système de positionnement par satellite de Galileo.

science technique science technique simulation satellites Galileo roue trigonométrique trajectoire parabolique balistique montagne maths trajectoires application géometrique croisement de segment nombre d'or balle rebondissante rock trajectoires plages dans UNITÉ-1 nombre d'or War in Space Lunar Lander Lives on Earth

Je remercie les auteurs Marc Séguin, Julie Descheneau et Benjamin Tardif qui on écrit ce livre de physique mecanique de Newton aux éditions « de boeck », ce livre m'a permis d'en savoir un petit peu plus sur cette belle science qu'est la physique et je remercie encore le professeur François Foucault qui m'a appris à transposer les équations de Newton en langage algorithmique. livre d'Algèbre


Sciences mathématiques et physiques

Ce site web ci-dessous présente les sciences des mathématiques et de physiques dont l'algèbre, le calcul différentiel, le mouvement, etc..., le lien est sur l'image.


mathématiques et physiques

Ce site web ci-dessous par contre présente la science physique (mécanique de Newton) d'une manière ludique avec code source à l'appui pour les développeurs, le lien est sur l'image.

physiques jeux vidéo

Note : si vous trouvez des fautes ou des améliorations à faire sur ce site web Mathgames, veuillez bien me le faire savoir que je puisse corriger sur-le-champ en cliquant sur le lien contact. Merci d'avance et bonne lecture jusqu'à la fin, si vous suivez le fil.