예제 #1
0
def select_location():
    #选择出生地
    def change_location(selection):
        # description = a.dat()['location'][location['value']]['description']
        # a.t(description)
        a.tmp()['location_mode'] = selection['index']
        a.repeat()
        pass

    a.page()
    a.mode('grid', 1)
    a.t('何处?')
    a.divider()
    a.mode()
    a.t()
    a.t()
    a.radio(['平原'], change_location, a.tmp()['location_mode'])
    a.t()
    description = a.dat()['location'][a.tmp()['location_mode']]['description']
    a.t(description)
    a.t()
    a.divider()
    a.b('下一步', a.goto, select_inherit)
    a.t()
    a.b('何人?', a.back)
예제 #2
0
def select_difficulty():
    def goto_difficulty(difficulty):
        a.clear()
        #初始化新游戏,考虑之后用一个函数代替,此处先作测试用途
        a.tmp()['day'] = 1
        a.tmp()['money'] = 0
        a.tmp()['s***n'] = 0
        a.tmp()['day_time'] = '日间'
        a.tmp()['prisoner_list'] = []
        a.tmp()['family_list'] = []
        a.tmp()['difficulty'] = difficulty
        show_main()

    #选择难度
    a.page()
    a.mode('grid', 1)
    a.h('前往哪一个世界?')
    a.divider()

    a.mode()
    #此处放置难度世界列表
    a.b('普通', goto_difficulty, 1)
    a.divider()
    a.mode('line', 1)
    a.b('返回', a.back)
예제 #3
0
def status_bar():
    data = a.tmp()
    succubus = data['succubus']
    a.divider()
    #状态栏
    a.mode('grid', 4)
    a.t('第{}天'.format(a.tmp()['day']))
    a.t('{}'.format(a.tmp()['day_time']), style={'color': '#ff0'})
    a.t()
    a.t('{}'.format(a.tmp()['succubus'].name))
    a.t()
    a.t('{}G'.format(a.tmp()['money']))
    a.t()
    a.t('{}ml'.format(a.tmp()['s***n']))
    a.t()

    a.t('level:{}'.format(succubus.level))
    a.t()
    a.t('生命')
    a.progress(succubus.health, succubus.max_health,
               [{
                   'width': '100px'
               }, {
                   'background-color': '#0f0'
               }])
    a.t('{}/{}'.format(succubus.health, succubus.max_health))
    a.t()
    a.t('俘虏:{}'.format(len(data['prisoner_list'])))
    a.t()
    a.t('succubus:{}'.format(len(data['family_list'])))
예제 #4
0
    def ui_grid_3():
        """
        作者: @m.l
        (有改动)
        """
        a.page()
        a.h('三、网格排版【网格】', rank=4)
        a.t()
        a.t('【默认样式】')
        # ---------网格排版模式
        a.mode('grid', 3)
        # 网格排列,一行3列
        a.b('按钮1')
        a.b('按钮2')
        a.t()
        a.b('按钮3')
        a.t()
        a.b('按钮4')
        a.t()
        a.b('按钮5')
        a.t()
        a.b('按钮6')

        a.mode()
        a.t()
        a.t('【线框样式】')
        a.mode('grid', 3, celled=True)
        # celled,带
        a.b('按钮1')
        a.b('按钮2')
        a.t()
        a.b('按钮3')
        a.t()
        a.b('按钮4')
        a.t()
        a.b('按钮5')
        a.t()
        a.b('按钮6')

        a.mode()
        a.t()
        a.t('【紧凑样式】')
        a.mode('grid', 3, compact=True, celled=True)
        a.b('按钮1')
        a.b('按钮2')
        a.t()
        a.b('按钮3')
        a.t()
        a.b('按钮4')
        a.t()
        a.b('按钮5')
        a.t()
        a.b('按钮6')
        a.mode()
        a.t()
        a.divider()
        a.b('上一页', ui_grid_2)
        a.t()
        a.b('返回', a.back)
