1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/hiwii-hiwiiLang

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
RestaurantExample.md 6.6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 25.11.2024 07:35 6166c07

Обзор

Предположим, что есть небольшой ресторан быстрого питания, вокруг которого можно создать небольшую игру.

В игре есть следующие роли:

  • Владелец: платит сотрудникам зарплату.

  • Повар: готовит фастфуд.

  • Курьер: доставляет еду клиентам.

  • Клиент: покупает фастфуд.

Игра начинается, пользователь регистрируется в качестве клиента (в настоящее время не требуется указывать реальные данные), у каждого клиента начальный счёт равен 100. Каждый фастфуд стоит 10 единиц.

Повар выбирается владельцем.

Курьер зарабатывает 1 единицу за каждую доставку.

1. Определение заказа

Заказ является основой системы, клиент, повар, владелец и курьер должны взаимодействовать с заказом.

define[заказ]   //упрощение, предположим, что заказ может быть только один, тогда на данный момент нет необходимости в количестве
//whether[defined[заказ]]

1.1. Номер заказа

define[номер заказа, Link:Integer]  
whether[defined[Link:номер заказа]]

2.1. Клиент заказа

define[клиент, Link:String]

2.2. Что заказать

define[вид, Link:String]
whether[defined[Link:вид]]

2.3. Количество продукта

define[количество, Link:Integer]
whether[defined[Link:количество]]

2.4. Состояние оплаты

define[оплачено, State]
whether[defined[State:оплачено]]

Состояние оплачено используется для записи того, была ли произведена оплата.

2.5. Состояние доставки

define[доставлено, State]
whether[defined[State:доставлено]]

2.6. Состояние завершения

define[завершён, State]
whether[defined[State:завершён]]

2.7. Время оформления заказа

define[время оформления, Link:String]
whether[defined[Link:время оформления]]

2. Создание заказа

Создать два заказа с номерами 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{!оплачено}]  //неоплаченные заказы

3. Генерация номера заказа

Создаётся новый объект, в котором создаётся переменная для хранения текущего номера, а последний номер всегда равен текущему номеру + 1.

define[генератор номеров,Object:create[Object]]
define[последний номер, Link:Integer]
define[следующий номер, Link:Integer]
генератор номеров#assign[последний номер,0]
//ask[генератор номеров.последний номер]
генератор номеров#declare[вычисление:следующий номер,{assign[последний номер, последний номер+1],return[последний номер]}] ask[генератор номеров.следующий номер]   //1
ask[генератор номеров.следующий номер]   //2, каждый раз прибавляется 1

3. Управление правами доступа

Регистрация пользователя, имя пользователя должно соответствовать формату 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

4. Оформление заказа

//оформление заказа требует от клиента входа в систему
define[новый заказ(String, Integer), Action]
declare[Action:новый заказ(String x, Integer y) ,create[заказ{номер заказа:=генератор номеров.следующий номер,вид:=x, количество:=y, клиент:=me.userid,время оформления:=now.toString, оплачено::false}] ]
новый заказ("лапша с говядиной", 3)

4.1. Мой заказ

ask[заказ.select{номер заказа=4, клиент=me.userid}]

5. Оплата клиентом

//предпосылка: клиент вошёл в систему
define[оплата(Integer), Action]
declare[Action:оплата(Integer x), заказ.select{номер заказа=x}#turn[оплачено, true]]

6. Доставка курьером

define[доставка(Integer), Action]
declare[Action:доставка(Integer x), заказ.select{номер заказа=x}#turn[доставлено, true]]

7. Завершение заказа

define[оформить(Integer), Action]
declare[Action:оформить(Integer x), заказ.select{номер заказа=x}#turn[завершён, true]]
ask[заказ.select{номер заказа=3}]

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/hiwii-hiwiiLang.git
git@api.gitlife.ru:oschina-mirror/hiwii-hiwiiLang.git
oschina-mirror
hiwii-hiwiiLang
hiwii-hiwiiLang
master