代码拉取完成,页面将自动刷新
假设有一个快餐小店,围绕小店可以形成一个小游戏。
游戏有如下角色:
老板:支付员工工资。
厨师:生产快餐。
外卖小哥:送外卖给客户。
客户:购买快餐。
游戏开始,用户注册成为客户(目前不需要实名),每个客户初始账户有100员。每个快餐10元。
厨师由老板选定。
外卖小哥每单挣1元。
订单是系统的核心,客户、厨师、老板、送货小哥都需要和订单打交道。
define[订单] //简单化,假设一个订单只能订一份,那么可以暂时不需要数量
//whether[defined[订单] ]
define[订单编号, Link:Integer]
whether[defined[Link:订单编号]]
define[客户, Link:String]
define[品种, Link:String]
whether[defined[Link:品种]]
define[数量, Link:Integer]
whether[defined[Link:数量]]
define[payed, State]
whether[defined[State:payed]]
用一个payed状态记录是否付款。
define[已发货, State]
whether[defined[State:已发货]]
define[已结单, State]
whether[defined[State:已结单]]
define[下单时间, Link:String]
whether[defined[Link:下单时间]]
产生两个订单,编号分别为2000,2001
create[订单{订单编号:=2000,品种:="木桶饭", 数量:=2, 下单时间:=now.toString, payed::false}]
create[订单{订单编号:=2001,品种:="盖浇饭", 数量:=1, 下单时间:=now.toString, payed::false}]
ask[订单.all]
ask[订单.select{订单编号=2000}]
订单.select{订单编号=2000}#turn[payed, true]
whether[订单.select{订单编号=2000}$payed]
whether[订单.select{订单编号=2000}!payed]
ask[订单.select{payed}] //已付款订单
ask[订单.select{!payed}] //未付款订单
通过新建一个对象,对象中设计一个变量来保持当前编号,最新编号总是在当前编号+1。
define[编号生成器,Object:create[Object]]
define[lastSeq, Link:Integer]
define[nextSeq, Link:Integer]
编号生成器#assign[lastSeq,0]
//ask[编号生成器.lastSeq]
编号生成器#declare[Calculation:nextSeq,{assign[lastSeq, lastSeq+1],return[lastSeq]}] ask[编号生成器.nextSeq] //1
ask[编号生成器.nextSeq] //2,每次加1
注册用户,用户名要求必须是id格式。
register("Rose", "111111")
hasUser("Rose") //whether[hasUser("Rose")]
register("Jack", "111111")
3.1 用户登录
login[Rose,"111111"]
login[Jack,"111111"]
ask[me]
ask[me.userid]
logout
//下单的前提是客户已登录
define[newOrder(String, Integer), Action]
declare[Action:newOrder(String x, Integer y) ,create[订单{订单编号:=编号生成器.nextSeq,品种:=x, 数量:=y, 客户:=me.userid,下单时间:=now.toString, payed::false}] ]
newOrder("盖浇饭", 3)
ask[订单.select{订单编号=4, 客户=me.userid}]
//前提:客户已登录
define[pay(Integer), Action]
declare[Action:pay(Integer x), 订单.select{订单编号=x}#turn[payed, true]]
define[send(Integer), Action]
declare[Action:send(Integer x), 订单.select{订单编号=x}#turn[已发货, true]]
define[deal(Integer), Action]
declare[Action:deal(Integer x), 订单.select{订单编号=x}#turn[已结单, true]]
ask[订单.select{订单编号=3}]
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。