예제 #5
0
def initiate():
    a.page()
    a.h('开始游戏')
    a.t()
    a.divider()
    a.b('开始新游戏', a.goto, g_story)
    a.b('读取存档', a.goto, g_load)
    a.b('透出游戏', a.exit)
예제 #6
0
def cover():
    a.title('测试用狐狸程序 v{} with Era.js v{}'.format(version, a.version))
    a.page()
    a.h("测试用狐狸程序 v{}".format(version))
    a.t(" withEra.js v{}".format(a.version))
    a.t()
    a.divider()
    a.t()
    a.b('开始游戏', a.goto, t.initiate)
예제 #7
0
def sys_buttons():
    a.divider()
    a.mode('grid', 4)
    a.b('存档', a.goto, save_button)
    a.t()
    a.b('读档', a.goto, load_button)
    a.t()
    a.b('设置', a.goto, settings)
    a.t()
    a.b('放弃', a.goto, giveup)
예제 #8
0
def fate_map():
    #每日走向选择展示
    a.divider(text='前路')
    a.mode('grid', 10)
    random_create()
    for i in range(1, 20 + 1):
        for j in range(0, 10):
            card = fate_card(a.tmp()['fate_map'][21 - i][j])
            card.print_card(is_able=True)
            #a.t(a.tmp()['fate_map'][i][j]) 测试用
            a.t()
예제 #9
0
def ui_all_components():
    def button_result():
        a.page()
        a.h('作为一个按钮,我被按了。')
        a.t()
        a.b('返回', a.back)

    def rate_result(new_rate):
        print('当前评分为{}分。'.format(new_rate))

    def radio_result(new_ratio):
        print('现在选中了“{}”。'.format(new_ratio))

    def input_result(new_input):
        print('输入框中的值为:“{}”。'.format(new_input))

    a.page()  # 新建一个页面
    a.h('控件一览(包括作为标题的我自己)')
    a.t()
    a.t('【我是几个文字】')
    a.t('【我跟在左边文字后面】')
    a.t()  # 换行
    a.t('【我被换行了……】')
    a.t()  # 再换行
    a.t('【当你看见我时,你需要点鼠标左键或右键】', True)
    a.t()  # 再换行
    a.t('【当你看见我时,你还是需要点鼠标左键或右键】', True)
    a.t()  # 再换行
    a.b('我是一个红按钮', a.goto, button_result, color='red')
    a.b('我是一个不能按的红按钮', a.goto, button_result, color='red', disabled=True)
    a.b('快拿鼠标戳我!', a.goto, button_result, popup='被你戳到了,好爽~')
    a.t()
    a.divider()  # 我是一个分割线
    a.t()
    a.t('作为进度条,我当前值为50,总共100,在界面上显示为 200px 长:')
    a.progress(50, 100, 200)
    a.t()
    a.t('如果给这个游戏引擎评分,5分满分,我给4分:')
    a.rate(4, 5)
    a.t()
    a.t('我是一个可以点的评分哦~点击之后请在后端控制台查看效果~(对着当前评分再点击一次可以取消评分哦~(等价于评0分)):')
    a.rate(2, 5, rate_result, False)
    a.t()
    a.t('我是一个单选,目前默认选中第二项(索引为1)修改之后请在后端控制台查看效果:')
    a.radio(['一', '二', '三'], 1, radio_result)
    a.t()
    a.t('我是输入框,修改之后请在后端控制台查看效果:')
    a.input(input_result)
    a.t()
    a.t('以上,就是目前支持的全部控件及用法啦~')
    a.t()
    a.t('如果您需要新增,请跟作者联系哦~')
    a.t()
    a.b('返回', a.back)
