Предположим, что есть небольшой ресторан быстрого питания, вокруг которого можно создать небольшую игру.
В игре есть следующие роли:
Владелец: платит сотрудникам зарплату.
Повар: готовит фастфуд.
Курьер: доставляет еду клиентам.
Клиент: покупает фастфуд.
Игра начинается, пользователь регистрируется в качестве клиента (в настоящее время не требуется указывать реальные данные), у каждого клиента начальный счёт равен 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[оплачено, State]
whether[defined[State:оплачено]]
Состояние оплачено используется для записи того, была ли произведена оплата.
define[доставлено, State]
whether[defined[State:доставлено]]
define[завершён, State]
whether[defined[State:завершён]]
define[время оформления, Link:String]
whether[defined[Link:время оформления]]
Создать два заказа с номерами 2000 и 2001 соответственно.
create[заказ{номер заказа:=2000,вид:="рис с курицей", количество:=2, время оформления:=now.toString, оплачено::false}]
create[заказ{номер заказа:=2001,вид:="лапша с говядиной", количество:=1, время оформления:=now.toString, оплачено::false}]
ask[заказ.all]
ask[заказ.select{номер заказа=2000}]
заказ.select{номер заказа=2000}#turn[оплачено, true]
whether[заказ.select{номер заказа=2000}$оплачено]
whether[заказ.select{номер заказа=2000}!оплачено]
ask[заказ.select{оплачено}] //оплаченные заказы
ask[заказ.select{!оплачено}] //неоплаченные заказы
Создаётся новый объект, в котором создаётся переменная для хранения текущего номера, а последний номер всегда равен текущему номеру + 1.
define[генератор номеров,Object:create[Object]]
define[последний номер, Link:Integer]
define[следующий номер, Link:Integer]
генератор номеров#assign[последний номер,0]
//ask[генератор номеров.последний номер]
генератор номеров#declare[вычисление:следующий номер,{assign[последний номер, последний номер+1],return[последний номер]}] ask[генератор номеров.следующий номер] //1
ask[генератор номеров.следующий номер] //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[новый заказ(String, Integer), Action]
declare[Action:новый заказ(String x, Integer y) ,create[заказ{номер заказа:=генератор номеров.следующий номер,вид:=x, количество:=y, клиент:=me.userid,время оформления:=now.toString, оплачено::false}] ]
новый заказ("лапша с говядиной", 3)
ask[заказ.select{номер заказа=4, клиент=me.userid}]
//предпосылка: клиент вошёл в систему
define[оплата(Integer), Action]
declare[Action:оплата(Integer x), заказ.select{номер заказа=x}#turn[оплачено, true]]
define[доставка(Integer), Action]
declare[Action:доставка(Integer x), заказ.select{номер заказа=x}#turn[доставлено, true]]
define[оформить(Integer), Action]
declare[Action:оформить(Integer x), заказ.select{номер заказа=x}#turn[завершён, true]]
ask[заказ.select{номер заказа=3}]
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )