/*
file name : scriptJeuPong.js
Script du jeu snake sur le site gantis.fr
Tous droits réservés Julien Sanchez- Merci de ne pas copier sans autorisation
Si vous souhaitez vous inspirer de notre code merci de nous envoyer un mail à mail@gantis.fr

Tout le code suivant est une création originale. Le but de gantis.fr est pédagogique. Notre volonté n'est donc pas de proposer un site disposant du plus de fonction possible, mais d'apprendre et maitriser leurs créations.
*/


//VARIABLES
//variables de taille du jeux
var hauteur = 218;
var largeur = hauteur*1.6;
//Nous initialisons la position de la balle au début du jeux
var positionX = 0;
var positionY= 0;
//variables de vitesse de déplacement de la balle
var deplacementX = 0;
var deplacementY = 0;
//variable de sauvegarde de la vitesse de déplacement verticale et horizontale (initialisée car le jeux commence en pause
var deplacementPauseX= hauteur/200;
var deplacementPauseY = hauteur/200;
//vitesse de déplacement de la racket (pour une axcélération
var vitesseBarre = deplacementPauseX*10;
//variable de sauvegarde
var vitesseBarrePause = vitesseBarre;
//variable calculée pour un affichage au joueur
var vitesse = deplacementPauseX*1000/8;
//variable relative à la taille du jeux definissant la taille physique de la balle
var largeurBalle = hauteur/25;
//niveau 0 au début
var niveau = 0;
//variable de comparaison pour l'envoi au serveur
if(lireCookie("bestScorePongGantis") != "")
{
	var niveauMax = lireCookie("bestScorePongGantis");
}
else
{
	var niveauMax = 0;
}
//variable de record du serveur
var recordServeur;
//largeur de la racket relative
var largeurRacket = hauteur/4;
//positionnement de la racket (milieu de la table
var positionRacketX = (largeur / 2 ) - largeurRacket/2;
var positionRacketY = hauteur-(largeurRacket/3);
//booléen de pause
var pauseJeuPong = false;
//nous faisons un scan des résultats sur le serveur
scanResultatPong();
//mise en place des éléments sur la page
document.getElementById('infoJeuPong').innerHTML = "Niveau : "+niveau+" Niveau max : "+niveauMax;
document.getElementById('table').style.width = largeur+"px";
document.getElementById('table').style.overflow = "hidden";
document.getElementById('table').style.background = "";
document.getElementById('balle').style.position = "relative";
document.getElementById('balle').style.width = largeurBalle+"px";
document.getElementById('balle').style.height = largeurBalle+"px";
document.getElementById('balle').style.background = "";
document.getElementById('balle').style.border = "#AAAAAA solid 1px";
document.getElementById('table').style.position = "relative";
document.getElementById('table').style.height = hauteur+"px";
document.getElementById('racket').style.width = largeurRacket+"px";
document.getElementById('racket').style.top = positionRacketY+"px";
document.getElementById('racket').style.left = positionRacketX+"px";
document.getElementById('clavierPong').onkeypress = deplacementRacket ;

//fonction de positionnement aléatoire de la balle
function aleatoir()
{
	//valeur aléatoire
	var valeur = Math.random();
	//la balle doit etre initialisée entre +10px et largeur-10px pour éviter les bugs inérant au moteur du jeux (qu'elle est belle ma phrase)
	positionX = 10+valeur*(largeur-20);
	 return;
}
//faut pas chercher plus loin que le nom de la fonction
function pausePong()
{
		//on stock la direction qu'avait la balle
	      deplacementPauseX = deplacementX;
		deplacementPauseY = deplacementY;
		//le déplacement est nul
		deplacementX = 0;
		deplacementY = 0;
		//on stock la vitesse de la barre
		vitesseBarrePause = vitesseBarre;
		//la barre est figée
		vitesseBarre = 0;
		//le booleen de pause est fixé à 1
		pauseJeuPong = false;
		return 0;
}