예제 #10
0
def g_main():
    a.page()
    a.h('主菜单')
    a.data['db']['pos'] = '嗨森林'
    a.shake(100)
    a.t()
    a.t('当前位置 {}'.format(a.data['db']['pos']))
    a.t()
    a.t('现在主菜单里什么都没有,你只能:')
    a.b('保存游戏', a.goto, g_save)
    a.t('或者')
    a.b('读取游戏', a.goto, g_load)
    a.divider()
    a.t()
    a.t('也可以干脆的')
    a.b('透出游戏', a.exit)
예제 #11
0
 def ui_line_mode():  # 默认模式(左对齐)
     a.page()
     a.mode()
     a.h('一、默认排版(左对齐)')
     a.t()
     a.t('由a.mode()切换排版模式。当前是默认排版,所有控件从左往右排列,使用a.t()进行换行。')
     a.divider()
     a.t('【普通文字】')
     a.t('【未换行】')
     a.t()
     a.t('【已换行】')
     a.t()
     a.t()
     a.divider()
     a.b('下一页', ui_grid_mode)
     a.t()
     a.t()
     a.b('返回', a.back)
예제 #12
0
def check_buttons():
    #考虑放置一些检查选项,如检查设施情况,查看配方,已经拥有的遗物,查看地宫结构等。
    a.divider(text='查看')
    a.mode('grid', 5)
    a.b('拥有怪物', a.goto, check_monster)
    a.t()
    a.b('地宫设施', a.goto, check_facility)
    a.t()
    a.b('俘虏', a.goto, check_prisoner)
    a.t()
    a.b('眷族', a.goto, check_family)
    a.t()
    a.b('配方', a.goto, check_formula)
    a.t()
    a.b('遗物', a.goto, check_reliquary)
    a.t()
    a.b('杂项', a.goto, check_information)
    a.t()
    a.b('图鉴', a.goto, check_Illustrated)
예제 #13
0
 def ui_grid_mode():  # 网格模式(三列)
     a.page()
     a.h('二、网格模式(三列)')
     a.t()
     a.t('由a.mode("grid", 3)切换到3列的网格模式,单元格内不支持换行,换行a.t()在这里代表的是换下一单元格。')
     a.divider()
     a.mode('grid', 3)
     a.t('【文字】')
     a.t('【同单元格的文字】')
     a.t()
     a.t('【下一单元格的文字】')
     a.t()
     a.t('【摩多摩多】')
     a.t()
     a.t('【摩多摩多】')
     a.t()
     a.divider()
     a.mode()
     a.b('下一页', ui_center_mode)
     a.t()
     a.b('返回', a.back)
예제 #14
0
 def ui_grid_2():
     """
     作者: @m.l
     (有改动)
     """
     a.page()
     # 新页面
     a.h('二、网格排版【居中】', rank=4)
     a.mode('grid', 1)
     # 网格排版,示例一:居中控件
     apple = [
         '墙墙窗窗墙墙窗窗墙墙',
         '墙        门',
         '墙        墙',
         '墙汉汉汉汉    墙',
         '墙   汉    墙',
         '墙皂我 汉    墙',
         '墙   汉    门',
         '墙墙墙墙墙墙墙墙墙墙',
     ]
     a.t('该段文字居中,由a.mode("grid",1)切换为网格排版,参数‘1’为每一行所含的最大【控件集合】数')
     a.t()
     a.t('网格排版,在使用紧凑样式时,行间距离会比默认排版时更加紧密,因此你可以实现一些不可描述的场面')
     a.t()
     a.t('紧凑网格排版如下▼')
     a.t()
     a.mode('grid', 1, compact=True)
     for n in range(0, len(apple)):
         a.t(apple[n])
         a.t()
     a.mode()
     # 建议在使用完网格排版后,运行该代码,把排版模式切换回默认模式。
     a.t()
     a.divider()
     # 使用网格后,分割线的使用代码。
     a.b('上一页', ui_grid_1)
     a.b('下一页', ui_grid_3)
     a.t()
     a.b('返回', a.back)
     a.b('彩蛋', ui_egg)
