当前位置: 首页>>代码示例>>TypeScript>>正文


TypeScript Domain.create方法代码示例

本文整理汇总了TypeScript中immview.Domain.create方法的典型用法代码示例。如果您正苦于以下问题:TypeScript Domain.create方法的具体用法?TypeScript Domain.create怎么用?TypeScript Domain.create使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在immview.Domain的用法示例。


在下文中一共展示了Domain.create方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。

示例1: randomBoardDistance

import {
    Atom,
    Domain
} from 'immview'
import { BOARD_SIZE } from '../config'
import Vector from './Vector'

function randomBoardDistance() {
    return Math.floor(Math.random() * BOARD_SIZE)
}

export type Treat$V = Vector

const treat$ = new Atom<Treat$V>(new Vector(
    randomBoardDistance(),
    randomBoardDistance()
))

export default Domain.create(
    treat$,
    {
        spawn() {
            treat$.next(() => new Vector(
                randomBoardDistance(),
                randomBoardDistance()
            ))
        }
    }
)
开发者ID:arturkulig,项目名称:immview-snake-demo,代码行数:29,代码来源:TreatDomain.ts

示例2: Combine

    direction$
        .scan((allDirections: SnakeBodyV = snakeDefaultShape, direction) => {
            if (direction === DIRECTIONS_RESET) {
                return snakeDefaultShape
            }
            const lastPosition = allDirections[0]
            const nextPosition = lastPosition.add(direction)
            return [nextPosition, ...allDirections].slice(0, BOARD_SIZE * BOARD_SIZE)
        }, snakeDefaultShape)

const snakeBody$ = new Combine({
    snakePositions: snakePositions$,
    round: Round$
}).map(function takeLastSnakePositions({ snakePositions, round }) {
    return snakePositions.slice(0, (round.points + 1))
})

export default Domain.create(
    snakeBody$,
    {
        increase() {
            Round$.increase()
        },
        reset() {
            direction$.next(DIRECTIONS_RESET)
            Direction$.go(DIRECTIONS.NONE)
            Round$.loose()
        }
    }
)
开发者ID:arturkulig,项目名称:immview-snake-demo,代码行数:30,代码来源:SnakeDomain.ts

示例3:

        /** 
         * 4. if head touches board borders
         * respawn both snake and treat
         */
        if (
            snakeHead.x < 0 || snakeHead.x >= BOARD_SIZE ||
            snakeHead.y < 0 || snakeHead.y >= BOARD_SIZE
        ) {
            Snake$.reset()
            Treat$.spawn()
            return new Matrix<FIELD_TYPES>(FIELD_TYPES.EMPTY)
        }

        let board = new Matrix<FIELD_TYPES>(FIELD_TYPES.EMPTY)

        snake.forEach((position) => {
            board = board.set(position, FIELD_TYPES.SNAKE)
        })

        board = board.set(treat, FIELD_TYPES.TREAT)

        return board
    }
    )

export default Domain.create(
    board$,
    {}
)
开发者ID:arturkulig,项目名称:immview-snake-demo,代码行数:29,代码来源:BoardDomain.ts

示例4: setTimeout

import {
    Observable,
    Domain,
} from 'immview'
import Round$ from './RoundDomain'
import { PULSE_IN_MS } from '../config'

export type TickerV = number

const ticker$ = new Observable<TickerV>()

const push = () => {
    ticker$.next(Date.now())
    setTimeout(push, PULSE_IN_MS / 2 / (Round$.deref().points + 1) + PULSE_IN_MS / 2)
}
push()

export default Domain.create(
    ticker$,
    {}
)
开发者ID:arturkulig,项目名称:immview-snake-demo,代码行数:21,代码来源:TickerDomain.ts

示例5: Combine

const directionDemand$ = new Atom<Vector>(directionVectors.NONE)

const direction$ = new Combine({ ticker: Ticker$, directionDemand: directionDemand$ })
    .scan(function bufferTwo(result, item) {
        return result.concat([item]).slice(-2)
    }, [{ directionDemand: directionVectors.NONE }] as { ticker: number, directionDemand: Vector }[])
    .filter(function isNextTick(value) {
        return value[0].ticker !== value[1].ticker
    })
    .map(function pickDemandedDirection(value) {
        return value[value.length - 1].directionDemand
    })
    .scan(function releaseAcceptableDirection(lastAcceptableDirection: Vector, requestedDirection) {
        return (
            isAcceptableNewDirection(lastAcceptableDirection, requestedDirection)
                ? requestedDirection
                : lastAcceptableDirection
        )
    }, directionVectors.NONE)

export default Domain.create(
    direction$,
    {
        go(requested: DIRECTIONS) {
            if (directionDictionary[requested]) {
                directionDemand$.next(directionDictionary[requested])
            }
        }
    }
)
开发者ID:arturkulig,项目名称:immview-snake-demo,代码行数:30,代码来源:DirectionDomain.ts


注:本文中的immview.Domain.create方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。