“省了14块9毛”

“省了14块9毛”

上周的“狼人之夜”爆满,导致一轮玩下来都需要1个半小时,由于只有一副狼人牌,所以没法分批,考虑再买几副以后可以分队来玩,结果朱棣同学说:“直接做一副吧,很容易”,我想与其做一副,还不如直接代码写一套,以后再多人都可以用,加上现在android和iOS两个小团队需要相互交换练手,考虑业务的延续性不方便轻易交换人员,类似这种小玩意正好可以一起边做边玩,所以,阳光明媚的“腊八节”下午,坐在地板上,晒晒太阳,把“狼人”游戏初级版本的设计做了一下,省了14块9毛(9.9元狼人牌成本+5元运费)。狼人游戏是什么?参看(http://www.niwota.com/submsg/6808720

一图胜百字,看完这些图,应该啥都清楚了:



实体对象:

Mission可以理解为一轮游戏。(可复用,区别于桌面游戏的Table,Room,可以理解为Round of game)

Policy 狼人的一些游戏规则配置。

Actor 角色和玩家的组合。(Mission有状态的Component)

Role 狼人的角色。

Player 玩家。

游戏其实很简单,就是一个状态机,所以上面列出了状态迁移,下面的流程图将详细说明迁移的交互过程。

一.Init & Start

二.Night

三.Day



最后就可以开始coding了,服务端就两个问题需要重点解决:事件驱动中TimeOut的Event如何高效监听,Http Push如何支持?可以看看这篇老帖子的部分技术介绍:http://blog.youkuaiyun.com/cenwenchu79/article/details/6450427

Client三种方式:browser,apple native,android native。对于Push来说,browser和android可以直接用comet push的方式,apple native那就只有APNS了。两种native的手势操作和Push提示可以做的体验非常好,browser就只能凑活这玩了。

程序员的生活需要更多的乐趣,自己动手未尝不是件有意思的事情~~~

题目背景 当我发现所谓醒来其实是另一个梦 梦的出口散不开的浓雾太沉重 题目描述 xiaoyyds 在玩吉吉岛。 游戏在一张可以抽象成数轴的地图上进行。 每张地图有刷铁效率 � k 和到中岛的距离 � d,均为正整数。具体来说,每经过 � k 秒会在位置 0 0 刷新一铁。即开始 � , 2 � , 3 � , … k,2k,3k,… 秒后会刷新一铁。当 xiaoyyds 在位置 0 0 时可以捡起所有未捡起的铁锭。捡起铁锭不需要时间,已经刷新的铁不会自己消失。 xiaoyyds 可以在位置 0 0 购买任意多的羊并拿在手上。因为这里是吉吉岛,所以 1 1 铁可以购买 1 1 。购买羊不需要时间。 xiaoyyds 初始在位置 0 0。最初位置 0 0 已放置羊,剩余位置未放置羊。 xiaoyyds 有搭路速度 � 1 t 1 ​ 和跑步速度 � 2 t 2 ​ ,均为正整数。具体来说,他有以下两种操作: xiaoyyds 可以从已放置羊的位置 � i 前往未放置羊的位置 � + 1 i+1,并在 � + 1 i+1 放置羊。该过程消耗一和 � 1 t 1 ​ 秒。要求操作前手上有羊。 xiaoyyds 可以从已放置羊的位置 � i 前往已放置羊的位置 � + 1 i+1 或 � − 1 i−1。该过程消耗 � 2 t 2 ​ 秒。 xiaoyyds 到达位置 � d 即可取得胜利。求最早在开始多少秒后可以到达位置 � d。给定正整数 � m,对 � = 1 , 2 , … , � d=1,2,…,m 求出答案。 输入格式 本题包含多组测试数据。 第一行共一个正整数 � T,表示测试数据组数。 接下来 � T 行,每行共四个正整数 � , � , � 1 , � 2 m,k,t 1 ​ ,t 2 ​ ,表示一组测试数据。 输出格式 对于每组测试数据,输出一行 � m 个正整数分别表示 � = 1 , 2 , … , � d=1,2,…,m 时的答案。 输入输出样例 输入#1 复制 输出#1 复制 说明/提示 【样例解释 #1】 对于第一组测试数据,当 � = 3 d=3 时最优行动之一如下: 在位置 0 0 等待 3 3 秒,捡起一铁锭并消耗一铁锭购买一个羊。 消耗 2 2 秒从位置 0 → 1 0→1,消耗一搭在位置 1 1。 消耗 1 1 秒从位置 1 → 0 1→0。 在位置 0 0 等待 3 3 秒,捡起两铁锭并消耗两铁锭购买两个羊。 消耗 1 1 秒从位置 0 → 1 0→1。 消耗 2 2 秒从位置 1 → 2 1→2,消耗一搭在位置 2 2。 消耗 2 2 秒从位置 2 → 3 2→3,消耗一搭在位置 3 3。 开始后 3 + 2 + 1 + 3 + 1 + 2 + 2 = 14 3+2+1+3+1+2+2=14 秒到达位置 3 3,可以证明不存在到达时间更早的行动方案。 注意:捡起铁锭与消耗铁锭购买羊不消耗任何时间。 【样例 #2】 见选手目录下的 a/a2.in a/a2.in 与 a/a2.ans a/a2.ans。 该样例满足 � = 10 T=10,其中第 � i 组测试数据满足测试点 � i( 1 ≤ � ≤ 10 1≤i≤10)的约束条件。 【数据范围】 本题共 10 10 个测试点,每个 10 10 分。 对于所有测试数据,保证: 1 ≤ � ≤ 10 1≤T≤10; 1 ≤ � ≤ 1 0 5 1≤m≤10 5 ; 1 ≤ � , � 1 , � 2 ≤ 1 0 9 1≤k,t 1 ​ ,t 2 ​ ≤10 9 。 测试点编号 � ≤ m≤ � ≤ k≤ � 1 , � 2 ≤ t 1 ​ ,t 2 ​ ≤ 特殊性质 1 1 1 1 1 0 9 10 9 1 0 9 10 9 无 2 , 3 2,3 10 10 1 0 9 10 9 10 10 AB 4 , 5 4,5 10 10 10 10 1 0 9 10 9 AC 6 , 7 6,7 100 100 100 100 100 100 A 8 , 9 8,9 1 0 3 10 3 1 0 9 10 9 1 0 9 10 9 A 10 10 1 0 5 10 5 1 0 9 10 9 1 0 9 10 9 无 特殊性质 A:保证 � 1 ≥ � 2 t 1 ​ ≥t 2 ​ 。 特殊性质 B: � = 1 0 9 k=10 9 。 特殊性质 C: � 1 = � 2 = 1 0 9 t 1 ​ =t 2 ​ =10 9 。 【附加文件】 a.zip
11-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值