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)
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)
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'])))
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)
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)
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)
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)
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()
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)