Skip to content

Commit 539357c

Browse files
committed
初期位置を設定
1 parent 2e10473 commit 539357c

File tree

6 files changed

+65
-34
lines changed

6 files changed

+65
-34
lines changed

src/constants.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,6 @@ export enum Facing {
1515
left = "left",
1616
right = "right",
1717
}
18+
export type MovableBlock = {
19+
block: Block.movable;
20+
};

src/context.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ export type Context = {
1010
grid: Grid;
1111
blockSize: number;
1212

13+
// about player
14+
initialPlayerX: number; // initial player position in X direction
15+
initialPlayerY: number; // initial player position in Y direction
16+
1317
// about time
1418
elapsed: number;
1519
};

src/grid.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ export class Grid {
2424
) {
2525
this.stage = stage;
2626
const cells: GridCell[][] = [];
27-
for (let y = 0; y < stageDefinition.length; y++) {
28-
const rowDefinition = stageDefinition[y].split("");
27+
for (let y = 0; y < stageDefinition.stage.length; y++) {
28+
const rowDefinition = stageDefinition.stage[y].split("");
2929
const row: GridCell[] = [];
3030
for (let x = 0; x < rowDefinition.length; x++) {
3131
const cellDef = rowDefinition[x];
@@ -59,6 +59,13 @@ export class Grid {
5959
getBlock(x: number, y: number): Block | undefined {
6060
return this.cells[y]?.[x]?.block;
6161
}
62+
getMovableBlock(x: number, y: number): Block.movable | undefined {
63+
const cell = this.cells[y]?.[x];
64+
if (!cell) return undefined;
65+
if (cell.block === Block.movable) {
66+
return cell.block;
67+
}
68+
}
6269
setBlock(cx: Context, x: number, y: number, block: Block) {
6370
const prev = this.cells[y][x];
6471
if (block === prev.block) return;

src/main.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ export async function setup(el: HTMLElement, stageDefinition: StageDefinition) {
2424
const stage = new Container();
2525
app.stage.addChild(stage);
2626

27-
const gridX = stageDefinition[0].length;
28-
const gridY = stageDefinition.length;
27+
const gridX = stageDefinition.stage[0].length;
28+
const gridY = stageDefinition.stage.length;
2929

3030
// Initialize the application
3131
await app.init({ background: "white", resizeTo: window });
@@ -41,6 +41,8 @@ export async function setup(el: HTMLElement, stageDefinition: StageDefinition) {
4141
gridX,
4242
gridY,
4343
blockSize,
44+
initialPlayerX: stageDefinition.initialPlayerX,
45+
initialPlayerY: stageDefinition.initialPlayerY,
4446
grid,
4547
elapsed: 0,
4648
};

src/player.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@ export class Player {
3030
this.sprite = new Sprite(spriteOptions);
3131
// Center the sprite's anchor point
3232
this.sprite.anchor.set(0.5, 1);
33-
// todo: 初期座標をフィールドとともにどこかで決定
34-
this.sprite.x = 2 * cx.blockSize;
35-
this.sprite.y = 2 * cx.blockSize;
33+
34+
this.sprite.x = cx.blockSize * cx.initialPlayerX;
35+
this.sprite.y = cx.blockSize * (cx.gridY - cx.initialPlayerY);
3636
this.sprite.width = c.playerWidth * cx.blockSize;
3737
this.sprite.height = c.playerHeight * cx.blockSize;
3838

src/stages.ts

Lines changed: 42 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,53 @@
1-
export type StageDefinition = string[];
1+
export type StageDefinition = {
2+
stage: string[];
3+
initialPlayerX: number;
4+
initialPlayerY: number;
5+
};
26
export const stages = new Map<string, StageDefinition>([
37
[
48
"1",
5-
[
6-
"bbbbbbbbbbbbbbbbbb",
7-
".........b........",
8-
".........b........",
9-
".........b...bbbbb",
10-
".........m...bbbbb",
11-
"bbbbbbbbbbbbbbbbbb",
12-
],
9+
{
10+
stage: [
11+
"bbbbbbbbbbbbbbbbbb",
12+
".........b........",
13+
".........b........",
14+
".........b...bbbbb",
15+
".........m...bbbbb",
16+
"bbbbbbbbbbbbbbbbbb",
17+
],
18+
initialPlayerX: 1,
19+
initialPlayerY: 1,
20+
},
1321
],
1422
[
1523
"2",
16-
[
17-
"bbbbbbbbbbbbbbbbbb",
18-
"..................",
19-
"..................",
20-
"m............bbbbb",
21-
"bb...........bbbbb",
22-
"bb.....m.....bbbbb",
23-
"bbbbbbbbbbbbbbbbbb",
24-
],
24+
{
25+
stage: [
26+
"bbbbbbbbbbbbbbbbbb",
27+
".........b........",
28+
".........b........",
29+
".........b...bbbbb",
30+
".........m...bbbbb",
31+
"bbbbbbbbbbbbbbbbbb",
32+
],
33+
initialPlayerX: 1,
34+
initialPlayerY: 1,
35+
},
2536
],
2637
[
2738
"3",
28-
[
29-
"bbbbbbbbbbbbbbbbbb",
30-
"...b..............",
31-
"...b.....m.....bbb",
32-
"...bm..........bbb",
33-
"...bbb.........bbb",
34-
"...mm..........bbb",
35-
"bbbbbbbbbbb....bbb",
36-
],
39+
{
40+
stage: [
41+
"bbbbbbbbbbbbbbbbbb",
42+
"...b..............",
43+
"...b.....m.....bbb",
44+
"...bm..........bbb",
45+
"...bbb.........bbb",
46+
"...mm..........bbb",
47+
"bbbbbbbbbbb....bbb",
48+
],
49+
initialPlayerX: 1,
50+
initialPlayerY: 1,
51+
},
3752
],
3853
]);

0 commit comments

Comments
 (0)