javascript_terminal
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| javascript_terminal [2023/11/20 12:17] – appledog | javascript_terminal [2023/11/24 01:34] (current) – appledog | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| = JavaScript Terminal | = JavaScript Terminal | ||
| + | * Also see: [[JavaScript Terminal v2|Version 2]] which is a more advanced version of this codebase. | ||
| + | |||
| This section will outline the basic JavaScript terminal code. This code was not used much when I taught JavaScript to Roger and Neo, but it serves the same basic purpose as the [[PyGame Terminal]]. | This section will outline the basic JavaScript terminal code. This code was not used much when I taught JavaScript to Roger and Neo, but it serves the same basic purpose as the [[PyGame Terminal]]. | ||
| - | The level of this code will be towards the end of JavaScript Season 1, or at the beginning of JavaScript | + | The level of this code is the beginning of Season 2, for many reasons. If we took out the resize code, it might be late season |
| - | You can view a technical demo of this directly | + | You can view a technical demo of this program |
| == The Font | == The Font | ||
| Line 15: | Line 17: | ||
| < | < | ||
| < | < | ||
| + | <meta name=" | ||
| < | < | ||
| Line 42: | Line 45: | ||
| </ | </ | ||
| - | There is not much to see here. In the original we used normalizer, modernizer and a few other things, but I have stripped those off to show the basic idea. | + | There is not much to see here. The most interesting line is probably |
| - | There are four main parts: Color.js, which is a color map, Character.js which discusses what needs to be known to represent a character, Terminal, which holds the information about characters on the screen and how to draw them, and main.js which sets up everything and starts the game loop. | + | Otherwise our main goal is to load and run the JavaScript files. |
| Actually, you could probably refactor some things in main into a class (such as a Game.js class) and then just instantiate and run the class, like we do in Python for PyGame. Perhaps this will be done in a part two sequel article to this one. For now, it's left as an exercise to the reader. | Actually, you could probably refactor some things in main into a class (such as a Game.js class) and then just instantiate and run the class, like we do in Python for PyGame. Perhaps this will be done in a part two sequel article to this one. For now, it's left as an exercise to the reader. | ||
| Line 119: | Line 122: | ||
| } | } | ||
| } | } | ||
| - | |||
| </ | </ | ||
| Line 249: | Line 251: | ||
| // load font | // load font | ||
| const font = new FontFace(' | const font = new FontFace(' | ||
| - | |||
| font.load().then(() => { | font.load().then(() => { | ||
| Line 277: | Line 278: | ||
| terminal.copyContentTo(t); | terminal.copyContentTo(t); | ||
| terminal = t; | terminal = t; | ||
| + | |||
| + | ctx.font = '32px myvga'; | ||
| } | } | ||
| Line 294: | Line 297: | ||
| background = Color.black | background = Color.black | ||
| terminal.setch(x, | terminal.setch(x, | ||
| - | console.log(" | + | |
| } | } | ||
| } | } | ||
| Line 336: | Line 339: | ||
| == Analysis | == Analysis | ||
| Most of this should already be familiar since all of it would have been covered in JavaScript Season 1. | Most of this should already be familiar since all of it would have been covered in JavaScript Season 1. | ||
| + | |||
| + | However, one interesting quirk which arose is that the ctx.font has to be set upon terminal resize. I am not sure where the best place is to set it, but it seems to work great setting it on a resize. It would also work if you set it every time you drew a character, but if we assume that we are only using one font and are essentially the main application (a one-canvas app) then setting it on every character draw is probably unnecessary. | ||
| + | |||
| + | == Also See | ||
| + | * Also see: [[JavaScript Terminal v2|Version 2]] which is a more advanced version of this codebase. | ||
| + | |||
| + | |||
javascript_terminal.1700482629.txt.gz · Last modified: 2023/11/20 12:17 by appledog
