Skip to content

Commit 2bfe9c9

Browse files
committed
Initial files for MakeCode project
1 parent de82567 commit 2bfe9c9

File tree

10 files changed

+357
-0
lines changed

10 files changed

+357
-0
lines changed

.github/workflows/makecode.yml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
name: MakeCode
2+
3+
on: [push]
4+
5+
jobs:
6+
build:
7+
8+
runs-on: ubuntu-latest
9+
10+
strategy:
11+
matrix:
12+
node-version: [8.x]
13+
14+
steps:
15+
- uses: actions/checkout@v1
16+
- name: Use Node.js ${{ matrix.node-version }}
17+
uses: actions/setup-node@v1
18+
with:
19+
node-version: ${{ matrix.node-version }}
20+
- name: npm install
21+
run: |
22+
npm install -g pxt
23+
pxt target arcade
24+
- name: build
25+
run: |
26+
pxt install
27+
pxt build --cloud
28+
env:
29+
CI: true

.vscode/settings.json

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{
2+
"editor.formatOnType": true,
3+
"files.autoSave": "afterDelay",
4+
"files.watcherExclude": {
5+
"**/.git/objects/**": true,
6+
"**/built/**": true,
7+
"**/node_modules/**": true,
8+
"**/yotta_modules/**": true,
9+
"**/yotta_targets": true,
10+
"**/pxt_modules/**": true
11+
},
12+
"files.associations": {
13+
"*.blocks": "html",
14+
"*.jres": "json"
15+
},
16+
"search.exclude": {
17+
"**/built": true,
18+
"**/node_modules": true,
19+
"**/yotta_modules": true,
20+
"**/yotta_targets": true,
21+
"**/pxt_modules": true
22+
}
23+
}

.vscode/tasks.json

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
2+
// A task runner that calls the MakeCode (PXT) compiler
3+
{
4+
"version": "2.0.0",
5+
"tasks": [{
6+
"label": "pxt deploy",
7+
"type": "shell",
8+
"command": "pxt deploy --local",
9+
"group": "build",
10+
"problemMatcher": [ "$tsc" ]
11+
}, {
12+
"label": "pxt build",
13+
"type": "shell",
14+
"command": "pxt build --local",
15+
"group": "build",
16+
"problemMatcher": [ "$tsc" ]
17+
}, {
18+
"label": "pxt install",
19+
"type": "shell",
20+
"command": "pxt install",
21+
"group": "build",
22+
"problemMatcher": [ "$tsc" ]
23+
}, {
24+
"label": "pxt clean",
25+
"type": "shell",
26+
"command": "pxt clean",
27+
"group": "test",
28+
"problemMatcher": [ "$tsc" ]
29+
}, {
30+
"label": "pxt serial",
31+
"type": "shell",
32+
"command": "pxt serial",
33+
"group": "test",
34+
"problemMatcher": [ "$tsc" ]
35+
}]
36+
}

Makefile

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
all: deploy
2+
3+
build:
4+
pxt build
5+
6+
deploy:
7+
pxt deploy
8+
9+
test:
10+
pxt test

