Skip to content
A library inspired by the pico-8 API for writing games for the Kano Pixel
JavaScript
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
community-sdk @ 8413450
.gitignore
.gitmodules
CHANGELOG.md
LICENSE
README.md
code-of-conduct.md
example.js
exported-animation.json
font.js
index.d.ts
index.js
package.json
yarn.lock

README.md

Pixel 8

A library inspired by the pico-8 API for writing games for the Kano Pixel.

Expect breaking changes every patch / minor until 1.0.0

Usage

You can setup a pixel-8 project thus:

mkdir demo
cd demo
npm init -y
yarn add pixel-eight

Example Program

const { color, createMap, start } = require("pixel-eight");

const { bitmaps } = require("./exported-animation.json");

const map = createMap([
  "cccccccccccccccc",
  "c              c",
  "c              c",
  "c              c",
  "c              c",
  "c              c",
  "c              c",
  "cccccccccccccccc"
]);

start({
  init: () => {
    return { x: 1, y: 1 };
  },

  update: ({ x, y }, { pressed }) => {
    if (pressed.down && !map.pget(x, y + 1)) {
      y += 1;
    }
    if (pressed.up && y > 1 && !map.pget(x, y - 1)) {
      y -= 1;
    }
    if (pressed.left && x > 1 && !map.pget(x - 1, y)) {
      x -= 1;
    }
    if (pressed.right && !map.pget(x + 1, y)) {
      x += 1;
    }
    return { x, y };
  },

  draw: (frame, { x, y }) => {
    frame.bset(bitmaps[0]);
    frame.mset(0, 0, map, 0);
    frame.rect(1, 1, 15, 7, color.pink);
    frame.pset(x, y, color.red);
  }
});

If you put the above script in a example.js file, you can then run it:

node ./example.js

If you install nodemon it makes for a good development environment as it'll restart each time you hit save.

yarn add -D nodemon
./node_modules/.bin/nodemon ./example.js

Contributing

Please read our code of conduct which comes from Contributor Covenant.

If you have questions, suggestions or want to contribute changes please check the issues list to see if it's already been raised, if not please create an issue. Please try to provide lots of context when creating an issue, if it's a bug report please provide reproduction steps, if it's a feature request please describe why it's valuable.

Contact

Contact is best done through the repository's issues. Messages that are unsuitable for the issue tracker can be sent as direct message to my twitter profile.

You can’t perform that action at this time.