Per scoprire il numero di linee e colonne che devi produrre, dovresti controllare la larghezza e l'altezza della finestra e cambiarla di conseguenza. Ricorda di ascoltare gli eventi onResize e modificare la larghezza e l'altezza di conseguenza.
Quando vuoi farlo nel modo testuale , puoi farlo usando il testo con un carattere a spaziatura singola e una tabella in cui ogni cella contiene un carattere.
Per indirizzare i singoli caratteri è possibile creare un <table>
con il numero corretto di righe e colonne, in cui ognuna <td>
ha un ID costituito dalle sue coordinate x e y. In questo modo puoi indirizzare le singole celle per ID e cambiare il loro HTML interno per cambiare la lettera e cambiare la loro classe css per cambiare il loro colore.
L'uso di una tela , tuttavia, potrebbe essere più veloce perché non devi manipolare un grande albero DOM per ogni personaggio che devi sostituire. A proposito, la fortezza nana sta facendo una cosa simile. I caratteri utilizzati per rappresentare gli oggetti sono in realtà bitmap, non veri output di testo e sono disegnati utilizzando API grafiche 2D. La tela HTML5 è ben equipaggiata per questo. Ha il metodo context.fillText che ti permette di disegnare del testo sulla tela. Questo può essere usato per disegnare singoli personaggi. È possibile modificare la dimensione e la faccia del carattere manipolando le variabili context.font e il colore di ogni lettera chiamando context.fillStyle .
Si noti che la chiamata a fillText centinaia di volte per frame potrebbe essere lenta, poiché la rasterizzazione dei caratteri è costosa e nessun browser che conosco utilizza la memorizzazione nella cache. Ciò significa che quando si rende la stessa lettera con le stesse impostazioni cento volte, verrà rasterizzata cento volte. Per aumentare le prestazioni è possibile memorizzare nella cache l'aspetto rasterizzato di ogni lettera con ogni colore su una tela nascosta e quindi disegnare queste tele nascoste utilizzando context.drawImage . La copia da una tela all'altra è in genere molto più veloce della rasterizzazione dei caratteri.
Attualmente sto sviluppando un gioco 2d usando canvas, e ho notato che il più grande mangiatore di FPS era il disegno dei caratteri. Quando ho aggiunto una cache per il testo rasterizzato, le prestazioni sono migliorate molto.