예제 #15
0
 def ui_grid_1():
     """
     作者: @m.l
     (有改动)
     """
     # ---------默认排版模式
     a.page()
     # 新页面
     a.mode()
     # 默认排版模式。
     a.h('一、默认排版', rank=4)
     a.t()
     a.t('由a.mode()切换排版模式。当前是默认排版,所有控件从左往右排列,使用a.t()进行换行。')
     a.t()
     a.b('按钮1')
     a.b('按钮2')
     a.t()
     a.b('按钮3')
     a.t()
     a.divider()
     a.b('下一页', ui_grid_2)
     a.t()
     a.b('返回', a.back)
예제 #16
0
def ui_data():
    def change_rate(new_rate):
        a.data['db']['rate'] = new_rate

    a.page()  # 新建一个页面
    a.h('游戏数据教程')
    a.t()
    a.t('游戏的静态数据都保存在【data/】目录中,只要放进去了,且格式匹配,就可以在游戏开始后直接调用。如:')
    a.t(a.data['data.姓名库']['外文']['男名'][0])
    a.t('←这里请翻阅代码')
    a.t()
    a.t('支持的格式为json,csv,ini,inf,cfg,config等。而且在加载的时候后都已经被自动转换为了Dict等方便的格式。')
    a.t()
    a.t('【a.data是游戏引擎的数据核心,类型为Dict。里面定义的变量都可以被全局调用,但不会被保存】')
    a.t()
    a.divider()
    a.t()
    a.t('【接下来介绍几个特殊的Key】')
    a.t()
    a.t('【a.data["data.*"]】存放着【data/】目录下所有的静态数据;')
    a.t()
    a.t('【a.data["config.*"]】存放着【config/】目录下所有的设置;')
    a.t()
    a.t('【以上两种KEY使用点语法来对具体文件进行调用,如【data/姓名库.json】文件中的内容保存在【a.data["data.姓名库"]】中'
        )
    a.t()
    a.divider()
    a.t()
    a.t('【a.data["db"]】中存放着可以被保存和读取的数据。(其他KEY中的数据都不会被保存)')
    a.t()
    a.t('演示(请修改,保存,再修改,加载。看数值是否被保存了。):')
    a.rate(a.data['db']['rate'], 5, change_rate, False)
    a.t()
    a.divider()
    a.t()
    a.t('【a.data["class"]】保存着各种Class,属于预留。大家暂时可以忽略。')
    a.t()
    a.t('【a.data["api"]】保存着各种API,大家可以在这里加入自定义的API,然后进行全局调用(一般用于引擎插件/Script/DLC/Mod中)。'
        )
    a.t()
    a.t('【entity】保存着各种Class的实例,属于预留。大家暂时可以忽略。')
    a.t()
    a.divider()
    a.t()
    a.b('保存', a.goto, save_game)
    a.b('加载', a.goto, load_game)
    a.b('返回', a.back)
예제 #17
0
 def ui_center_mode():  # 网格模式的特殊用法(单列居中)
     a.page()
     a.h('三、网格模式的特殊用法(单列居中)')
     a.t()
     a.t('由a.mode()切换排版模式。当前是默认排版,所有控件从左往右排列,使用a.t()进行换行。')
     a.divider()
     a.mode('grid', 1)
     graph = [
         '墙墙窗窗墙墙窗窗墙墙',
         '墙        门',
         '墙        墙',
         '墙汉汉汉汉    墙',
         '墙   汉    墙',
         '墙皂我 汉    墙',
         '墙   汉    门',
         '墙墙墙墙墙墙墙墙墙墙',
     ]
     for line in graph:
         a.t(line)
         a.t()
     a.t()
     a.divider()
     a.mode()
     a.b('返回', a.back)
