Annuaire › Code ouvert
Code publié par son auteur, en lecture seule. « Copier dans mon espace » crée un nouveau site à vous (non publié) que vous pouvez modifier librement.
js/config.js · 4.3 Ko
/* ============================================================
config.js - tous les réglages du jeu au même endroit
============================================================
Vous voulez un jeu plus facile ? plus rapide ? Modifiez les
nombres ci-dessous, rien d'autre !
IDÉE IMPORTANTE : le jeu est écrit dans un monde LOGIQUE de
360 x 640 unités (format portrait). Le vrai canevas peut être
plus petit ou plus grand : on "zoome" l'affichage avec scale()
(voir sketch.js). Ainsi toutes les positions et vitesses
ci-dessous restent valables sur n'importe quel écran.
============================================================ */
/* ---------- Monde logique ---------- */
const LARGEUR_JEU = 360;
const HAUTEUR_JEU = 640;
/* ---------- Taille du canevas à l'écran (en pixels) ---------- */
const LARGEUR_CANVAS_MAX = 480; // pas plus large que ça, même sur un grand écran
const LARGEUR_CANVAS_MIN = 220; // pas plus étroit que ça
const MARGE_VERTICALE = 90; // hauteur réservée au titre (le canevas doit tenir dans la fenêtre)
/* ---------- Police ---------- */
const POLICE = 'system-ui, -apple-system, "Segoe UI", sans-serif';
/* ---------- États du jeu (machine à états) ----------
Le jeu est toujours dans UN SEUL de ces trois états. */
const ETATS = {
MENU: 'menu', // écran d'accueil
JEU: 'jeu', // partie en cours
FIN: 'fin' // écran de fin de partie
};
/* ---------- Règles ---------- */
const VIES_DEPART = 3; // nombre de vies
const INVULNERABILITE = 1.5; // secondes sans dégâts après un choc
const POINTS_GOUSSE = 1;
const POINTS_GOUSSE_DOREE = 5;
const PROBA_DOREE = 0.1; // 10 % des gousses sont dorées
const DELAI_REJOUER = 0.7; // secondes avant de pouvoir relancer (évite un appui involontaire)
/* ---------- Rives (bandes de sable à gauche et à droite) ---------- */
const RIVE = 44; // largeur approximative de chaque rive
/* ---------- Pirogue ---------- */
const PIROGUE = {
y: 520, // position verticale fixe (le doigt reste sous le bateau)
longueur: 84, // taille du dessin
largeur: 22,
vitesseClavier: 340, // unités par seconde avec les touches
vitesseTactile: 620 // vitesse maximale pour rejoindre le doigt
};
/* ---------- Difficulté progressive ----------
La difficulté "d" va de 0 (début) à 1 (au bout de dureeMax secondes).
Chaque valeur est calculée entre sa valeur "Min" (facile) et "Max" (difficile)
avec lerp(). */
const DIFFICULTE = {
dureeMax: 80, // secondes pour atteindre la difficulté maximale
vitesseMenu: 70, // vitesse de défilement dans les menus
vitesseMin: 170, // défilement de l'eau (unités/s) au début
vitesseMax: 380, // ... et à la fin
intervalleObstacleMin: 1.45, // secondes entre deux obstacles, au début
intervalleObstacleMax: 0.6, // ... et à la fin (plus fréquent)
intervalleGousseMin: 1.0,
intervalleGousseMax: 1.3,
probaVagueMin: 0.2, // part d'obstacles qui sont des vagues (le reste = rochers)
probaVagueMax: 0.5,
secondesParNiveau: 15 // pour l'affichage « Niveau n »
};
/* ---------- Couleurs (hexadécimal) ---------- */
const COULEURS = {
eauHaut: '#1d86b5',
eauBas: '#0d557f',
ecume: '#ffffff',
sable: '#e8d09a',
sableMouille: '#c9ae75',
palmeClair: '#3f8f3a',
palmeFonce: '#2a6a2c',
coque: '#9a6330',
coqueContour: '#5a3513',
coqueInterieur: '#6f4420',
balancier: '#b67a3d',
chapeau: '#e9d27a',
pagaie: '#7a4a1e',
gousse: '#3b2314',
gousseDoree: '#e6a800',
rocher: '#6b7078',
rocherClair: '#9aa0a8',
vague: '#7fd0f0',
coeur: '#ff5c6c',
texte: '#ffffff',
texteSombre: '#1b2a36',
bouton: '#ffb703',
record: '#ffd23f'
};
/* ---------- Stockage du record ---------- */
const CLE_RECORD = 'pirogue-antalaha-record-v1';
const CLE_MUET = 'pirogue-antalaha-muet-v1';
/* ---------- Sons (fichiers du dossier medias/) ----------
On les charge avec new Audio(...) (p5.sound n'est pas disponible). */
const SONS_FICHIERS = {
clic: 'medias/clic.wav',
piece: 'medias/piece.wav',
succes: 'medias/succes.wav',
erreur: 'medias/erreur.wav',
victoire: 'medias/victoire.wav'
};
const VOLUME_SONS = 0.6; // de 0 (muet) à 1 (maximum)