Archives de catégorie : 2018 Programmation d’un jeu en Java – Pong

Programmation du Jeu Pong en Java – Publication du code sur GitHub ! (6/6)

Maintenant que j’ai fini de coder le jeu Pong, je veux que tout le monde puisse en voir le code source, pour le modifier si souhaité.

Pour cela j’ai décidé de publier mon programme sur le site GitHub.

GitHub

GitHub est un site web sur lequel on peut publier le code source de ses projets java.

J’ai un compte GitHub « Wollef ». On peut y accéder à l’URL https://github.com/wollef.

Configuration et utilisation de Git en local

Installation de eGit

Pour publier le code source depuis Eclipse sur GitHub il faut installer eGit dans Eclipse (menu Help, Install New Software, puis choix du site  http://download.eclipse.org/egit/updates ).

Création de la base locale

Ensuite on doit ouvrir la perspective git dans Eclipse (menu Window, Perspective, Open Perspective, Git), car la première fois on doit créer la base de code source locale sur le disque dur.

Une fois dans la perspective Git, on fait cela en cliquant « create a new local git repository ».

Enregistrement du projet dans la base locale

Pour transformer son projet en projet GitHub , on doit retourner dans la perspective Java, cliquer droit sur le projet, choisir « team/share project », et choisir le repository local.

Dans le panneau github avec les « unstaged change » on clique sur « add to index », puis sur « Commit and push ».

Le code est alors dans la base locale

Création du repository sur le site GitHub et publication du code

Ensuite on doit aller sur le site GitHUB avec le navigateur, demander à créer un nouveau repository. On obtient une URL qui permettra de publier le code.

On revient alors dans Eclipse, on clique droit sur l’icône du projet, on choisit « Team/Remote/Push ». On tape l’URL du projet GitHub, le user id et le password du compte GitHub. Dans le panneau suivant, on choisit de publier la « master branch » (dans source ref), puis on valide avec Finish.

Et hop ! Le code est publié sur le site GitHub et d’autres programmeurs peuvent le récupérer dans leur environnement Eclipse.

Programmer en équipe avec GitHub du code sur le site GitHub

Avec GitHub, plusieurs programmeurs peuvent travailler en même temps sur le code du programme, publier leurs modifications une fois qu’elles sont finies, pour que tout le monde puisse les récupérer et soit à jour au fil des travaux des uns et des autres.

Mais c’est trop long d’expliquer ici le fonctionnement du travail en équipe avec GitHub.

Programmation du Jeu Pong en Java – Modifions le jeu pour jouer à deux ! (5/6)

Pour le moment je joue seul contre l’ordinateur mais je voudrais jouer ensemble avec mon petit frère.

Donc il faut dire que la deuxième raquette soit contrôlée par le clavier.

Pour contrôler la deuxième raquette avec le clavier il fallait créer deux nouvelles variables qui s’appellent gegnermoveup et gegnermovedown, ces variables mémorisent quels mouvements veut le joueur.

protected static boolean gegnermoveup= false;
protected static boolean gegnermovedown= false;

Donc j’ai programmé que quand on touche la touche Q la raquette monte et quand on touche W la raquette descend : c’est ce qui est en gris dans le code.

@Override
	public void keyPressed(KeyEvent e) {
		 if (e.getKeyCode()== KeyEvent.VK_UP ) {
			 Var.moveup = true;
		 } else if (e.getKeyCode()== KeyEvent.VK_DOWN) {
			 Var.movedown = true;
		 } else if (e.getKeyCode()== KeyEvent.VK_Q ) {
			 Var.gegnermoveup = true;
		 } else if (e.getKeyCode()== KeyEvent.VK_W) {
			 Var.gegnermovedown = true;
		 }
		 
	}

	@Override
	public void keyReleased(KeyEvent e) {
		 if (e.getKeyCode()== KeyEvent.VK_UP ) {
			 Var.moveup = false;	
		 } else if (e.getKeyCode()== KeyEvent.VK_DOWN) {
			 Var.movedown = false;
		 } else if (e.getKeyCode()== KeyEvent.VK_Q ) {
			 Var.gegnermoveup = false;	
		 } else if (e.getKeyCode()== KeyEvent.VK_W) {
			 Var.gegnermovedown = false; 
		 } else if (e.getKeyCode()== KeyEvent.VK_C) {
			 Var.modeCouleurs = true;
		 } else if (e.getKeyCode()== KeyEvent.VK_B) {
			 Var.modeCouleurs = false;
		 }
	}

Enfin j’ai copié la classe Movement qui calcule la position de la première raquette dans une nouvelle classe qui s’appelle GegnerMovementManual pour qu’elle calcule la position de la deuxième raquette.

Pour que cela fonctionne il faut remplacer l’utilisation de GegnerMovement (le mode automatique) par cette nouvelle classe GegnerMovementManual (le mode avec le clavier).

 

Les différences entre la classe Movement et la classe GegnerMovementManual sont en gris dans le code (utiliser gegnermoveup, gegnermovedown, gegnery pour la raquette 2 au lieu de moveup, movedown, y pour la raquette 1).


public GegnerMovementManual() {
		move = new Timer();
		move.scheduleAtFixedRate(new TimerTask() {
			@Override
			public void run() {
				if (Var.gegnermoveup == true) {
					if (Var.gegnery >= 20) {
						Var.gegnery -= 2;
			
					}
				} else if(Var.gegnermovedown) {
					if(Var.gegnery <= Var.screenheight - 200) {
						Var.gegnery +=2 ;
					}
				}

			}
		}, 0, 4);
	}

Et voilà maintenant nous pouvons jouer à deux à Pong !!!

Pour pouvoir changer le mode avec le clavier, j’ai ajouté une variable qui s’appelle gegnermodeauto.



	static boolean gegnerModeAuto = true;

J’ai modifié le KeyHandler pour changer cette variable quand on appuie la touche A (Gegner Automatique) ou Z (Gegner manuel).


else if (e.getKeyCode()== KeyEvent.VK_A) {
		 Var.gegnerModeAuto = true;
	 } else if (e.getKeyCode()== KeyEvent.VK_Z) {
		 Var.gegnerModeAuto = false;
	 }

Et j’ai modifié les deux classes GegnerMovementManual et GegnerMovement pour que soir l’une soit l’autre s’exécute en fonction de la variable.


public GegnerMovement() {
		move = new Timer();
		move.scheduleAtFixedRate(new TimerTask() {
			public void run() {
				if (Var.gegnerModeAuto == true) {
					… reste du code

public GegnerMovementManual() {
		move = new Timer();
		move.scheduleAtFixedRate(new TimerTask() {
			@Override
			public void run() {
				if (Var.gegnerModeAuto == false) {
					… reste du code

Pour savoir quel mode est actif, j’ai modifié la classe Draw pour afficher un signe * à côté du score du Gegner quand le mode est automatique.


g.drawString(
"" + Var.gegnerPoints+(Var.gegnerModeAuto ? "*" : ""), Var.screenwidth/2 + 50, 
75
);

Et voici le résultat :

Programmation du Jeu Pong en Java – Modifions le jeu avec de la couleur ! (4/6)

Comme c’est un peu triste d’avoir le jeu en noir et blanc je voulais ajouter de la couleur.

Pour décider du mode d’affichage j’ai ajouté une variable qui dit quand c’est en couleur.

static boolean modeCouleurs = true;

Et j’ai modifier le fichier Draw pour dire quel couleur et quelle forme utiliser.

if (Var.modeCouleurs) 
	g.setColor(Color.DARK_GRAY);
else
	g.setColor(Color.BLACK);
		
g.fillRect(0, 0, Var.screenwidth, Var.screenheight);
	
g.setColor(Color.WHITE);	
for(int i = 0; i<= 30; i++) {
	g.fillRect(Var.screenwidth/2 -5, i * 20, 10, 10);
}
		
if (Var.modeCouleurs) 
	g.setColor(Color.BLUE);		

if (Var.modeCouleurs) 
	g.fillRoundRect(Var.x, Var.y, 25, 150,15,15);
else
	g.fillRect(Var.x, Var.y, 25, 150);
		
if (Var.modeCouleurs) 
	g.setColor(Color.GREEN);
	
if (Var.modeCouleurs) 
	g.fillRoundRect(Var.gegnerx, Var.gegnery, 25, 150,15,15); 
else
	g.fillRect(Var.gegnerx, Var.gegnery, 25, 150); 
			
if (Var.modeCouleurs) 
	g.setColor(Color.RED);
		
g.setFont(Var.pixelfont);
g.drawString("" + Var.playerPoints, Var.screenwidth/2 - 95, 75);
g.drawString("" + Var.gegnerPoints, Var.screenwidth/2 + 50, 75);

if (Var.modeCouleurs) 
	g.setColor(Color.ORANGE);		

if (Var.modeCouleurs) 
	g.fillOval((int)Var.ballx, (int) Var.bally, 20, 20);
else
	g.fillRect((int)Var.ballx, (int) Var.bally, 20, 20);

J’ai utilisé la variable dans un if pour décider d’utiliser la couleur pour dessiner chaque objet : la balle, le score, les raquettes, … Et j’en ai profité pour changer les formes des raquettes et de la balle.

Et voila le résultat !!!

Comme j’ai envie de changer les couleurs pendant le jeu j’ai modifié le Keyhandler pour passer en couleur en tapant sur la touche C et en noir et blanc sur la touche B.

…
else if (e.getKeyCode()== KeyEvent.VK_C) {
	 Var.modeCouleurs = true;
} else if (e.getKeyCode()== KeyEvent.VK_B) {
	 Var.modeCouleurs = false;
}

Programmation du Jeu Pong en Java – Modifions le jeu avec une vitesse variable ! (3/6)

On a vu que dans le jeu original la vitesse de la balle augmente au cours de la partie, jusqu’à ce que l’un des joueurs perde le point.

Or dans la version du tutoriel la balle va toujours à la même vitesse.

On doit donc trouver comment changer la vitesse de la balle pendant le jeu.

Etude de la classe BallMovement

Le fichier qui dirige la balle s’appelle BallMovement.

public BallMovement() {
   move = new Timer();
   move.scheduleAtFixedRate(
      new TimerTask() {
         public void run() {
            Var.ballx += Var.balldirx;
            Var.bally += Var.balldiry;
         }
      },
      0,
      4
   );
}

Toutes les 4 millisecondes, le timer exécute ce qui est dans la méthode run() : la nouvelle position de la balle qui est ballx et bally, est modifiée de balldirx et balldiry.

Dans la version du tutoriel la balledirx et la balldiry sont toujours 1 ou -1 et c’est le fichier BallKollision qui change ces valeurs quand la balle touche une raquette.

Ajout de la variable ‘vitesse’

On doit modifier le code pour ajouter la notion de vitesse.

On va donc créer la variable vitesse dans le fichier var.

static int vitesse=3;

Et maintenant faire changer la position en utilisant la vitesse :

Var.ballx += Var.balldirx * Var.vitesse;
Var.bally += Var.balldiry * Var.vitesse;

En relançant le jeux la balle va beaucoup plus vite (3 fois) et c’est plus difficile à jouer !!!

Augmentation de la vitesse pendant le jeu

Il faut maintenant trouver un moyen de changer la vitesse pendant le jeu, donc il faut savoir depuis quand le jeu a commencé. On va donc ajouter une variable débutjeu


static long debutJeu= 0;

A chaque fois que la balle est mise au centre on mémorise l’heure de la partie


Var.debutJeu = System.currentTimeMillis();

 

A chaque cycle de BallKollision on va calculer une vitesse qui va dépendre de la durée de la partie.


long maintenant = System.currentTimeMillis();
long duree = maintenant - Var.debutJeu;
Var.vitesse = 1 + duree / 10000;
Var.ballx += Var.balldirx * Var.vitesse;
Var.bally += Var.balldiry * Var.vitesse;

Toutes les dix secondes la balle accélère.

En relançant le jeu c’est bien ce qui ce passe. Mais la vitesse augmente de 1 à chaque fois : quand la vitesse passe de 1 à 2, c’est trop rapide pour l’ordinateur.

Changement plus progressif de la vitesse

On doit trouver le moyen de rendre progressif l’accélération de la balle. Au lieu d’utiliser des nombres entiers on utilise des nombres décimaux.

Dans le fichier Var, cela donne :

static double ballx = 200, bally = 500;
static double vitesse=1;

Dans le fichier BallMovement, cela donne :

long maintenant = System.currentTimeMillis();
double duree = maintenant - Var.debutJeu;
Var.vitesse = 1.0 + duree / 10000.0;
Var.ballx += Var.balldirx * Var.vitesse;
Var.bally += Var.balldiry * Var.vitesse;

On a aussi dû corriger la classe Draw car le dessin doit se faire avec des nombres entiers (dessin de la balle à sa position) :

g.fillRect((int)Var.ballx, (int) Var.bally, 20, 20);

Hourra ! Le programme marche comme l’original avec une balle qui accélère en cours de jeu !

Programmation du jeu Pong en Java – Etude du code (2/6)

Etude du code du jeu

Pour Programmer un jeu vidéo il faut donc créer différents fichiers ou classes (c’est une manière d’organiser le programme en java) pour que tout fonctionne.

Main:

Le fichier Main est le premier qui est lancé, et il permet de dire quelles autres classes doivent être utilisées pour faire fonctionner le jeu.

Gui:

La classe Gui crée la fenêtre du jeu et elle utilise deux autres classes pour contrôler la fenêtre :

  • La classe « KeyHandler » qui examine quelle touche on tape sur le clavier. Ensuite quand on a touché une touche il va regarder quelle action cette touche doit déclencher dans le jeu.
  • La classe « Draw » défini les formes de la balle, du terrain et des raquettes puis les dessine dans la fenêtre.

Gui

KeyHandler

Draw:

Var

La classe Var contient toute les variables et les paramètres du programme :

  • La fenêtre du programme et ses dimensions
  • La position de la balle, des raquettes, la direction de la balle
  • Le mouvement de la raquette que demande le joueur

Movement

A chaque cycle, La classe « Movement » calcule la nouvelle position de la raquette du joueur en fonction des touches appuyées.

 

GegnerMovement:

A chaque cycle, la classe « GegnerMovement » essaye de mettre la raquette du deuxième joueur (dans mon cas l’ordinateur) à la même hauteur que la balle quand la balle rentre dans la moitié du terrain du deuxième joueur. La vitesse de la raquette de l’ordinateur est limitée par le code. Donc il ne peut pas toujours gagner (ce serait trop facile pour lui de calculer plus vite… )

BallMovement:

A chaque cycle, la classe « BallMovement » calcule où se trouve la balle et ça dépend de la direction de la balle.

Attention ! Dans cette version du jeu, la balle se déplace toujours à la même vitesse. Ce n’était pas le cas dans la version originale. Dans la prochaine partie de mon Travail Personnel, je vais modifier le jeu pour qu’il fonctionne comme l’original.

BallKollision:

A chaque cycle, la classe « BallKollision » permet de calculer les angles de rebond de la balle pendant le jeu :

  • Si la balle touche une raquette, la balle rebondit dans le même angle
  • Et si la balle franchit un côté, elle est remise au milieu du terrain et elle repart vers le joueur. Et le point et ajouté au joueur qui a marqué.

 

 

Programmation du jeu Pong en Java – Présentation (1/6)

Maintenant que nous connaissons le jeux Pong, intéressons-nous à la programmation d’une version de ce jeu en java !

Comment j’ai trouvé le tutorial

Je voulais trouver comment programmer un jeu simple sur java. Pour commencer j’ai recherché sur Google. Ensuite comme je n’ai rien trouvé je suis allé sur YouTube et j’ai trouvé un youtubeur qui a fait des tutoriels pour programmer le jeu Pong.

Le tutorial

Pour programmer Pong avec java j’ai donc regardé des tutoriels sur YouTube. (les 4 liens ci-dessous)

1: https://www.youtube.com/watch?v=d-U9RKG-uGw

2: https://www.youtube.com/watch?v=tXz48MWhcHY

3: https://www.youtube.com/watch?v=ORbpwl7oemA

4: https://www.youtube.com/watch?v=LpYOSD7X2Is

Le Youtubeur de ce Tutoriel s’appelle : FoX DeN. Son site web s’appelle : www.fox-den.de .

Son hobby c’est la programmation et il a déjà publié différents mini jeux, ainsi qu’un programme qu’on peut acheter sur son site web : Mapeditor. Ce logiciel permet de programmer très facilement de jeux en 2D.

La réalisation du tutorial dans mon Eclipse

Pendant le précèdent travail personnel, j’ai installé un logiciel (Eclipse) qui permet de programmer en java. Et comme je voulais programmer quelque chose en java ça m’a beaucoup aidé.

Pour programmer un jeu vidéo il faut faire plusieurs classes ou fichier qui contiennent chacun un morceau du programme.

J’ai appris qu’il fallait avoir beaucoup de patience pour programmer un jeu vidéo.

Pour programmer le jeu en suivant pas à pas les explications, j’ai bien travaillé pendant 4h.

Souvent c’était difficile car le tutoriel contenait des fautes, mais les corrigeait plus tard.

Alors quand on avait terminé une partie du jeu et qu’on le lançait il ne marchait pas. Ensuite avec mon père on a cherché où était les fautes, en essayant de comprendre ce que faisais le programme en détail. Ensuite en continuant la vidéo nous avons vu le youtubeur corriger ces propres fautes, et on retrouvait le fil du travail. C’était très intéressant car j’ai vu pour la première foi comment il fallait programmer un jeu pour qu’il fonctionne, et que cela demande beaucoup d’attention et de réflexion.

Le jeu en fonctionnement

Le Screenshot suivant présente le jeu lancé depuis mon environnement de programmation Java Eclipse.

Pendant que je prenais le temps de faire le Screenshot, l’ordinateur a marqué 4 points !

Allons plus loin ensemble  !

Comme je souhaite aussi continuer à apprendre la programmation, j’ai exploré le code du jeu :

puis j’ai essayé d’enrichir cette version du jeu réalisée par FoX DeN.

Le code du jeu modifié est disponible sur GitHub, car je l’y ai publié !

Un jeu important dans l’histoire des jeux vidéos : Le jeu Pong

Pour la partie pratique de mon travail personnel sur les jeux video au Lycée Ermesinde, j’ai voulu m’intéresser au jeu le plus célèbre de tous les temps : Pong !!!

Avant d’en programmer une version en java explorons plus en détails ce jeu et son histoire.

Les éléments du jeu

Le concept de Pong est de simuler une partie de ping-pong.

  • Une balle, représentée par un petit carré blanc, se déplace à travers l’écran et rebondit sur les rebords du haut et du bas.
  • Les deux joueurs commandent chacun une raquette, représentée par un trait vertical aux extrémités gauche et droite du terrain de jeu.

L’interface est dotée d’une ligne centrale en pointillés, séparant l’écran en deux et représentant le filet vu du dessus. Les bords de l’écran matérialisent les limites du terrain, la balle ne pouvant pas sortir par le haut ou le bas. Ces délimitations sont présentes dans la plupart des versions ultérieures mais avec des styles différents.

Enfin, les scores de chaque joueur sont affichés en haut de leur zone respective.

Le fonctionnement

Le joueur déplace sa raquette en la faisant glisser verticalement entre les extrémités, haut et bas, de l’écran à l’aide des contrôles.

Si la balle frappe la raquette, elle rebondit vers l’autre joueur. Si elle manque la raquette, l’autre joueur marque un point.

La vitesse de la balle augmente au cours de la partie, jusqu’à ce que l’un des joueurs perde le point.

L’angle de rebond de la balle change en fonction de l’impact avec la raquette : au centre de la raquette, la balle sera renvoyée à 180° par rapport à son impact, alors que l’angle est plus aigu si la balle rebondit sur le bord de la raquette.

Par ailleurs, celle-ci ne peut aller jusqu’au haut de l’écran, afin d’éviter des parties infinies, et obliger un des joueurs à perdre si la balle y arrive.

Dans sa version originale, Pong nécessite deux joueurs, chacun commandant une raquette.

Que ce soit sur borne d’arcade ou sur la console Home Pong, chaque raquette est dirigée par un paddle (un bouton rotatif), répondant avec une vitesse variable selon la façon dont le joueur le tourne.

Dans des versions ultérieures du jeu, une des deux raquettes peut être contrôlée par la machine, afin de jouer avec un seul joueur.

Le premier jeu original : la console de salon

La console ressemble à une boite avec deux paddle pour diriger les deux raquettes.

On la branche sur la télévision pour y jouer.

Le premier jeu original : la borne d’arcade

On jouait aussi à Pong sur des bornes d’arcade dans des salles de jeux. Pour y jouer il fallait insérer une pièce. Chaque partie était payante !!

Pendant les dernières vacances de carnaval, comme je l’ai dit au début de ce travail, je suis allé dans le musée de jeux vidéo à Berlin (http://www.computerspielemuseum.de/) et j’ai vu la première borne d’arcade Pong!

Voici à quoi ressemble le paddle de la borne d’arcade, permettant de positionner la raquette à l’écran.

La mort du créateur du jeu Pong

Alors que je finis mon travail personnel, Ted Dabney, qui a lancé le jeu vidéo mythique Pong qui a été le sujet de la partie pratique de mon Trape, et a cofondé la société Atari avec Nolan Bushnell, est mort fin mai, à l’âge de 81 ans.

Dans l’article du journal l’Essentiel qui en parlait (http://www.lessentiel.lu/fr/hi_tech/story/Le-cofondateur-d-Atari-et-pere-du-jeu-Pong-est-mort-31855177 ), il y avait la citation suivante» du cocréateur de la console Xbox (Microsoft) Jonathan Seamus Blackley :

«Ted Dabney, que nous avons perdu samedi, a conçu l’électronique incroyable et vraiment géniale des (jeux) « Computer Space » et « Pong », qui a magnifiquement essaimé dans chaque pixel que vous voyez. Je pense à lui aujourd’hui, et je le remercie »

C’est intéressant de voir que les créateurs de jeux vidéos forment une grande famille qui se respecte les uns les autres dans leur passion pour créer des jeux qui nous amusent et nous donnent du plaisir.

Ted Dabney est à gauche de la console d’arcade sur la photo.

A la découverte des origines des jeux vidéo (4/…)

L’explosion des consoles de salon (1980-1990) et leur descendance aujourd’hui

Quatre sociétés ont de leur côté continué à permettre le développement des jeux videos sur les consoles.

NINTENDO :

Nintendo est une entreprise multinationale japonaise fondée en 1889 au Japon.

À ses débuts Nintendo produits juste des cartes à jouer (papier…), ensuite en 1970 ils ont commencé à vendre des jouets et des bornes d’arcades. Fin des années 1970 ils ont commencé à produire des consoles des jeux.

Les consoles les plus célèbres de Nintendo sont :

  • Les premières Nintendo (NES)
  • Game boy puis les Nintendo DS (consoles portables)
  • Game Cube, les Wii et Wii U
  • Et aujourd’hui, la console Nintendo Switch.
La Nintendo NES et un jeu de combat « CowBoy Kid »

La Nintendo Wii et un jeu d’aventure « Zelda »

 

La Nintendo Game Boy…

 

… et sa descendante, la Nintendo Switch ! avec le jeu Zelda également

 

SEGA :

Sega est aujourd’hui une des grandes marques qui produit des jeux vidéos.

Au début Sega produisait des consoles de jeux mais après la console « Saturn » ils ont arrêté de vendre et de produire des consoles de jeux car ils ne vendaient plus assez pour en produire des nouvelles. De nos jours ils consacrent leur temps à programmer de plus en plus de jeux vidéos pour jouer sur des consoles de jeux et sur les ordinateur. Quelques consoles produites par Sega sont la Sega MegaDrive (salon), Game Gear (portable) et la Dream Cast.

SONY:

 

Sony est une société créée en 1946 à Tokyo.

Sony est spécialisé sur le marché des affaires électroniques, Par exemple des téléphones, des consoles de jeux, des télévisions, et plain d’autres chose.

En 1994, Sony a lancé la série des Play Station qui sont toujours aujourd’hui une des principales plate-formes de jeu.

De la Play Station 1…

 

 

 

… à la Play Station 4, pour un même type de jeu : simulateur de football.

MICROSOFT:

Microsoft est une entreprise d’informatique qui produit des logiciels pour les entreprises et les personnes.

En 2001, ils se sont lancé sur le marché des consoles de jeu avec la X-Box. C’est le principal concurrent de Sony.

Aujourd’hui la Xbox est dans sa troisième version avec la Xbox One.

GTA III sur Xbox originale

 

GTA V sur xbox One

 

 

A la découverte des origines des jeux vidéo (3/…)

Le boom de la Micro informatique (1980-1990) et la naissance du jeu sur micro

Avec les micro-ordinateurs, on a assisté au développement de nombreux jeux videos.

Voici les premiers ordinateurs qui ont participé à ce phénomène.

APPLE II:

L’Apple ll est un des premiers ordinateurs personnels au monde fabriqué à grande échelle. L’Apple ll est sorti dans les stores le 10 juin 1977. En 1988 Apple a arrêté la production de l’Apple ll.

L’Apple ll est livré avec une cassette de démo, deux manettes de jeu, un clavier et le langage de programmation BASIC (j’en ai parlé dans le Trape sur les langages de programmation).

Au début sur l’Apple ll on joue juste à Pong.

Ensuite on peut programmer ses propres jeux avec le clavier en BASIC.

L’ordinateur est aussi conçu pour évoluer avec l’utilisateur.

Commodore 64 et Amiga:

 

 

La société Commodore a créé plusieurs micro-ordinateurs célèbres, en particulier le Commodore 64 (avec lequel j’ai joué au Musée du Jeu Vidéo à Berlin !).

Un Commodore 64 avec une partie de Pac Man (jeu célèbre qu’on ne présente pas) à l’écran.

Plus tard, en 1985 L’Amiga est une autre famille d’ordinateurs personnels crée par Commodore en 1985 et commercialisée jusqu’en 1994 où Commodore a fait faillite.

En 1990 Amiga est très populaire dans la scène démo (voir ci-dessous), et parmi les amateurs de jeu vidéo.

Amiga offrait en standard un affichage plus coloré et plus animé, un meilleur son, et un système d’exploitation plus avancé que la plupart de ses concurrents.

 
Note : Les démos étaient de petites animations agrémentées de musiques et distribuées avec les jeux et logiciels piratés, servant ainsi de signature au groupe de crackers qui avait réussi à cracker (contourner les protections contre la copie) le jeu ou l’application.

ATARI

Atari, le créateur des bornes d’arcade a aussi créé sa gamme d’ordinateur personnels.

L’origine des ordinateurs Atari : l’Atari 400, avec un jeu de basket assez… simple à l’affichage.

L’ordinateur le plus célèbre pour les joueurs, qui a concurrencé l’Amiga était l’Atari ST. En bas un print screen du jeu Populous, un ancêtre du jeu Clash of Clans qui se joue sur les téléphones mobiles maintenant.

Note : Atari était aussi célèbre dans la scène démo.

AMSTRAD :

 

Amstrad est une entreprise d’électronique grand public créée par Alan Michael au Royaume-Uni.

Dans les années 1980, l’entreprise a lancé sa gamme d’ordinateurs personnels au Royaume-Uni, en France et en Allemagne.

Les ordinateurs Amstrad étaient très utilisés par des joueurs du monde entier.

L’entreprise s’est adaptée avec le temps et a produit par la suite une gamme d’ordinateur personnels (PC) bon marché.

 

Les IBM PC et compatibles

Dans les années 80 ; IBM a sorti le PC qui est aussi lentement devenu une machine de jeu. Aujourd’hui encore on joue sur PC et il y a de nombreux jeux videos qui exploitent les possibilités graphiques des PC et de leurs cartes videos.

Par exemple l’ordinateur construit pendant mon Trape de première année a été conçu pour cela.

Pour mesurer l’évolution du graphisme des PC, à gauche un écran en mode CGA (la première carte graphique PC) avec Flight Simulator sous MS-Dos en 1988, et à droite, une photo de mon ordinateur personnel construit l’an dernier pour jouer pour mon Trape, avec une partie de GTA lancée.

 

 

A la découverte des origines des jeux vidéo (2/…)

Pour commencer, j’ai voulu découvrir comment les premiers jeux sont apparus avant de devenir ce qu’ils sont aujourd’hui.

J’ai d’ailleurs profité de mes vacances de carnaval à Berlin pour visiter le Musée du jeu video.

C’était intéressant de voir ‘en vrai’ les vieux jeux et les vieux ordinateurs et consoles. Sur la photo je joue à une partie de Space Invader sur un ordinateur Commodore 64 (dans une pièce reconstituant l’ambiance des années 80).

Les premiers jeux videos

Des électroniciens qui s’amusent

L’idée et le concept même de jeu vidéo viendrait de Ralf Baer en 1951 qui travaillait dans l’électronique pour la société Loral Electronics (fabriquant de télévisions).
En 1958 : LE JEU VIDEO EST INVENTE DANS UN LABORATOIRE DE RECHERCHE ATOMIQUE !

Willy Higinbotham, est un physicien dans un centre de recherche nucléaire gouvernemental. Il crée le premier jeu vidéo de l’histoire sur un ordinateur analogique couplé à un oscilloscope. Cet ordinateur servait normalement à calculer les trajectoires de missiles nucléaires !
C’est un jeu de tennis : « tennis for two » (multi-joueurs en plus !). Le court de tennis est une simple ligne horizontale sur laquelle un point rebondit. Le 1er jeu vidéo du monde est né !

 

Pas de chance pour lui: il n’a pas posé de brevet pour sa « console de jeu » car il n’y croyait pas, c’était pour lui un simple passe-temps pour ses amis.

En 1962, SpaceWar! est le second jeu vidéo de l’histoire, ou le 1er si on considère que c’est le premier vrai jeu sur ordinateur (un Dec PDP-1 ). Créé par S. Russel, J.M. Graetz et W. Wiitanen, des étudiants au MIT, il sera fourni avec chaque ordinateur vendu.

Deux vaisseaux doivent échapper à l’attraction d’une planète. Un étudiant qui deviendra célèbre y jouera : Nolan Bushnell (il deviendra le créateur de ATARI dont je parlerai plus tard).

Et si on jouait sur la télévision

En 1967, Ralf Baer crée les premiers jeux jouables sur une télévision : un jeu de tennis et un jeu de voitures. C’est le véritable inventeur de la console de jeu. Baer dépose le brevet en 1968.


Sa première console, jouable à deux … Bien loin d’une Play Station 4!

Et si on jouait au jeu vidéo dans des salles de jeu

En 1971, Galaxy Game est la toute première borne d’arcade. Elle est conçue à l’université de Stanford mais ne sera pas diffusée à grande échelle.
Deux mois après Galaxy Game, Nolan Bushnell conçoit une machine au look futuriste : le Computer Space, un remake de « Space war » (dont il était fan) dans un boîtier très design et futuriste, c’est la vraie naissance des bornes d’arcade pour le grand public.

Les premières consoles de salon trouvent leurs premiers clients

L’Odyssey est commercialisée en 1972 par Magnavox et devient ainsi la toute première console de salon ! Elle a été également conçue par Ralph Baer.

Elle utilisait un système de calque que l’on déposait sur la télé. Elle disposait de 13 jeux sur 6 cartouches. Un pistolet était disponible avec 4 jeux additionnels.

Les cartouches ne contenaient pas de programme, mais connectaient les divers circuits de la machine pour définir l’affichage et la gestion des évènements. Deux tailles d’écran étaient disponibles. Une même cartouche pouvait contenir plusieurs jeux. Malgré un prix élevé, cette console se vendra à plus de 100,000 exemplaires en quatre mois.

Jouer sur une télévision est un concept complètement inédit et révolutionnaire qui demandera un long temps pour que les personnes s’y habituent.

Un nom connu ATARI

En 1972 c’est la création de la firme mythique ATARI par Nolan Bushnell et Ted Dabney.
Ils avaient initialement choisi le nom Syzygy mais comme celui-ci était déjà déposé, ils se sont alors rabattus sur Atari, un terme japonais issu du jeu de Go.

Bushnell veut lancer un jeu simple et facile à comprendre (contrairement à Computer Space),
Il sortira alors la borne d’arcade Pong, dont je parlerais dans la seconde partie.
Le jeu est programmé par le génial Al Alcorn ( le créateur d’ Atari).
Environ 10 000 bornes furent commandées.