예제 #18
0
def select_succubus(number=0):
    #选择起源模板
    def goto_select_location(number):
        a.tmp()['succubus'] = succubus(number)
        a.tmp()['succubus_mode'] = number
        a.tmp()['location_mode'] = 0
        a.goto(select_location)

    a.page()
    a.mode('grid', 1)
    a.h('起源')
    a.t()
    a.divider()

    a.mode('grid', 3)
    a.b('<--', change_number, -1)
    a.t()
    a.t('何人?')
    a.t()
    a.b('-->', change_number, 1)
    a.divider()

    a.mode('grid', 3)
    selected_mode = succubus()
    a.t()
    a.h(selected_mode.name, style={'opacity': '0.6'})
    a.t()
    a.t()
    a.t('生命:{}'.format(selected_mode.health))
    a.t()
    a.t('攻击:{}'.format(selected_mode.atk))
    a.t()
    a.t('防御:{}'.format(selected_mode.dEf))

    for i in range(3):
        a.t()

    a.t()
    a.t()
    a.t(selected_mode.description, style={'font-style': 'italic'})
    a.t()

    for i in range(3):
        a.t()

    a.t()
    a.t()
    a.b('何处?', goto_select_location, number)
    a.t()

    a.divider()
    a.mode()
    a.b('沉睡', a.back)
예제 #19
0
def ui_widgets():
    def button_result():
        a.msg('按钮已按下')

    def rate_result(new_rate):
        a.msg('您的评分为{}分。'.format(new_rate))

    def radio_result(new_ratio):
        a.msg('现在选中的是第{}位的“{}”。'.format(
            new_ratio['index'], new_ratio['value']
        ))

    def check_result(new_check):
        a.msg('现在复选框的值为:{}'.format(new_check))

    def input_result(new_input):
        a.msg('输入框中的文本为:{}'.format(new_input))

    def dropdown_result(new_dropdown):
        a.msg('下拉菜单中的值为第{}位的“{}”。'.format(
            new_dropdown['index'], new_dropdown['value']
        ))
    a.page()
    a.h('控件一览', 1, {'color': '#eee'})
    a.mode('line')
    a.t('【我是几个文字】')
    a.t('【我跟在左边文字后面】')
    a.t()  # 换行
    a.t('【我被换行了……】')
    a.t('而我有色彩', style={'color': '#f00', 'background-color': '#0f0'})
    a.t()  # 再换行
    a.t('【当你看见我时,你需要点鼠标左键或右键】', True)
    a.t()  # 再换行
    a.t('【当你看见我时,你还是需要点鼠标左键或右键】', True)
    a.t()  # 再换行
    a.b('我是一个红按钮',  button_result, style={'background-color': '#f00'})
    a.b('我是一个不能按的按钮', button_result,  disabled=True)
    a.b('快拿鼠标指着我!', button_result, popup='被你戳到了,好爽~')
    a.divider('我是显而易见的分割线')
    a.t('作为进度条,我当前值为50,总共100,在界面上显示为 100px 长:')
    a.progress(50, 100, [{'width': '100px'}, {}])
    a.t()
    a.t('如果给这个游戏引擎评分,5分满分,我目前给4分:')
    a.rate(4, 5)
    a.t()
    a.t('我是一个可以点的评分哦~点击之后请在后端控制台查看效果~(对着当前评分再点击一次可以取消评分哦~(等价于评0分)):')
    a.rate(2, 5, rate_result)
    a.t()
    a.t('我是一个单选,目前默认选中第二项(索引为1)修改之后请在后端控制台查看效果:')
    a.radio(['一', '二', '三'], radio_result, 1)
    a.t()
    a.t('我是一个复选框,目前默认已选中,修改之后请在后端控制台查看效果:')
    a.check('我是一个复选框哦!', check_result, True)
    a.t()
    a.t('我是输入框,修改之后请在后端控制台查看效果:')
    a.input(input_result, '我是默认值哦~')
    a.t()
    a.t('多行文本输入框:TODO')
    a.t()
    a.t('我是一个下拉菜单哦!(下拉选择项目并在后端查看效果):')
    a.dropdown(['甲', '乙', '丙'], dropdown_result, 1)
    a.t()
    a.t('多选下拉菜单:TODO')
    a.t()
    a.t('以上,就是目前支持的全部控件及用法啦~')
    a.t()
    a.t('如果您需要新增,请跟作者联系哦~')
    a.t()
    a.b('返回', a.back)
