mirror of
https://github.com/kou029w/microbit-life-of-game.git
synced 2025-01-18 07:55:01 +00:00
first commit
This commit is contained in:
commit
b5c7603b61
6 changed files with 112 additions and 0 deletions
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
build
|
||||||
|
yotta_targets
|
||||||
|
yotta_modules
|
5
.yotta.json
Normal file
5
.yotta.json
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"build": {
|
||||||
|
"target": "bbc-microbit-classic-gcc,*"
|
||||||
|
}
|
||||||
|
}
|
21
LICENSE
Normal file
21
LICENSE
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2017 Kohei Watanabe.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
copy of this software and associated documentation files (the "Software"),
|
||||||
|
to deal in the Software without restriction, including without limitation
|
||||||
|
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
Software is furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
DEALINGS IN THE SOFTWARE.
|
15
README.md
Normal file
15
README.md
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
# microbit-life-of-game
|
||||||
|
|
||||||
|
micro:bitでライフゲームが動きます
|
||||||
|
|
||||||
|
## 動作手順
|
||||||
|
|
||||||
|
あらかじめ [Offline Development - micro:bit runtime](https://lancaster-university.github.io/microbit-docs/offline-toolchains/) などを参考に、yottaをインストールします
|
||||||
|
|
||||||
|
```
|
||||||
|
git clone https://github.com/kou029w/microbit-life-of-game
|
||||||
|
cd microbit-life-of-game
|
||||||
|
yt build
|
||||||
|
```
|
||||||
|
|
||||||
|
`./build/bbc-microbit-classic-gcc/source/microbit-life-of-game-combined.hex` をmicro:bitにコピーすると動作します
|
10
module.json
Normal file
10
module.json
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"name": "microbit-life-of-game",
|
||||||
|
"version": "0.0.1",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"microbit": "lancaster-university/microbit"
|
||||||
|
},
|
||||||
|
"targetDependencies": {},
|
||||||
|
"bin": "./source"
|
||||||
|
}
|
58
source/main.cpp
Normal file
58
source/main.cpp
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
#include "MicroBit.h"
|
||||||
|
|
||||||
|
MicroBit uBit;
|
||||||
|
MicroBitImage field("0,1,0,0,0\n0,0,1,1,0\n1,1,0,0,0\n0,0,1,0,0\n0,0,0,0,0\n");
|
||||||
|
enum Life {DIE = 0, LIVE = 255};
|
||||||
|
|
||||||
|
Life deadOrAlive(int x, int y) {
|
||||||
|
int survivor = 0;
|
||||||
|
|
||||||
|
for (int row = (y > 0 ? -1 : 0); row <= (y < 4 ? 1 : 0); row++) {
|
||||||
|
for (int col = (x > 0 ? -1 : 0); col <= (x < 4 ? 1 : 0); col++) {
|
||||||
|
if (col == 0 && row == 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (field.getPixelValue(x + col, y + row))
|
||||||
|
survivor++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (field.getPixelValue(x, y)) {
|
||||||
|
if (survivor == 2 || survivor == 3)
|
||||||
|
return LIVE;
|
||||||
|
else
|
||||||
|
return DIE;
|
||||||
|
} else {
|
||||||
|
if (survivor == 3)
|
||||||
|
return LIVE;
|
||||||
|
else
|
||||||
|
return DIE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void fieldUpdate() {
|
||||||
|
MicroBitImage nextGeneration(5, 5);
|
||||||
|
|
||||||
|
for (int y = 0; y < 5; y++) {
|
||||||
|
for (int x = 0; x < 5; x++) {
|
||||||
|
nextGeneration.setPixelValue(x, y, deadOrAlive(x, y));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
field.paste(nextGeneration);
|
||||||
|
}
|
||||||
|
|
||||||
|
void lifeOfGame() {
|
||||||
|
while(1) {
|
||||||
|
uBit.sleep(1000);
|
||||||
|
uBit.display.image.paste(field);
|
||||||
|
fieldUpdate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
uBit.init();
|
||||||
|
|
||||||
|
while(1)
|
||||||
|
lifeOfGame();
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue