litecanvas 0.98.1 → 0.98.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +178 -34
- package/dist/dist.dev.js +1 -1
- package/package.json +1 -1
- package/src/version.js +1 -1
package/README.md
CHANGED
|
@@ -28,74 +28,205 @@ Litecanvas is a lightweight HTML5 canvas 2D engine suitable for small web games,
|
|
|
28
28
|
- **Extensible**: Use or create [plugins](https://www.npmjs.com/search?q=keywords:litecanvas) to add functionalities or change the engine.
|
|
29
29
|
- **Playground**: Access or install the [playground](https://litecanvas.js.org/) webapp to code and share games (even offline).
|
|
30
30
|
|
|
31
|
-
[Learn more in the cheatsheet...](https://litecanvas.js.org/about.html)
|
|
32
|
-
|
|
33
31
|
## Getting Started
|
|
34
32
|
|
|
35
|
-
|
|
33
|
+
### Installation
|
|
34
|
+
|
|
35
|
+
You can get started using our [online playground](https://litecanvas.github.io).
|
|
36
|
+
|
|
37
|
+
Or installing our package via NPM:
|
|
36
38
|
|
|
37
39
|
```sh
|
|
38
40
|
npm i litecanvas
|
|
39
41
|
```
|
|
40
42
|
|
|
41
|
-
|
|
43
|
+
Or just create a HTML file and add a `<script>` tag with our CDN link:
|
|
42
44
|
|
|
43
45
|
```html
|
|
44
46
|
<script src="https://unpkg.com/litecanvas"></script>
|
|
45
47
|
```
|
|
46
48
|
|
|
47
|
-
###
|
|
49
|
+
### Basic game structure
|
|
48
50
|
|
|
49
51
|
```js
|
|
50
|
-
|
|
51
|
-
|
|
52
|
+
litecanvas()
|
|
53
|
+
|
|
54
|
+
function init() {
|
|
55
|
+
// this functions is called one time only
|
|
56
|
+
// before the game starts
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function update(dt) {
|
|
60
|
+
// this functions is called 60 times per second
|
|
61
|
+
// your game logic goes here
|
|
62
|
+
}
|
|
52
63
|
|
|
53
|
-
|
|
54
|
-
//
|
|
64
|
+
function draw() {
|
|
65
|
+
// this functions is called 60 times per second
|
|
66
|
+
// your game rendering goes here
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
> **Note**: if you installed via NPM you need to import the package first: <br/>
|
|
71
|
+
> `import litecanvas from "litecanvas"`
|
|
72
|
+
|
|
73
|
+
### Set the width and height of the game screen
|
|
74
|
+
|
|
75
|
+
```js
|
|
76
|
+
// example: a game screen size equal to 480x360
|
|
55
77
|
litecanvas({
|
|
56
|
-
|
|
78
|
+
width: 480,
|
|
79
|
+
height: 360,
|
|
57
80
|
})
|
|
81
|
+
```
|
|
58
82
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
83
|
+
### Colors
|
|
84
|
+
|
|
85
|
+
Litecanvas has a default palette with 12 colors:
|
|
86
|
+
|
|
87
|
+
| # | Color | # | Color |
|
|
88
|
+
| --- | ---------- | --- | ----------- |
|
|
89
|
+
| 0 | Black | 6 | Dark blue |
|
|
90
|
+
| 1 | Dark grey | 7 | Light blue |
|
|
91
|
+
| 2 | Light grey | 8 | Dark green |
|
|
92
|
+
| 3 | White | 9 | Light green |
|
|
93
|
+
| 4 | Red | 10 | Brown |
|
|
94
|
+
| 5 | Yellow | 11 | Beige |
|
|
95
|
+
|
|
96
|
+

|
|
97
|
+
|
|
98
|
+
Each time a Litecanvas' function ask for a color, you should use an of theses colors by its index.
|
|
99
|
+
|
|
100
|
+
```js
|
|
101
|
+
// example: draw a white rectangle
|
|
102
|
+
color = 3
|
|
103
|
+
rectfill(0, 0, 32, 32, color)
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Printing messages
|
|
107
|
+
|
|
108
|
+
```js
|
|
109
|
+
litecanvas()
|
|
110
|
+
|
|
111
|
+
function draw() {
|
|
112
|
+
// clear and fill the game screen with color #0 (black)
|
|
113
|
+
cls(0)
|
|
114
|
+
|
|
115
|
+
// print a red "Hello" text at x=0, y=0
|
|
116
|
+
text(0, 0, 'Hello', 4)
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Drawing shapes
|
|
121
|
+
|
|
122
|
+
You can use the following functions to draw shapes:
|
|
123
|
+
|
|
124
|
+
- `rect(x, y, width, height, color)` draw a rectangle outline
|
|
125
|
+
- `rectfill(x, y, width, height, color)` draw a color-filled rectangle
|
|
126
|
+
- `circ(x, y, radius, color)` draw a circle outline
|
|
127
|
+
- `circfill(x, y, radius, color)` draw a color-filled circle
|
|
128
|
+
- `oval(x, y, rx, ry, color)` draw a ellipse outline
|
|
129
|
+
- `ovalfill(x, y, rx, ry, color)` draw a color-filled ellipse
|
|
130
|
+
|
|
131
|
+
```js
|
|
132
|
+
litecanvas()
|
|
133
|
+
|
|
134
|
+
function draw() {
|
|
135
|
+
cls(0)
|
|
136
|
+
|
|
137
|
+
// draw a color filled rectangle at x=0 and y=0
|
|
138
|
+
// with width=32 and height=32
|
|
139
|
+
// and color=3 (white)
|
|
140
|
+
rectfill(0, 0, 32, 32, 3)
|
|
141
|
+
|
|
142
|
+
// draw a circle outline at x=64 and y=32
|
|
143
|
+
// with radius=40
|
|
144
|
+
// and color=5 (yellow)
|
|
145
|
+
circ(64, 32, 40, 5)
|
|
66
146
|
}
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### Keyboard
|
|
150
|
+
|
|
151
|
+
```js
|
|
152
|
+
litecanvas()
|
|
153
|
+
|
|
154
|
+
function update() {
|
|
155
|
+
if (iskeydown('space')) {
|
|
156
|
+
// checks if the spacebar key is down
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
if (iskeypressed('a')) {
|
|
160
|
+
// checks if the "a" key was pressed
|
|
161
|
+
}
|
|
67
162
|
|
|
68
|
-
//
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
posx = x
|
|
73
|
-
posy = y
|
|
163
|
+
// Returns the last key pressed in your keyboard.
|
|
164
|
+
const key = lastkey()
|
|
165
|
+
|
|
166
|
+
console.log(key)
|
|
74
167
|
}
|
|
168
|
+
```
|
|
75
169
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
170
|
+
> Note: you can call `iskeydown()` or `iskeypressed()` (without arguments) to check for any key.
|
|
171
|
+
|
|
172
|
+
### Clicks and Touches
|
|
173
|
+
|
|
174
|
+
```js
|
|
175
|
+
litecanvas()
|
|
176
|
+
|
|
177
|
+
let x, y
|
|
178
|
+
|
|
179
|
+
function tapped(tapX, tapY) {
|
|
180
|
+
// this function is called when a click or a touch happens
|
|
181
|
+
// tapX and tapY is where the tap happened
|
|
182
|
+
x = tapX
|
|
183
|
+
y = tapY
|
|
80
184
|
}
|
|
81
185
|
|
|
82
|
-
// put the game rendering in this function
|
|
83
186
|
function draw() {
|
|
84
|
-
cls(
|
|
85
|
-
|
|
86
|
-
|
|
187
|
+
cls(0)
|
|
188
|
+
|
|
189
|
+
if (x != null) {
|
|
190
|
+
// Draw a red circle wherever you tap
|
|
191
|
+
circfill(x, y, 32, 4)
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
### Mouse cursor
|
|
197
|
+
|
|
198
|
+
Use `MX` and `MY` variables (automatically declared by Litecanvas) to track the position of the mouse cursor.
|
|
199
|
+
|
|
200
|
+
```js
|
|
201
|
+
litecanvas()
|
|
202
|
+
|
|
203
|
+
function draw() {
|
|
204
|
+
cls(0)
|
|
205
|
+
|
|
206
|
+
// draw a red circle in the mouse cursor's position
|
|
207
|
+
circfill(MX, MY, 32, 4)
|
|
87
208
|
}
|
|
88
209
|
```
|
|
89
210
|
|
|
90
|
-
|
|
211
|
+
### Litecanvas' variables
|
|
212
|
+
|
|
213
|
+
Like `MX` and `MY`, Litecanvas also declares these other variables:
|
|
214
|
+
|
|
215
|
+
- `W`: the width of the game canvas
|
|
216
|
+
- `H`: the height of the game canvas
|
|
217
|
+
- `T`: the amount of seconds since the game started
|
|
218
|
+
- `PI`: approximately 3.14 radians (or 180 degrees)
|
|
219
|
+
- `TWO_PI`: approximately 6.28 radians (or 360 degrees)
|
|
220
|
+
- `HALF_PI`: approximately 1.57 radians (or 90 degrees)
|
|
91
221
|
|
|
92
|
-
|
|
222
|
+
### And much more!
|
|
223
|
+
|
|
224
|
+
You can find a complete list of everything litecanvas has to offer on our [cheatsheet](https://litecanvas.js.org/about.html).
|
|
93
225
|
|
|
94
226
|
## Demos
|
|
95
227
|
|
|
96
228
|
Try some demos in the playground:
|
|
97
229
|
|
|
98
|
-
- [Pong](https://litecanvas.js.org?c=eJy1VV1y00gQftcpmidJWJYl2U5IIKFMyiEPgKk4YMLW1paQxvYUiqSSxiT8hCtwgn3bQ3AeLsAV6J7RzyjEKV42rozdPT39%2B803CROQh%2FECDsAPPMcA%2FEP5hORxI74h0Wu3z1EeDSs5ZqUgA7JTmndhkmg%2Fz9ufc%2F6Jaa5JNUlXCelqb7yQ0RrpvJXKnLEYxaBOpYyyQjub8CUrURwqUbArQQErWxEWQh5fhknJDCPhgkVh%2BiEsrc%2FS4pLHYr0Pw7oPa8ZXa7EPoweouLYNYzCAo00psgt4%2B%2Bn4DZTZJo1LWGYFiDUvYRVeMLLJCyYEZ0Wfr1LMz4iytBTwZPbqxdEUw%2F%2FlgAM%2BG9KX6w1pCVDhQEAaB%2FZGXrVRf1zccXeU%2Fc7fD7fHmJ9NTs8ohOeOHewKjLFT8tgIl6EeZbzrVZHlUgXyRne5fzJ59uyf2fHx%2FOh0On1BcXx36MtyxhjAcz2KSnFw2ZXRpNTfc%2Fdw3aGVPp7r%2B%2FWvQJ6T60iuPlVoLDdpJHiWAk%2B5sGz43AIL4y4GQYsulE8GAfThBAYw6kyeTFHpB8a15lKEec5i68qBj7VjvgTrXoWQWtcFjSg2rFUvryzZa7tRYcM2RSrF6861%2BPrVusLk5CUbQGB3UtnkcSiYFYvbE1FOAQciuMBbUkYFY%2BnjxrIC%2FAHeAN2YgAjZB1Y8NqQpqi5QRJQyyiNOmH6xE1bklry8Kmc1SLs5GmepKdBKaOdRDCuHKqcmJen0EeVTuffkFsMr1%2B73VDsOYdGYLaoeGY0nNdxeyxuHcKLPpgaDv%2BN1dASI3VZVk4L67oPfmWIX0nY1v7p0NR7pFfKs5DQzDYi9A0VX9ytmug%2Bx0HCpts%2B724qosJnvkD0inY%2BqmEqvYiJCbrS3Cqw3ZQFfvlQJPWr0eqNUjgfQb0tvgze4vm5npNLf6kwy8p2ummKiNYveq1qiLEl4SaC%2F5GKt45BC4m7BIqHqc6pno0lA%2F6WQSo%2BQXBdIM%2FYtCWrFqleiR0%2FYH2QtG6B2bQURSdzdexsX4WXDSlFSWp59J48QIYUJkqllRiwVrDAdMC84tcC0O1YlFmnV%2FNXdspD2HOI6PHs2eQlnM0X46Gto35yhgvshXcQ2DWrxkieJ9XsT6dFv%2FMiqeBFJ220jqSliS%2Ba31S47Q6Wvw3TF09WN2i0f3yT6N3%2F8%2B9%2FP79%2FAdAuWs1CoamwHRrf7ZWl8h1eiltqzZZp4eyQibBdrnlNGFr6tnn2zi%2F%2FX9DCbAN9J8%2Bnk%2BRRmr6enZqfvv7lB3vDcB%2BNt3nqqY%2FOj2el0n4r7oxIRzb8ATsCfrQ%3D%3D)
|
|
99
230
|
- [Bouncing Ball](https://litecanvas.js.org?c=eJxtkkFugzAQRfecYpaGOMFJW6lVQhddcQPWlm0iSy4gY0hRkrt3ADc4SRdI9nzm%2FzcMRjlo6lY7XVeQQa8E2TJG8YlpBHg3tdBuGM9Hy3t%2FtFzqrsX3X9%2BjyGinBK963pI4isquEpOZrrQjMZwDFx9QJDuap7t4v5h6hdEcq9fApWskd4pINzv9oW5%2BYJXdfPGWgHShPtzpw6wHKLOBT1%2F6g45AXtrTFL5qZFNQlyUoeVQtVnUJZCFb%2Ba%2FzCQVcLgHy2gsHYPM0dzhJBuvt%2Fp8q23y8TeVg%2BAyE4d9NkEr9UigUPifGpusjHc4FN778CWOYMJ4TxwXl3neyDXckLT%2F5TQvTEjYtVmgrSm1MiLjYUQ%2F78rDu8SfAUYbZzSrX2QrOYwUjfwF7%2FdPj)
|
|
100
231
|
- [Scroller](https://litecanvas.js.org?c=eJxVUM1SgzAQvvMU68FpAhFDLVpH%2BxbOcOj0ECGUzATSIYsyOn13NwXRHpJNvv1%2BkrUGdam6D%2BUZj6J66Eo0rgPTGQTG4TsCaLX36qhhB6tC29K1GtCBXYQ3KyKN1C6onpSl034jcvEonsRWPItMiiw7ROd%2F9sOpUqiBVThFePMV%2FIv7OSu1ujtiQ52G4FxeAu528CAlxFDhHNiqkY0C1pJfuVe9%2Bvx9fGk9ozZA7XpgViMYEsoXKq9wnUZYkkwqgMBEYr4lTKZZbPiC0kLdh%2FRZ7Yd3jz0zArI%2FVumsCySax762zvUM4%2FyWbnMYP1yoqEcMn2dh4wvExsTEAYpluhXQJGuZeNORx4bHjZjfIKaUIDvTAH4AEIGEgw%3D%3D)
|
|
101
232
|
- [3D projection](https://litecanvas.js.org?c=eJyNVcuS2jAQvPsrJofUykE8wykJySlVyRckuy4fZGwWgZEpWQSWFP%2BeGUlgizVLqgyyprul1mgkl9IUc6H%2BiJrFUbTYqbmRlQKppGEx%2FI0AanksYAa%2F4Cv8gG%2F4G8IUPmEfW4S3uloVTjSDBAMAyZjDCJ%2BUuy6%2Bj8MuRWw3pREqqUzdqPs0I4d2k3IYDiE5cHjhcEwdr4vWRjqA%2Fj2kRQgHuwm8jvc7gbTJVZHTYikg1HNJyR1Fp1byd9tcmILlxm2AI%2FWQNRiNIwwsKg2sLAxIkn7G5otP4qAs1LNZYqjXc2KAeaVqgzhl2LImG2G0PLDBYOBUiUxjS6UxdWWEc4i0za5kNoC2fjNrJOY0luPf5D5euJ5yh%2F%2FUzb%2FkCx02oqbiAvopyGGuxd4X8Lys2SimxG139ZIRt5Sq2MvcLNmEukYLVZeUc6rqCbdFbpGuVE%2Bv06vQDZMcmIQejGN4D1PeeI9DGlIQZS1u7EK3BBxkB%2BFkD84WV9Ne9VkkOGTc14QzSitmfrtFmozoOTMoMA4C2TUjuzA%2BhjP6PaEJfbZtuYl5VVLBCdT4omwwXe0tdg1kXpR1iDIvys4AInIBzE30bjZzjBjMElvA7YXvWleaPfzEy62UObiqL%2BoHWwpuVF3U56PYtdPWabDbKHC1mLhL6KJaOdUKVXYZ%2BNqo3Mmqdxt71F3kolw75Zrmc8p1WwlW16NUyjRZp%2FAB87NOk1XqCSffOmsYx%2FFQEp2xEy1XF2anFXGC3WvOtha5xEPg5vXsm7f5vKovAns1qla3TQyRUDby12KXn8e3%2FFwNE85y45tz7TE084aTp%2F93cisP95Pw6qPYdhLc2f4LGJpJDngukxf6O6Yk%2FgdWEko3)
|
|
@@ -103,6 +234,19 @@ Try some demos in the playground:
|
|
|
103
234
|
|
|
104
235
|
> _See other demos in [samples](/samples) folder_
|
|
105
236
|
|
|
237
|
+
## Contributing
|
|
238
|
+
|
|
239
|
+
1. Fork this repository and clone it.
|
|
240
|
+
1. Install the dependencies: `npm i`
|
|
241
|
+
1. Create a new branch and make your changes.
|
|
242
|
+
1. Format the code: `npm run format`
|
|
243
|
+
1. Create new tests in `tests` directory, if necessary.
|
|
244
|
+
1. Test with `npm run test`
|
|
245
|
+
1. Create your pull request.
|
|
246
|
+
1. Done!
|
|
247
|
+
|
|
248
|
+
> Note: You'll need Node.JS installed in your machine.
|
|
249
|
+
|
|
106
250
|
## Inspirations
|
|
107
251
|
|
|
108
252
|
- [floppy](https://github.com/lpagg/floppy): a micro game engine for beginners.
|
package/dist/dist.dev.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "litecanvas",
|
|
3
|
-
"version": "0.98.
|
|
3
|
+
"version": "0.98.2",
|
|
4
4
|
"description": "Lightweight HTML5 canvas 2D game engine suitable for small projects and creative coding. Inspired by PICO-8 and p5.js/Processing.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Luiz Bills <luizbills@pm.me>",
|
package/src/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Generated by genversion.
|
|
2
|
-
export const version = '0.98.
|
|
2
|
+
export const version = '0.98.2'
|