README.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# cats-vs-bats-9000 ![Build status badge](https://github.com/shadowbaby22/cats-vs-bats-9000/workflows/MakeCode/badge.svg)
2+
3+
4+
5+
## Use this extension
6+
7+
This repository can be added as an **extension** in MakeCode.
8+
9+
* open https://arcade.makecode.com/
10+
* click on **New Project**
11+
* click on **Extensions** under the gearwheel menu
12+
* search for the URL of this repository and import
13+
14+
## Edit this extension
15+
16+
To edit this repository in MakeCode.
17+
18+
* open https://arcade.makecode.com/
19+
* click on **Import** then click on **Import URL**
20+
* paste the repository URL and click import
21+
22+
## Blocks preview
23+
24+
This image shows the blocks code from the last commit in master.
25+
This image may take a few minutes to refresh.
26+
27+
![A rendered view of the blocks](https://github.com/shadowbaby22/cats-vs-bats-9000/raw/master/.makecode/blocks.png)
28+
29+
## Supported targets
30+
31+
* for PXT/arcade
32+
* for PXT/arcade
33+
(The metadata above is needed for package search.)
34+

main.blocks

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
<xml xmlns="https://developers.google.com/blockly/xml"><variables><variable id="{*Jh42PxqbI8,7}=t(cn">projectile</variable><variable id="3$1MLW_xM-!z,=ere=.,">SpacePlane</variable><variable id="dQ.|Y+x6Rgk3HV}yRC[I">Zubat</variable><variable type="KIND_SpriteKind" id="lh3(EQ;K.p)~tgncB``y">Player</variable><variable type="KIND_SpriteKind" id="F[d;eX^Dw:Up/z)gdJ^_">Projectile</variable><variable type="KIND_SpriteKind" id="yIvW!c.o#s`61iItTX_I">Food</variable><variable type="KIND_SpriteKind" id="cL8/%tCtNFS,.S5jZ)b-">Enemy</variable></variables><block type="pxt-on-start" x="0" y="0"><statement name="HANDLER"><block type="playMelody"><value name="melody"><shadow type="melody_editor"><field name="melody">"G G A G C5 B A B "</field></shadow></value><value name="tempo"><shadow type="math_number_minmax"><mutation min="40" max="500" label="Number" precision="0"/><field name="SLIDER">120</field></shadow></value><next><block type="mixer_play_note"><value name="note"><shadow type="device_note"><field name="note">262</field></shadow></value><value name="duration"><shadow type="device_beat"/><block type="typescript_expression" editable="false"><field name="EXPRESSION">BeatFraction.Half</field></block></value><next><block type="variables_set"><field name="VAR" id="3$1MLW_xM-!z,=ere=.,">SpacePlane</field><value name="VALUE"><shadow type="math_number"><field name="NUM">0</field></shadow><block type="spritescreate"><value name="img"><shadow type="screen_image_picker"><field name="img">img`
2+
. . . . . . . . . . . . . .
3+
e e e . . . . e e e . . . .
4+
c d d c . . c d d c . . . .
5+
c b d d f f d d b c . . . .
6+
c 3 b d d b d b 3 c . . . .
7+
f b 3 d d d d 3 b f . . . .
8+
e d d d d d d d d e . . . .
9+
e d 6 d d d d 6 d e b f b .
10+
f d d 6 d d 6 d d f f d f .
11+
f b d d b b d d 2 b f d f .
12+
. f 2 2 2 2 2 2 d b d b f .
13+
. f d d d d d d d f f f . .
14+
. f d b d f f f d f . . . .
15+
. . f f f f . . f f . . . .
16+
`</field></shadow></value><value name="kind"><shadow type="spritekind"><field name="MEMBER">Player</field></shadow></value></block></value><next><block type="run_image_animation"><value name="sprite"><shadow type="variables_get"><field name="VAR" id="3$1MLW_xM-!z,=ere=.,">SpacePlane</field></shadow></value><value name="frames"><shadow type="animation_editor"><field name="frames">[img`
17+
e e e . . . . e e e . . . .
18+
c d d c . . c d d c . . . .
19+
c b d d f f d d b c . . . .
20+
c 3 b d d b d b 3 c . . . .
21+
f b 3 d d d d 3 b f . . . .
22+
e d d d d d d d d e . . . .
23+
e d f d d d d f d e . b f b
24+
f d d f d d f d d f . f d f
25+
f b d d b b d d 2 f . f d f
26+
. f 2 2 2 2 2 2 b b f f d f
27+
. f b d d d d d d b b d b f
28+
. f d d d d d b d d f f f .
29+
. f d f f f d f f d f . . .
30+
. f f . . f f . . f f . . .
31+
`,img`
32+
. . . . . . . . . . . . . .
33+
e e e . . . . e e e . . . .
34+
c d d c . . c d d c . . . .
35+
c b d d f f d d b c . . . .
36+
c 3 b d d b d b 3 c . . . .
37+
f b 3 d d d d 3 b f . . . .
38+
e d d d d d d d d e . . . .
39+
e d f d d d d f d e b f b .
40+
f d d f d d f d d f f d f .
41+
f b d d b b d d 2 b f d f .
42+
. f 2 2 2 2 2 2 d b d b f .
43+
. f d d d d d d d f f f . .
44+
. f d b d f f f d f . . . .
45+
. . f f f f . . f f . . . .
46+
`,img`
47+
. . . . . . . . . . . . . .
48+
e e e . . . . e e e . . . .
49+
c d d c . . c d d c . . . .
50+
c b d d f f d d b c . . . .
51+
c 3 b d d b d b 3 c . . . .
52+
f b 3 d d d d 3 b f . . . .
53+
e d d d d d d d d e . . . .
54+
e d f d d d d f d e . b f b
55+
f d d f d d f d d f . f d f
56+
f b d d b b d d 2 b f f d f
57+
. f 2 2 2 2 2 2 d b b d b f
58+
. f d d d d d d d f f f f .
59+
. . f d b d f d f . . . . .
60+
. . . f f f f f f . . . . .
61+
`]</field></shadow></value><value name="frameInterval"><shadow type="timePicker"><field name="ms">100</field></shadow></value><value name="loop"><shadow type="toggleOnOff"><field name="on">false</field></shadow></value><next><block type="game_control_sprite"><mutation xmlns="http://www.w3.org/1999/xhtml" _expanded="2" _input_init="true"></mutation><value name="sprite"><shadow type="variables_get"><field name="VAR" id="3$1MLW_xM-!z,=ere=.,">SpacePlane</field></shadow></value><value name="vx"><shadow type="math_number"><field name="NUM">200</field></shadow></value><value name="vy"><shadow type="math_number"><field name="NUM">200</field></shadow></value><next><block type="spritesetsetflag"><field name="flag">SpriteFlag.StayInScreen</field><value name="sprite"><block type="variables_get"><field name="VAR" id="3$1MLW_xM-!z,=ere=.,">SpacePlane</field></block></value><value name="on"><shadow type="toggleOnOff"><field name="on">true</field></shadow></value><next><block type="hudSetLife"><value name="value"><shadow type="math_number"><field name="NUM">3</field></shadow></value></block></next></block></next></block></next></block></next></block></next></block></next></block></statement></block><block type="keyonevent" x="670" y="190"><field name="button">controller.A</field><field name="event">ControllerButtonEvent.Pressed</field><statement name="HANDLER"><block type="variables_set"><field name="VAR" id="{*Jh42PxqbI8,7}=t(cn">projectile</field><value name="VALUE"><shadow type="math_number"><field name="NUM">0</field></shadow><block type="spritescreateprojectilefromsprite"><value name="img"><shadow type="screen_image_picker"><field name="img">img`
62+
2 . . . . . . .
63+
2 4 4 5 5 5 5 5
64+
2 5 5 5 5 5 5 5
65+
2 . . . . . . .
66+
`</field></shadow></value><value name="sprite"><shadow type="variables_get"><field name="VAR" id="3$1MLW_xM-!z,=ere=.,">SpacePlane</field></shadow></value><value name="vx"><shadow type="spriteSpeedPicker"><field name="speed">200</field></shadow></value><value name="vy"><shadow type="spriteSpeedPicker"><field name="speed">0</field></shadow></value></block></value><next><block type="mixer_play_sound_until_done"><field name="sound">music.pewPew</field></block></next></block></statement></block><block type="gameinterval" x="260" y="420"><value name="period"><shadow type="timePicker"><field name="ms">500</field></shadow></value><statement name="HANDLER"><block type="variables_set"><field name="VAR" id="dQ.|Y+x6Rgk3HV}yRC[I">Zubat</field><value name="VALUE"><shadow type="math_number"><field name="NUM">0</field></shadow><block type="spritescreate"><value name="img"><shadow type="screen_image_picker"><field name="img">img`
67+
. . f f f . . . . . . . . . . .
68+
f f f c c . . . . . . . . f f f
69+
f f c c c . c c . . . f c b b c
70+
f f c 3 c c 3 c c f f b b b c .
71+
f f c 3 b c 3 b c f b b c c c .
72+
f c b b b b b b c f b c b c c .
73+
c c 1 b b b 1 b c b b c b b c .
74+
c b b b b b b b b b c c c b c .
75+
c b 1 f f 1 c b b c c c c c . .
76+
c f 1 f f 1 f b b b b f c . . .
77+
f f f f f f f b b b b f c . . .
78+
f f 2 2 2 2 f b b b b f c c . .
79+
. f 2 2 2 2 2 b b b c f . . . .
80+
. . f 2 2 2 b b b c f . . . . .
81+
. . . f f f f f f f . . . . . .
82+
. . . . . . . . . . . . . . . .
83+
`</field></shadow></value><value name="kind"><shadow type="spritekind"><field name="MEMBER">Enemy</field></shadow></value></block></value><next><block type="spritesetvel"><value name="sprite"><block type="variables_get"><field name="VAR" id="dQ.|Y+x6Rgk3HV}yRC[I">Zubat</field></block></value><value name="vx"><shadow type="spriteSpeedPicker"><field name="speed">-100</field></shadow></value><value name="vy"><shadow type="spriteSpeedPicker"><field name="speed">0</field></shadow></value><next><block type="spritesetpos"><value name="sprite"><block type="variables_get"><field name="VAR" id="dQ.|Y+x6Rgk3HV}yRC[I">Zubat</field></block></value><value name="x"><shadow type="positionPicker"><field name="index">180</field></shadow></value><value name="y"><shadow type="positionPicker"/><block type="device_random"><value name="min"><shadow type="math_number"><field name="NUM">0</field></shadow></value><value name="limit"><shadow type="math_number"><field name="NUM">120</field></shadow></value></block></value></block></next></block></next></block></statement></block><block type="spritesoverlap" x="260" y="700"><value name="HANDLER_DRAG_PARAM_sprite"><shadow type="argument_reporter_custom"><mutation typename="Sprite"/><field name="VALUE">sprite</field></shadow></value><value name="kind"><shadow type="spritekind"><field name="MEMBER">Player</field></shadow></value><value name="HANDLER_DRAG_PARAM_otherSprite"><shadow type="argument_reporter_custom"><mutation typename="Sprite"/><field name="VALUE">otherSprite</field></shadow></value><value name="otherKind"><shadow type="spritekind"><field name="MEMBER">Enemy</field></shadow></value><statement name="HANDLER"><block type="spritedestroy"><mutation xmlns="http://www.w3.org/1999/xhtml" _expanded="2" _input_init="true"></mutation><field name="effect">effects.fire</field><value name="sprite"><block type="argument_reporter_custom"><mutation typename="Sprite"/><field name="VALUE">otherSprite</field></block></value><value name="duration"><shadow type="timePicker"><field name="ms">200</field></shadow></value><next><block type="hudChangeLifeBy"><value name="value"><shadow type="math_number"><field name="NUM">-1</field></shadow></value></block></next></block></statement></block><block type="spritesoverlap" x="260" y="900"><value name="HANDLER_DRAG_PARAM_sprite"><shadow type="argument_reporter_custom"><mutation typename="Sprite"/><field name="VALUE">sprite</field></shadow></value><value name="kind"><shadow type="spritekind"><field name="MEMBER">Projectile</field></shadow></value><value name="HANDLER_DRAG_PARAM_otherSprite"><shadow type="argument_reporter_custom"><mutation typename="Sprite"/><field name="VALUE">otherSprite</field></shadow></value><value name="otherKind"><shadow type="spritekind"><field name="MEMBER">Enemy</field></shadow></value><statement name="HANDLER"><block type="spritedestroy"><mutation xmlns="http://www.w3.org/1999/xhtml" _expanded="0" _input_init="false"></mutation><value name="sprite"><block type="argument_reporter_custom"><mutation typename="Sprite"/><field name="VALUE">otherSprite</field></block></value><next><block type="spritedestroy"><mutation xmlns="http://www.w3.org/1999/xhtml" _expanded="2" _input_init="true"></mutation><field name="effect">effects.fire</field><value name="sprite"><block type="argument_reporter_custom"><mutation typename="Sprite"/><field name="VALUE">sprite</field></block></value><value name="duration"><shadow type="timePicker"><field name="ms">500</field></shadow></value><next><block type="hudChangeScoreBy"><value name="value"><shadow type="math_number"><field name="NUM">1</field></shadow></value></block></next></block></next></block></statement></block></xml>

main.ts

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
sprites.onOverlap(SpriteKind.Projectile, SpriteKind.Enemy, function (sprite, otherSprite) {
2+
otherSprite.destroy()
3+
sprite.destroy(effects.fire, 500)
4+
info.changeScoreBy(1)
5+
})
6+
controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
7+
projectile = sprites.createProjectileFromSprite(img`
8+
2 . . . . . . .
9+
2 4 4 5 5 5 5 5
10+
2 5 5 5 5 5 5 5
11+
2 . . . . . . .
12+
`, SpacePlane, 200, 0)
13+
music.pewPew.playUntilDone()
14+
})
15+
sprites.onOverlap(SpriteKind.Player, SpriteKind.Enemy, function (sprite, otherSprite) {
16+
otherSprite.destroy(effects.fire, 200)
17+
info.changeLifeBy(-1)
18+
})
19+
let Zubat: Sprite = null
20+
let projectile: Sprite = null
21+
let SpacePlane: Sprite = null
22+
music.playMelody("G G A G C5 B A B ", 120)
23+
music.playTone(262, BeatFraction.Half)
24+
SpacePlane = sprites.create(img`
25+
. . . . . . . . . . . . . .
26+
e e e . . . . e e e . . . .
27+
c d d c . . c d d c . . . .
28+
c b d d f f d d b c . . . .
29+
c 3 b d d b d b 3 c . . . .
30+
f b 3 d d d d 3 b f . . . .
31+
e d d d d d d d d e . . . .
32+
e d 6 d d d d 6 d e b f b .
33+
f d d 6 d d 6 d d f f d f .
34+
f b d d b b d d 2 b f d f .
35+
. f 2 2 2 2 2 2 d b d b f .
36+
. f d d d d d d d f f f . .
37+
. f d b d f f f d f . . . .
38+
. . f f f f . . f f . . . .
39+
`, SpriteKind.Player)
40+
animation.runImageAnimation(
41+
SpacePlane,
42+
[img`
43+
e e e . . . . e e e . . . .
44+
c d d c . . c d d c . . . .
45+
c b d d f f d d b c . . . .
46+
c 3 b d d b d b 3 c . . . .
47+
f b 3 d d d d 3 b f . . . .
48+
e d d d d d d d d e . . . .
49+
e d f d d d d f d e . b f b
50+
f d d f d d f d d f . f d f
51+
f b d d b b d d 2 f . f d f
52+
. f 2 2 2 2 2 2 b b f f d f
53+
. f b d d d d d d b b d b f
54+
. f d d d d d b d d f f f .
55+
. f d f f f d f f d f . . .
56+
. f f . . f f . . f f . . .
57+
`,img`
58+
. . . . . . . . . . . . . .
59+
e e e . . . . e e e . . . .
60+
c d d c . . c d d c . . . .
61+
c b d d f f d d b c . . . .
62+
c 3 b d d b d b 3 c . . . .
63+
f b 3 d d d d 3 b f . . . .
64+
e d d d d d d d d e . . . .
65+
e d f d d d d f d e b f b .
66+
f d d f d d f d d f f d f .
67+
f b d d b b d d 2 b f d f .
68+
. f 2 2 2 2 2 2 d b d b f .
69+
. f d d d d d d d f f f . .
70+
. f d b d f f f d f . . . .
71+
. . f f f f . . f f . . . .
72+
`,img`
73+
. . . . . . . . . . . . . .
74+
e e e . . . . e e e . . . .
75+
c d d c . . c d d c . . . .
76+
c b d d f f d d b c . . . .
77+
c 3 b d d b d b 3 c . . . .
78+
f b 3 d d d d 3 b f . . . .
79+
e d d d d d d d d e . . . .
80+
e d f d d d d f d e . b f b
81+
f d d f d d f d d f . f d f
82+
f b d d b b d d 2 b f f d f
83+
. f 2 2 2 2 2 2 d b b d b f
84+
. f d d d d d d d f f f f .
85+
. . f d b d f d f . . . . .
86+
. . . f f f f f f . . . . .
87+
`],
88+
100,
89+
false
90+
)
91+
controller.moveSprite(SpacePlane, 200, 200)
92+
SpacePlane.setFlag(SpriteFlag.StayInScreen, true)
93+
info.setLife(3)
94+
game.onUpdateInterval(500, function () {
95+
Zubat = sprites.create(img`
96+
. . f f f . . . . . . . . . . .
97+
f f f c c . . . . . . . . f f f
98+
f f c c c . c c . . . f c b b c
99+
f f c 3 c c 3 c c f f b b b c .
100+
f f c 3 b c 3 b c f b b c c c .
101+
f c b b b b b b c f b c b c c .
102+
c c 1 b b b 1 b c b b c b b c .
103+
c b b b b b b b b b c c c b c .
104+
c b 1 f f 1 c b b c c c c c . .
105+
c f 1 f f 1 f b b b b f c . . .
106+
f f f f f f f b b b b f c . . .
107+
f f 2 2 2 2 f b b b b f c c . .
108+
. f 2 2 2 2 2 b b b c f . . . .
109+
. . f 2 2 2 b b b c f . . . . .
110+
. . . f f f f f f f . . . . . .
111+
. . . . . . . . . . . . . . . .
112+
`, SpriteKind.Enemy)
113+
Zubat.setVelocity(-100, 0)
114+
Zubat.setPosition(180, Math.randomRange(0, 120))
115+
})

pxt.json

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"name": "Cats vs Bats 9000",
3+
"dependencies": {
4+
"device": "*",
5+
"animation": "*"
6+
},
7+
"description": "",
8+
"files": [
9+
"main.blocks",
10+
"main.ts",
11+
"README.md"
12+
],
13+
"preferredEditor": "blocksprj",
14+
"testFiles": [
15+
"test.ts"
16+
]
17+
}

test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
// tests go here; this will not be compiled when this package is used as an extension.

tsconfig.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"compilerOptions": {
3+
"target": "es5",
4+
"noImplicitAny": true,
5+
"outDir": "built",
6+
"rootDir": "."
7+
},
8+
"exclude": ["pxt_modules/**/*test.ts"]
9+
}

0 commit comments

Comments
 (0)