Esempio n. 1
0
def new_game():
    a.page()
    a.t('“啪”,你从床上掉了下去。', True)
    a.debug('!!!!!!!!!!!!!')
    a.t()
    a.t('“唔~”,好疼。', True)
    a.t()
    a.t('一直睡觉你都不安分,今天也如往常一样,你从床上掉了下来。', True)
    a.t()
    a.t('………………', True)
    a.t()
    a.t('…………', True)
    a.t()
    a.t('……', True)
    a.t()
    a.t('但似乎今天情况有些不同。', True, style={'color': 'red'})
    a.page()
    a.t('“咳咳咳……”', True, style={'shake_duration': 3})
    a.t()
    a.t('“你剧烈地咳嗽起来。”', True)
    a.t()
    a.t('你跌落在地所激起的大量灰尘随着你的呼吸进入你的鼻腔。', True)
    a.t()
    a.t('“怎么回事!咳咳咳……为什么我房间里面会有这么多灰尘!”', True)
    a.t()
    a.t('你挣扎着爬起来,却发现', True)
    a.t()
    a.t('『陌生的天花板』', True)
    a.t()
    a.t('这是哪里?!', True, style={'color': 'red'})
    a.goto(center)
Esempio n. 2
0
def ui_make_chara(character_type='玩家'):
    def set_temp(key_value):
        temp.str_data[key_name] = key_value

    def make_input(k_str: str):
        # noinspection PyShadowingNames
        key_name = k_str
        era.t(str(k_str) + ':  ')
        era.input(set_temp, str(temp.str_data[key_name]))
        era.t()

    def go_next():
        temp.ctrl_able = True
        era.data['chara'].add_chara(temp)
        era.goto(ui_main)
        # 页面

    def ui_make_chara_1():
        # 显示属性
        era.page()
        make_input('名字')
        era.b('确定', go_next)

    key_name = ''
    temp = character.Character()
    temp.set_default(1, character_type)
    era.goto(ui_make_chara_1)
Esempio n. 3
0
 def add_default_person():
     a.data['db']['player'] = {
         'name': 'Adam',
         '性别': '男',
         "money": 1000,
         'item': [],
     }
     a.goto(init_pet)
Esempio n. 4
0
            def _ctrl_button(**kwargs):
                """一个动作控件

                :param kwargs:
                    args.act: 控件指向的动作
                    args.chara: 控件的所有者角色
                """
                era.page()
                act = kwargs['act']
                chara: Optional['character.Character'] = kwargs['chara']
                chara.acts.manual_plan_acts(act)
                chara.acts.work()
                chara.settle_when_turn_end()
                era.t(wait=True)
                era.goto(ui_turn_focus)
Esempio n. 5
0
        def _running():
            def _ctrl_button(**kwargs):
                """一个动作控件

                :param kwargs:
                    args.act: 控件指向的动作
                    args.chara: 控件的所有者角色
                """
                era.page()
                act = kwargs['act']
                chara: Optional['character.Character'] = kwargs['chara']
                chara.acts.manual_plan_acts(act)
                chara.acts.work()
                chara.settle_when_turn_end()
                era.t(wait=True)
                era.goto(ui_turn_focus)

            _search_turn()
            if len(self.to_do_chara) == 0:
                self.time_pass()
                era.goto(ui_turn_focus)
            for i in self.to_do_chara:
                if i.num_data.action_bar < 100:
                    continue
                i.num_data.action_bar -= 100
                i.acts.set_default(i, self.characters)
                i.acts.check_acts()  # 判断所有可用动作
                if i.ctrl_able:
                    # 对可控制角色,提供选择
                    if i.acts.able_acts != 0:
                        era.page()
                        for a in i.acts.able_acts:
                            era.b(a.name, _ctrl_button, act=a, chara=i)
                        era.t()
                else:
                    era.page()
                    i.acts.auto_plan_acts()
                    i.acts.work()
                    i.settle_when_turn_end()
                    era.t(wait=True)
                    _running()
Esempio n. 6
0
 def change_page(page):
     # 在这里定义一个简单的换页逻辑
     a.clear_gui(1)  # 从引擎的界面逻辑中去除掉当前的页面
     a.goto(page)  # 进入一个新页面,该页面与原页面属于兄弟节点
Esempio n. 7
0
# 封面
#   ├─ 开始游戏
#   │    ├─ 使用默认人物
#   │    └─ 新建自定义人物
#   ├─ 读取游戏
#   ├─ 游戏设置
#   └─ 退出游戏
# 或是:
# 游戏循环主界面
#   ├─ 探险
#   │    ├─ 查看敌人
#   │    └─ 战斗
#   ├─ 查看人物
#   ├─ 商店
#   └─ ???
# 但在实际开发过程中,界面与界面之间的逻辑常常会比较混乱,如:
# 从一个界面到另一个界面的转换,常常是通过显式调用的方式,这种方式有以下不方便的地方:
# 1. 上一界面应当知道自己将显示流引入了哪一个界面,才能够实现进入某一页面的逻辑
# 2. 下一个界面必须知道显示流是从哪一个界面来的,才能够实现返回上一页面的逻辑
# 因此,要实现一个进入该页面/退出到上一页面的操作,就常常需要把两个页面写死,这样就带来了开发的成本提高,降低了灵活度。
# Era.js 引擎内置了游戏界面管理机制,你只需要写出每个界面所包含的内容,并通过合适的方式进行调用,
# 游戏引擎就会自动对界面逻辑进行记忆,从而简单实现进入页面/退出到上一页面/上一页/下一页/返回根页面等操作。

# 现在,我们对其进行详细讲解:
# 我们提出了一个概念:界面=函数
# 即将一个页面绑定在一个函数上。如以下语句所示:
a.goto(cover)
# 我们调用了 API 中的 goto 函数,并指向了另一个名为 cover 的函数,
# 这样,我们就进入了我们的页面体系的首个页面:cover
# 接下来,请将本文件中的代码滚动到顶端,寻找【第2章 第2节 游戏封面(下)】并继续阅览!
 def goto_select_location(number):
     a.tmp()['succubus'] = succubus(number)
     a.tmp()['succubus_mode'] = number
     a.tmp()['location_mode'] = 0
     a.goto(select_location)
Esempio n. 9
0
def load_pet(pet):
    a.data['db']['player']['pets'] = [pet]
    a.page()
    a.t('你将{}带回了家。'.format(a.data['db']['player']['pets'][0]['name']), True)
    a.clear_gui()
    a.goto(loop)
Esempio n. 10
0
 def turn_prepare():
     era.page()
     era.goto(ui_turn_focus)
Esempio n. 11
0
 def train_start():
     era.clear()
     era.page()
     era.data['environment_focus'].time_pass()
     era.goto(ui_turn_focus)
Esempio n. 12
0
 def load_goto():
     era.data['chara'] = character.Character()
     # data.load()
     era.goto(ui_main)
Esempio n. 13
0
 def target_choose(target: str):
     c.target = c.charalist[int(target[1])]
     era.goto(ui_main)
Esempio n. 14
0
 def go_next():
     temp.ctrl_able = True
     era.data['chara'].add_chara(temp)
     era.goto(ui_main)
Esempio n. 15
0
 def set_new_game_difficulty(num: int):
     # setup.game_difficulty(num)
     era.goto(ui_start_new_game_set)
Esempio n. 16
0
    era.data['environment_focus'] = train

    i: character.Character
    for i in c:
        if i.id != 0:
            train.add_chara(i)
            i.environment = train
    era.t('xxx了xxx,然后xxx')
    era.t()
    era.b('开始', era.goto, train_start)


def ui_turn_focus():
    def turn_prepare():
        era.page()
        era.goto(ui_turn_focus)

    a = era.data
    era.clear_gui()
    era.data['environment_focus'].turn()
    era.b('下一回合', era.goto, turn_prepare)
    era.b('结束', era.goto, ui_main)


if __name__ == "__main__":  # 程序入口
    try:
        era.init()  # 初始化引擎
        era.goto(ui_start_new_game_set)  # 进入游戏封面
    except Exception:
        pass