Fase 1: creiamo la base del gioco | Aulab
TECH SUMMER LAB 🚀 Open Month
| 6 lezioni gratuite per orientarti al meglio e iniziare a costruire il tuo futuro digitale! Iscriviti gratis

GUIDE PER ASPIRANTI PROGRAMMATORI

Fase 1: creiamo la base del gioco

Impostazione del Canvas È ora di iniziare a programmare il gioco vero e proprio! Apri index.js e inserisci questo codice:   const canvas = document.querySelector('canvas'); const c = canvas.getContext('2d'); canvas.width = 1480; canvas.height = 750; Cosa fa questo codice? Preparare il Canvas: document.querySelector(‘canvas’) dice al browser di prendere il nostro canvas dal file HTML. Questo…

Lezione 12 / 17
Enza Neri
Immagine di copertina

Vuoi avviare una nuova carriera o fare un upgrade?

Trova il corso Digital & Tech più adatto a te nel nostro catalogo!

Impostazione del Canvas

È ora di iniziare a programmare il gioco vero e proprio! Apri index.js e inserisci questo codice:

const canvas = document.querySelector('canvas');
const c = canvas.getContext('2d');

canvas.width = 1480;
canvas.height = 750;

Cosa fa questo codice?

  1. Preparare il Canvas: document.querySelector(‘canvas’) dice al browser di prendere il nostro canvas dal file HTML. Questo sarà lo spazio di gioco.
  2. Context 2D: c è ciò che useremo per disegnare le nostre immagini e forme nel gioco.
  3. Dimensioni del Canvas: impostiamo la larghezza e l’altezza del canvas, in modo che occupi una buona parte dello schermo.

Creazione della Classe Player

Adesso diamo vita al nostro protagonista: la navicella spaziale!

Aggiungi questo codice:

class Player {
    constructor() {
        this.velocity = {
            x: 0,
            y: 0
        };

        this.rotation = 0;
        this.opacity = 1;

        const image = new Image();
        image.src = './img/spaceship.png';
        image.onload = () => {
            const scale = 0.15;
            this.image = image;
            this.width = image.width * scale;
            this.height = image.height * scale;

            this.position = {
                x: canvas.width / 2 - this.width / 2,
                y: canvas.height - this.height - 20
            };
        };
    }

    draw() {
        c.save();
        c.globalAlpha = this.opacity;
        c.translate(
            this.position.x + this.width / 2,
            this.position.y + this.height / 2
        );
        c.rotate(this.rotation);
        c.translate(
            -this.position.x - this.width / 2,
            -this.position.y - this.height / 2
        );

        c.drawImage(this.image, this.position.x, this.position.y, this.width, this.height);
        c.restore();
    }

    update() {
        if (this.image) {
            this.draw();
            this.position.x += this.velocity.x;
        }
    }
}

const player = new Player();

Cosa fa questo codice?

  1. Creare il Giocatore (Player): qui stiamo definendo un modello per la nostra navicella. Ogni volta che vogliamo un nuovo giocatore, usiamo questo modello.
  2. Velocità e Movimento: la velocity ci dice quanto velocemente si muove la navicella. All’inizio è ferma, ma presto cambierà!
  3. Immagine della Navicella: carichiamo l’immagine della navicella e la ridimensioniamo in modo che si adatti bene allo schermo.
  4. Disegnare la Navicella (draw): questa funzione si occupa di disegnare la navicella sullo schermo, applicando rotazioni e trasparenze se necessario.
  5. Aggiornare la Posizione (update): questa funzione sposta la navicella ogni volta che aggiorniamo il gioco, in base alla sua velocità.

Gestione del Movimento del Giocatore

Adesso facciamo in modo che la navicella possa muoversi a sinistra e a destra usando le frecce della tastiera.

Aggiungi questo codice:

const keys = {
    arrowLeft: {
        pressed: false
    },
    arrowRight: {
        pressed: false
    }
};

window.addEventListener('keydown', ({ key }) => {
    switch (key) {
        case 'ArrowLeft':
            keys.arrowLeft.pressed = true;
            break;
        case 'ArrowRight':
            keys.arrowRight.pressed = true;
            break;
    }
});

window.addEventListener('keyup', ({ key }) => {
    switch (key) {
        case 'ArrowLeft':
            keys.arrowLeft.pressed = false;
            break;
        case 'ArrowRight':
            keys.arrowRight.pressed = false;
            break;
    }
});

function animate() {
    requestAnimationFrame(animate);
    c.fillStyle = 'black';
    c.fillRect(0, 0, canvas.width, canvas.height);

    player.update();

    if (keys.arrowLeft.pressed && player.position.x >= 0) {
        player.velocity.x = -10;
        player.rotation = -0.15;
    } else if (keys.arrowRight.pressed && player.position.x + player.width <= canvas.width) {
        player.velocity.x = 10;
        player.rotation = 0.15;
    } else {
        player.velocity.x = 0;
        player.rotation = 0;
    }
}

animate();

Cosa fa questo codice?

  1. Tasti Premuti (keys): qui creiamo un oggetto che tiene traccia dei tasti premuti. All’inizio, nessun tasto è premuto.
  2. Rilevare i Tasti (keydown e keyup): quando premi una freccia, diciamo al nostro gioco di muovere la navicella a sinistra o a destra. Quando rilasci il tasto, fermiamo il movimento.
  3. Animare la Navicella (animate): questa funzione viene chiamata continuamente, e ogni volta aggiorna la posizione della navicella e la ridisegna sullo schermo. Se stai premendo una freccia, la navicella si muove; se rilasci il tasto, si ferma.

Hai bisogno di informazioni? 🙋🏻‍♂️

Parliamone! Scrivici su Whatsapp e risponderemo a tutte le tue domande per capire quale dei nostri corsi è il più adatto alle tue esigenze.

Oppure chiamaci al 800 128 626