• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

TypeScript immview.Domain类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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



在下文中一共展示了Domain类的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类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
TypeScript Arrays.Array2D类代码示例发布时间:2022-05-25
下一篇:
TypeScript immuts.makeImmutable函数代码示例发布时间:2022-05-25
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap