wip
This commit is contained in:
parent
945d6a2b09
commit
314c31db34
|
@ -0,0 +1,83 @@
|
||||||
|
export const TILE_TYPES = [
|
||||||
|
'bamboo1',
|
||||||
|
'bamboo2',
|
||||||
|
'bamboo3',
|
||||||
|
'bamboo4',
|
||||||
|
'bamboo5',
|
||||||
|
'bamboo6',
|
||||||
|
'bamboo7',
|
||||||
|
'bamboo8',
|
||||||
|
'bamboo9',
|
||||||
|
'character1',
|
||||||
|
'character2',
|
||||||
|
'character3',
|
||||||
|
'character4',
|
||||||
|
'character5',
|
||||||
|
'character6',
|
||||||
|
'character7',
|
||||||
|
'character8',
|
||||||
|
'character9',
|
||||||
|
'circle1',
|
||||||
|
'circle2',
|
||||||
|
'circle3',
|
||||||
|
'circle4',
|
||||||
|
'circle5',
|
||||||
|
'circle6',
|
||||||
|
'circle7',
|
||||||
|
'circle8',
|
||||||
|
'circle9',
|
||||||
|
'wind-east',
|
||||||
|
'wind-south',
|
||||||
|
'wind-west',
|
||||||
|
'wind-north',
|
||||||
|
'dragon-red',
|
||||||
|
'dragon-green',
|
||||||
|
'dragon-white',
|
||||||
|
];
|
||||||
|
|
||||||
|
type Player = 'east' | 'south' | 'west' | 'north';
|
||||||
|
|
||||||
|
export class MahjongGameForBackend {
|
||||||
|
public tiles: (typeof TILE_TYPES[number])[] = [];
|
||||||
|
public 場: (typeof TILE_TYPES[number])[] = [];
|
||||||
|
public playerEastTiles: (typeof TILE_TYPES[number])[] = [];
|
||||||
|
public playerSouthTiles: (typeof TILE_TYPES[number])[] = [];
|
||||||
|
public playerWestTiles: (typeof TILE_TYPES[number])[] = [];
|
||||||
|
public playerNorthTiles: (typeof TILE_TYPES[number])[] = [];
|
||||||
|
public turn: Player = 'east';
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
this.tiles = TILE_TYPES.slice();
|
||||||
|
this.shuffleTiles();
|
||||||
|
}
|
||||||
|
|
||||||
|
public shuffleTiles() {
|
||||||
|
this.tiles.sort(() => Math.random() - 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
public drawTile(): typeof TILE_TYPES[number] {
|
||||||
|
return this.tiles.pop()!;
|
||||||
|
}
|
||||||
|
|
||||||
|
public operation_drop(player: Player, tile: typeof TILE_TYPES[number]) {
|
||||||
|
if (this.turn !== player) {
|
||||||
|
throw new Error('Not your turn');
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (player) {
|
||||||
|
case 'east':
|
||||||
|
this.playerEastTiles.splice(this.playerEastTiles.indexOf(tile), 1);
|
||||||
|
break;
|
||||||
|
case 'south':
|
||||||
|
this.playerSouthTiles.splice(this.playerSouthTiles.indexOf(tile), 1);
|
||||||
|
break;
|
||||||
|
case 'west':
|
||||||
|
this.playerWestTiles.splice(this.playerWestTiles.indexOf(tile), 1);
|
||||||
|
break;
|
||||||
|
case 'north':
|
||||||
|
this.playerNorthTiles.splice(this.playerNorthTiles.indexOf(tile), 1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
this.場.push(tile);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue