A voir également:
- Snack dans javaScript
- Telecharger javascript - Télécharger - Langages
- A javascript error occurred in the main process - Forum Handicap / Accessibilté
- Afficher un tableau javascript en html ✓ - Forum Javascript
- Javascript arrondi - Forum Javascript
- Javascript arrondi après la virgule ✓ - Forum Windows
4 réponses
Merci de bien vouloir m'aider.
/**
* represente le serpent grace à sa position de tete et son corp
*/
class Snake {
constructor(head, direction) {
this._head = head;
this._direction = direction;
this._tail = [];
}
get head() {
return this._head;
}
get direction() {
return this._direction;
}
get tail() {
return this._tail;
}
set tail(aTail) {
this._tail = aTail;
}
}
let seGrandit = false;
let mangePomme = false;
let nbPoint = 0;
let pommeManger = 0;
let tailleCorp = 1
let save;
let currentDirection = 0;
let directions = ["West", "North", "East", "South"];
let direction = directions[currentDirection];
//localStorage.setItem("meilleurScore",0)
/**
* Permet de tourner a droite dans le cadre
*/
function moveRight(cases) {
if (currentDirection == 1) {
currentDirection = 2;
cases._direction = directions[currentDirection];
} else if (currentDirection == 3) {
currentDirection = 2;
cases._direction = directions[currentDirection];
}
}
/**
* permet de tourner a gauche dans le cadre
*/
function moveLeft(cases) {
if (currentDirection == 1) {
currentDirection = 0;
cases._direction = directions[currentDirection]
} else if (currentDirection == 3) {
currentDirection = 0;
cases._direction = directions[currentDirection];
}
}
/**
* permet de aller vers le bas dans le cadre
*/
function moveDown(cases) {
if (currentDirection == 0) {
currentDirection = 3;
cases._direction = directions[currentDirection];
} else if (currentDirection == 2) {
currentDirection = 3;
cases._direction = directions[currentDirection];
}
}
/**
* Permet d'aller vers le haut dans le cadre.
*/
function moveUp(cases) {
if (currentDirection == 0) {
currentDirection = 1;
cases._direction = directions[currentDirection];
} else if (currentDirection == 2) {
currentDirection = 1;
cases._direction = directions[currentDirection];
}
}
/**
* Permet de tourner dans l'une des 4 directions lorsque l'on appuis sur z,q,s,d.
*/
onkeypress = function (e) {
switch (e.keyCode) {
case 113: //Gauche
moveLeft(serpent);
break;
case 122: //Haut
moveUp(serpent);
break;
case 100: //Droite
moveRight(serpent);
break;
case 115: //Bas
moveDown(serpent);
break;
}
}
/**
* Permet de changer la direction visuel de la tete du serpent.
* */
function moveTete(snacke) {
if (snacke.direction == "West") {
if (snacke.head.col == 1) {
document.getElementById(`row${snacke.head.row}col${snacke.head._col}`).style.backgroundColor = "blue";
snacke.head._col = 15;
document.getElementById(`row${snacke.head.row}col${snacke.head._col}`).style.backgroundColor = "red";
} else {
document.getElementById(`row${snacke.head.row}col${snacke.head._col}`).style.backgroundColor = "blue";
snacke.head._col -= 1;
document.getElementById(`row${snacke.head.row}col${snacke.head._col}`).style.backgroundColor = "red";
}
} else if (snacke._direction == "North") {
if (snacke.head._row == 1) {
document.getElementById(`row${snacke.head.row}col${snacke.head._col}`).style.backgroundColor = "blue";
snacke.head._row = 15;
document.getElementById(`row${snacke.head.row}col${snacke.head._col}`).style.backgroundColor = "red";
} else {
document.getElementById(`row${snacke.head.row}col${snacke.head._col}`).style.backgroundColor = "blue";
snacke.head._row -= 1;
document.getElementById(`row${snacke.head.row}col${snacke.head._col}`).style.backgroundColor = "red";
}
} else if (snacke.direction == "South") {
if (snacke.head._row == 15) {
document.getElementById(`row${snacke.head.row}col${snacke.head._col}`).style.backgroundColor = "blue";
snacke.head._row = 1;
document.getElementById(`row${snacke.head.row}col${snacke.head._col}`).style.backgroundColor = "red";
} else {
document.getElementById(`row${snacke.head.row}col${snacke.head._col}`).style.backgroundColor = "blue";
snacke.head._row += 1;
document.getElementById(`row${snacke.head.row}col${snacke.head._col}`).style.backgroundColor = "red";
}
} else if (snacke.direction == "East") {
if (snacke.head._col == 15) {
document.getElementById(`row${snacke.head.row}col${snacke.head._col}`).style.backgroundColor = "blue";
snacke.head._col = 1;
document.getElementById(`row${snacke.head.row}col${snacke.head._col}`).style.backgroundColor = "red";
} else {
document.getElementById(`row${snacke.head.row}col${snacke.head._col}`).style.backgroundColor = "blue";
snacke.head._col += 1;
document.getElementById(`row${snacke.head.row}col${snacke.head._col}`).style.backgroundColor = "red";
}
}
}
/**
* Permet de faire bouger le corp dans un sens ou dans l'autre
* @param {} pos
*/
function moveCorp(pos) {
if (direction == "West") {
if (pos._col == 1) {
document.getElementById(`row${pos.row}col${pos.col}`).style.backgroundColor = "blue";
pos._col = 15;
document.getElementById(`row${pos.row}col${pos.col}`).style.backgroundColor = "gray";
} else {
document.getElementById(`row${pos.row}col${pos.col}`).style.backgroundColor = "blue";
pos._col -= 1;
document.getElementById(`row${pos.row}col${pos.col}`).style.backgroundColor = "gray";
}
} else if (direction == "North") {
if (pos._row == 1) {
document.getElementById(`row${pos.row}col${pos.col}`).style.backgroundColor = "blue";
pos._row = 15;
document.getElementById(`row${pos.row}col${pos.col}`).style.backgroundColor = "gray";
} else {
document.getElementById(`row${pos.row}col${pos.col}`).style.backgroundColor = "blue";
pos._row -= 1;
document.getElementById(`row${pos.row}col${pos.col}`).style.backgroundColor = "gray";
}
} else if (direction == "South") {
if (pos._row == 15) {
document.getElementById(`row${pos.row}col${pos.col}`).style.backgroundColor = "blue";
pos._row = 1;
document.getElementById(`row${pos.row}col${pos.col}`).style.backgroundColor = "gray";
} else {
document.getElementById(`row${pos.row}col${pos.col}`).style.backgroundColor = "blue";
pos._row += 1;
document.getElementById(`row${pos.row}col${pos.col}`).style.backgroundColor = "gray";
}
} else if (direction == "East") {
if (pos._col == 15) {
document.getElementById(`row${pos.row}col${pos.col}`).style.backgroundColor = "blue";
pos._col = 1;
document.getElementById(`row${pos.row}col${pos.col}`).style.backgroundColor = "gray";
} else {
document.getElementById(`row${pos.row}col${pos.col}`).style.backgroundColor = "blue";
pos._col += 1;
document.getElementById(`row${pos.row}col${pos.col}`).style.backgroundColor = "gray";
}
}
}
/**
* Permet de remettre dans le bon sens la position d'un corp donné (met la position en décalage).
* @param {} pos une position d'un corp (une case representent une partie du corp).
*/
function movePos(pos) {
if (direction == "West" ) {
if (pos._col == 1) {
pos._col = 15;
} else if(pos._col<15){
pos._col += 1;
}
} else if (direction == "North" ) {
if (pos._row == 1) {
pos._row = 15;
} else if(pos.row <15){
pos._row += 1;
}
} else if (direction == "South") {
if (pos._row == 15 ) {
pos._row = 1;
} else if(pos._row>1){
pos._row -= 1;
}
} else if (direction == "East") {
if (pos._col == 15 ) {
pos._col = 1;
} else if(pos._col >1){
pos._col -= 1;
}
}
}
/**
* Permet d'initialiser la premiere partie du corp du serpent.
*/
function initialiseFirstCorp() {
let corpCol = serpent.head.col;
let rowCol = serpent.head.row;
posCorpDeBase._col = corpCol;
posCorpDeBase._row = rowCol;
serpent._tail[0] = posCorpDeBase;
movePos(serpent._tail[0]);
}
/**
* Represente le fonctionnement meme et la creation du serpent dans le jeu.
*/
function mouvement() {
if (serpent.head._col == positionPomme._col && serpent.head._row == positionPomme.row) {
mangePomme = true;
serpent._tail[tailleCorp] = new Position(serpent.tail[tailleCorp - 1]._row, serpent.tail[tailleCorp - 1]._col);
movePos(serpent.tail[tailleCorp]);
tailleCorp++;
pommeManger++;
positionPomme = new Position(caseAleatoire(1, 15), caseAleatoire(1, 15));
afficherPom();
}
mangePomme = false;
moveTete(serpent);
if (serpent._direction != direction && serpent._tail.length == 1) {
moveCorp(serpent._tail[0]);
direction = serpent._direction;
} else if (serpent._direction != direction && serpent._tail.length == 2) {
moveCorp(serpent.tail[0]);
moveCorp(serpent.tail[1]);
//touch une flèche change de direction auto
moveTete(serpent);
ancienneDirection = direction;
direction = serpent.direction;
moveCorp(serpent.tail[0]);
direction = ancienneDirection;
moveCorp(serpent.tail[1]);
direction = serpent.direction;
} else if (serpent._direction != direction && serpent._tail.length > 2) {
for (let i = 0; i < serpent.tail.length; i++) {
moveCorp(serpent._tail[i]);
}
moveTete(serpent);
ancienneDirection = direction;
direction = serpent.direction
moveCorp(serpent.tail[0]);
direction = ancienneDirection;
for (let i = 1; i < serpent.tail.length; i++) {
moveCorp(serpent.tail[i]);
}
for (let i = serpent.tail.length -1; i > 0; i--) {
moveTete(serpent);
direction = serpent._direction;
for (let j = 0; j <= serpent.tail.length - i; j++) {
moveCorp(serpent._tail[j]);
save = j;
}
save++;
direction = ancienneDirection;
for (let r = save; r < serpent.tail.length; r++) {
moveCorp(serpent._tail[r]);
}
}
direction = serpent.direction;
afficherPom();
} else {
if(!mangePomme && ! seGrandit){
for (let i = 0; i < serpent.tail.length; i++) {
moveCorp(serpent.tail[i]);
}
}
afficherPom();
}
affichageTete(serpent);
}
/**
* Represente le fonctionnement du jeu.
*/
function game(){
if(!isOver()){
mouvement();
}
if(isOver()){
nbPoints();
if(nbPoint >localStorage.getItem("meilleurScore")){
meilleurScore();
document.getElementById("plateauDeJeu").style.display = "none";
document.getElementById("felicitation").style.display = "block";
clearInterval("gameJ");
clearInterval("granditJ");
}
}
}
/**
* Permet de faire grandir le serpent.
*/
function grandit(){
if(!mangePomme){
seGrandit = true;
serpent.tail[tailleCorp] = new Position(serpent.tail[tailleCorp - 1].row, serpent.tail[tailleCorp - 1].col);
movePos(serpent.tail[tailleCorp]);
tailleCorp++;
seGrandit= false;
}
}
/**
* Permet de retourner une reponse aleatoirement
* @param {*} min le minimum
* @param {*} max le maximum
*/
function caseAleatoire(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
/**
* Permet de dire quand le jeu est fini.
*/
function isOver(){
let over = false;
let i = 0;
while(i<serpent._tail.length && !over){
if(serpent.tail[i]._col == serpent.head._col && serpent.tail[i]._row == serpent.head._row){
over = true;
}
i++;
}
return over;
}
/**
* Permet de calculer le score du jeu.
*/
function nbPoints(){
nbPoint = (serpent._tail.length*10)+ (pommeManger*50);
}
Bonjour,
Oui....et .... ?
Pense tu que sans voir ton code nous parviendrons à te renseigner ???
Nous sommes doués.... mais pas encore capable de faire de la télépathie ... :-)
NB: Pour poster du code sur le forum, merci de le faire en utilisant LES BALISES DE CODE (et en y précisant le langage afin d'avoir la coloration syntaxique)
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
.
Oui....et .... ?
Pense tu que sans voir ton code nous parviendrons à te renseigner ???
Nous sommes doués.... mais pas encore capable de faire de la télépathie ... :-)
NB: Pour poster du code sur le forum, merci de le faire en utilisant LES BALISES DE CODE (et en y précisant le langage afin d'avoir la coloration syntaxique)
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
.
oui bien évidemment.
/**
* Permet de remettre dans le bon sens la position d'un corp donné (met la position en décalage).
* @param {} pos une position d'un corp (une case representent une partie du corp).
*/
function movePos(pos) {
if (direction == "West" ) {
if (pos._col == 1) {
pos._col = 15;
} else if(pos._col<15){
pos._col += 1;
}
} else if (direction == "North" ) {
if (pos._row == 1) {
pos._row = 15;
} else if(pos.row <15){
pos._row += 1;
}
} else if (direction == "South") {
if (pos._row == 15 ) {
pos._row = 1;
} else if(pos._row>1){
pos._row -= 1;
}
} else if (direction == "East") {
if (pos._col == 15 ) {
pos._col = 1;
} else if(pos._col >1){
pos._col -= 1;
}
}
}
/**
* Permet d'initialiser la premiere partie du corp du serpent.
*/
function initialiseFirstCorp() {
let corpCol = serpent.head.col;
let rowCol = serpent.head.row;
posCorpDeBase._col = corpCol;
posCorpDeBase._row = rowCol;
serpent._tail[0] = posCorpDeBase;
movePos(serpent._tail[0]);
}
/**
* Represente le fonctionnement meme et la creation du serpent dans le jeu.
*/
function mouvement() {
if (serpent.head._col == positionPomme._col && serpent.head._row == positionPomme.row) {
mangePomme = true;
serpent._tail[tailleCorp] = new Position(serpent.tail[tailleCorp - 1]._row, serpent.tail[tailleCorp - 1]._col);
movePos(serpent.tail[tailleCorp]);
tailleCorp++;
pommeManger++;
positionPomme = new Position(caseAleatoire(1, 15), caseAleatoire(1, 15));
afficherPom();
}
mangePomme = false;
moveTete(serpent);
if (serpent._direction != direction && serpent._tail.length == 1) {
moveCorp(serpent._tail[0]);
direction = serpent._direction;
} else if (serpent._direction != direction && serpent._tail.length == 2) {
moveCorp(serpent.tail[0]);
moveCorp(serpent.tail[1]);
//touch une flèche change de direction auto
moveTete(serpent);
ancienneDirection = direction;
direction = serpent.direction;
moveCorp(serpent.tail[0]);
direction = ancienneDirection;
moveCorp(serpent.tail[1]);
direction = serpent.direction;
} else if (serpent._direction != direction && serpent._tail.length > 2) {
for (let i = 0; i < serpent.tail.length; i++) {
moveCorp(serpent._tail[i]);
}
moveTete(serpent);
ancienneDirection = direction;
direction = serpent.direction
moveCorp(serpent.tail[0]);
direction = ancienneDirection;
for (let i = 1; i < serpent.tail.length; i++) {
moveCorp(serpent.tail[i]);
}
for (let i = serpent.tail.length -1; i > 0; i--) {
moveTete(serpent);
direction = serpent._direction;
for (let j = 0; j <= serpent.tail.length - i; j++) {
moveCorp(serpent._tail[j]);
save = j;
}
save++;
direction = ancienneDirection;
for (let r = save; r < serpent.tail.length; r++) {
moveCorp(serpent._tail[r]);
}
}
direction = serpent.direction;
afficherPom();
} else {
if(!mangePomme && ! seGrandit){
for (let i = 0; i < serpent.tail.length; i++) {
moveCorp(serpent.tail[i]);
}
}
afficherPom();
}
affichageTete(serpent);
}