예제 #20
0
def ui_all_components():
    def button_result():
        a.page()
        a.h('作为一个按钮,我被按了。')
        a.t()
        a.b('返回', a.back)

    def rate_result(new_rate):
        print('当前评分为{}分。'.format(new_rate))

    def radio_result(new_ratio):
        print('现在选中了“{}”。'.format(new_ratio))

    def check_result(new_check):
        print('现在复选框的值为:{}'.format(new_check))

    def input_result(new_input):
        print('输入框中的值为:')
        print('{}'.format(new_input))

    def dropdown_result(new_dropdown):
        print('下拉菜单中的值为:“{}”。'.format(new_dropdown))

    def multi_dropdown_result(multi_dropdown):
        print('下拉菜单中的值为:“{}”。'.format(','.join(multi_dropdown)))

    a.page()  # 新建一个页面
    a.h('控件一览(包括作为标题的我自己)', color='#f00', bcolor='#ff0')
    a.t()
    a.t('【我是几个文字】')
    a.t('【我跟在左边文字后面】')
    a.t()  # 换行
    a.t('【我被换行了……】')
    a.t('而我有色彩', color='#f00', bcolor='#ff0')
    a.t()  # 再换行
    a.t('【当你看见我时,你需要点鼠标左键或右键】', True)
    a.t()  # 再换行
    a.t('【当你看见我时,你还是需要点鼠标左键或右键】', True)
    a.t()  # 再换行
    a.b('我是一个红按钮', a.goto, button_result, color='red')
    a.b('我是一个不能按的红按钮', a.goto, button_result, color='red', disabled=True)
    a.b('快拿鼠标戳我!', a.goto, button_result, popup='被你戳到了,好爽~')
    a.b('我是振动器!', a.shake, 100)
    a.t()
    a.divider()  # 我是一个分割线
    a.t()
    a.t('作为进度条,我当前值为50,总共100,在界面上显示为 200px 长:')
    a.progress(50, 100, 200)
    a.t()
    a.t('如果给这个游戏引擎评分,5分满分,我给4分:')
    a.rate(4, 5)
    a.t()
    a.t('我是一个可以点的评分哦~点击之后请在后端控制台查看效果~(对着当前评分再点击一次可以取消评分哦~(等价于评0分)):')
    a.rate(2, 5, rate_result, False)
    a.t()
    a.t('我是一个单选,目前默认选中第二项(索引为1)修改之后请在后端控制台查看效果:')
    a.radio(['一', '二', '三'], radio_result, 2)
    a.t()
    a.t('我是一个复选框,目前默认已选中,修改之后请在后端控制台查看效果:')
    a.check('我是一个复选框哦!', check_result, True)
    a.t()
    a.t('我是输入框,修改之后请在后端控制台查看效果:')
    a.input(input_result, '我是默认值哦~')
    a.t()
    a.t('我是多行文本输入框,修改之后请在后端控制台查看效果:')
    a.t()
    a.input(input_result, '我是默认值哦~\n我还会换行~', True)
    a.t()
    a.t('我是一个下拉菜单哦!(下拉选择项目并在后端查看效果):')
    a.dropdown(['甲', '乙', '丙'], dropdown_result, default='丙')
    a.t()
    a.t('我是一个多选下拉菜单哦!(下拉选择多个项目并在后端查看效果):')
    a.dropdown(['甲', '乙', '丙', '丁', '戊'],
               multi_dropdown_result,
               multiple=True,
               default='戊')
    a.t()
    a.t('以上,就是目前支持的全部控件及用法啦~')
    a.t()
    a.t('如果您需要新增,请跟作者联系哦~')
    a.t()
    a.b('返回', a.back)