function mouvement()
{
	if(positionX < 0 || positionX > largeur-largeurBalle)
	{
		
		deplacementX = -deplacementX;
	}
	else if(positionY < 0)
	{
		deplacementY = -deplacementY;
		positionY = positionY + largeurBalle;
	}
	
	else if(positionY >= hauteur-(largeurBalle*2) && ((positionX+largeurBalle) > positionRacketX  &&  positionX < (positionRacketX+largeurRacket)))
	{
		positionY = positionY - largeurBalle;
		deplacementY = -deplacementY;
		niveau ++;
		if(niveau%3 == 0)
		{
		deplacementY = deplacementY*1.05;
		deplacementX = deplacementX*1.05;
		}
		if( niveau > niveauMax)
		{
			niveauMax = niveau;
			enregistrerCookie("bestScorePongGantis",niveauMax);
			
		}
		document.getElementById('infoJeuPong').innerHTML = "Niveau : "+niveau+" Niveau max : "+niveauMax;
		vitesseBarre = 10*Math.abs(deplacementX);
		vitesse = Math.round(Math.abs(deplacementY*1000/8));
	}
	else if(positionY >= hauteur)
	{
		deplacementY = 0;
		deplacementX = 0;
		
		positionX=0;
		positionY=0;
		pauseJeuPong=false;
		aleatoir();
		
		if(pseudo == "" || pseudo == null)
		{
			
		pseudo = prompt("Record battu !\nMerci de laisser votre nom pour qu'il entre dans l'histoire !");
		enregistrerCookie("pseudoGantis",pseudo);
		}
		
		envoyerResultatPong(niveau,pseudo);
		
		niveau=0;
	}
	
	positionX = positionX + deplacementX;
	positionY = positionY + deplacementY;
	document.getElementById('balle').style.left = positionX+"px";
	document.getElementById('balle').style.top = positionY+"px";
		
	setTimeout(function() {mouvement();},2);

}
function deplacementRacket(e)
{
	if(navigateur == "firefox" || navigateur == "safari")
	{
		car = e.charCode;
	}
	else if(navigateur == "msie" || navigateur == "opera")
	{
		car = event.keyCode;
	}
		
		
	if(car == "v".charCodeAt(0) && positionRacketX > 0)
	{
		positionRacketX -= vitesseBarre;
	}
	else if(car == "n".charCodeAt(0) && positionRacketX < (largeur-largeurRacket))
	{
		positionRacketX += vitesseBarre;
	}
	else if(car == " ".charCodeAt(0) && pauseJeuPong == true)
	{
		pausePong();
	}
	else if(car == " ".charCodeAt(0) && pauseJeuPong == false)
	{
		deplacementX = deplacementPauseX;
		deplacementY = deplacementPauseY;
		vitesseBarre = vitesseBarrePause;
		pauseJeuPong = true;
	}
	document.getElementById('racket').style.left = positionRacketX+"px"; 
	document.getElementById("clavierPong").value = "";
	
}

mouvement();
function envoyerResultatPong(niveau,nom)
{
	document.getElementById('infoAjax').style.backgroundImage = 'url("images/ajaxLoad.gif")';
	var url= "envoiDesScores.php?score="+niveau+"&enregistrer=oui&nom="+nom+"&jeu=Pong";
	var xhr_object = null; //on initialise l'objet de communication Ã  null;
	if(window.XMLHttpRequest)
	{
		//pour firefox, safari et chrome
		xhr_object = new XMLHttpRequest();
	}
	else if(window.ActiveXObject)
	{
		//pour activeX (internet explorer)
		xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
	}
	else
	{
		//pour tous les autres (les vieux). on affiche un message d'erreur en alert et on cache la fenetre de chat
		alert("Votre navigateur ne supporte pas l'ajax.");
	return;
	}
	
	///mettre un systeme d'attente (roue qui tourne).
	
	//on fait un appelle au serveur et on attend qu'il reponde
	
	xhr_object.open("GET",url,true);
	//envoi des donnÃ©es au serveur
	xhr_object.onreadystatechange = function()
	{
		//ajout d'une fonction dans l'objet onreadystatechange
		if(xhr_object.readyState == 4)
		{
			
			//lorsque la requete est finie :
			var reponse =xhr_object.responseText;
			tableauScorePong = reponse;
			document.getElementById('resultatPong').innerHTML = tableauScorePong;
			
					
			document.getElementById('infoAjax').style.backgroundImage = '';
			
		}
	}
	xhr_object.send(null);
	
}
function scanResultatPong()
{
	document.getElementById('infoAjax').style.backgroundImage = 'url("images/ajaxLoad.gif")';
	var url= "envoiDesScores.php?jeu=Pong";
	var xhr_object = null; //on initialise l'objet de communication Ã  null;
	if(window.XMLHttpRequest)
	{
		//pour firefox, safari et chrome
		xhr_object = new XMLHttpRequest();
	}
	else if(window.ActiveXObject)
	{
		//pour activeX (internet explorer)
		xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
	}
	else
	{
		//pour tous les autres (les vieux). on affiche un message d'erreur en alert et on cache la fenetre de chat
		alert("Votre navigateur ne supporte pas l'ajax.");
	return;
	}
	
	///mettre un systeme d'attente (roue qui tourne).
	
	//on fait un appelle au serveur et on attend qu'il reponde
	
	xhr_object.open("GET",url,true);
	//envoi des donnÃ©es au serveur
	xhr_object.onreadystatechange = function()
	{
		//ajout d'une fonction dans l'objet onreadystatechange
		if(xhr_object.readyState == 4)
		{
			
			//lorsque la requete est finie :
			var reponse =xhr_object.responseText;
			
			tableauScorePong = reponse;
			document.getElementById('resultatPong').innerHTML = tableauScorePong;
			
			
			
			//on retourne la rÃ©ponse dans la div de timeline
			document.getElementById('infoAjax').style.backgroundImage = '';		
			
			
		}
	}
	xhr_object.send(null);
	
}
aleatoir();
