宝可梦图鉴App:专为宝可梦粉丝打造的便捷查询工具

宝可梦系列自问世以来,凭借其独特的精灵设计和深奥的游戏玩法,吸引了无数粉丝。然而,随着宝可梦系列的不断更新和改版,精灵的数据和技能也在不断变化。为了帮助宝可梦粉丝更好地了解和查询他们喜爱的精灵,我开发了“宝可梦图鉴App”——一款专为宝可梦粉丝打造的手机版宝可梦改版图鉴应用。


一、应用简介

“宝可梦图鉴App”是一款专为宝可梦粉丝设计的手机应用,旨在为用户提供一个便捷、功能丰富的宝可梦查询工具。用户可以通过该应用浏览所有宝可梦的详细信息,随时随地查看它们的属性、技能、进化线、蛋群信息,甚至精灵的捕获位置。与原版数据相比,改版后的精灵数据可能会有很大不同,因此,这款应用旨在为玩家提供最新、最全面的改版精灵信息。

二、应用功能亮点

1. 精灵详情页

  • 精灵属性:查看精灵的属性、种族值、特性等详细信息。
  • 进化线:了解精灵的进化方式和进化条件。
  • 蛋群信息:查询精灵所属的蛋群和孵化条件。


2. 精灵技能查询

  • 技能列表:浏览精灵的所有可学习技能。
  • 技能详情:查看技能的效果、功耗、学习等级等信息。
  • 技能学习精灵:在技能详情页查询哪些精灵可以学习该技能。

3. 精灵查询功能

  • 多维度筛选:支持按属性,精灵名称查询精灵。
  • 懒加载:精灵列表采用懒加载技术,提高应用的响应速度和性能。
  • 高质量图片:支持查看精灵的高质量立图和场上模型。

4. 地区分布查看

  • 捕获位置:查看精灵在不同地区的捕获位置。
  • 地图视图:通过地图直观了解精灵的分布情况。

三、项目获取

沙琪马/音箱蟀侠图鉴

四、项目改造方案

1,图鉴标题

对应这个标签 

 

2,数据导入

提示:这个数据必须按照我给你的格式进行填入,否则很大概率会出现问题

但是你别慌,我已经提前写好脚本了

 

(1),精灵信息
{
            "编号": "001",
            "名称": "妙蛙种子",
            "进化阶段": 1,
            "种族值": [
                45,
                49,
                49,
                65,
                65,
                45
            ],
            "总种族值": 318,
            "特性": [
                "茂盛",
                "太阳驱动",
                "太阳驱动"
            ],
            "属性": [
                "草",
                "毒"
            ],
            "可能携带的物品": [
                {
                    "物品": "妙蛙花进化石",
                    "概率": 50
                }
            ],
            "经验值累积速度": "较慢",
            "蛋群": [
                "怪兽",
                "植物"
            ],
            "孵蛋周期": 5
        }

当时作者给我提供的数据格式如下,如果你的也是这样,可以直接使用我写的脚本来获取json数据,然后直接复制粘贴即可。

 

import re
import json


def parse_pokemon_data(file_path):
    pokemons = []
    with open(file_path, 'r', encoding='utf-16') as file:
        lines = file.readlines()
        pokemon = {}
        start = 1
        for line in lines:
            if line.startswith('======'):
                if start == 2:
                    start = 1
                    continue
                if pokemon:
                    pokemons.append(pokemon)
                    pokemon = {}
                start += 1
            elif ' - ' in line and '(进化阶段:' in line:
                parts = line.split(' - ')
                name = parts[1].strip()
                number = parts[2].split(' ')[0].strip()
                stage = int(re.search(r'\(进化阶段: (\d+)\)', line).group(1))
                pokemon['编号'] = number
                pokemon['名称'] = name
                pokemon['进化阶段'] = stage
            elif '种族值:' in line:
                stats = [int(s) for s in re.findall(r'\d+', line.split('种族值:')[1])]
                total_stats = sum(stats)
                pokemon['种族值'] = stats
                pokemon['总种族值'] = total_stats
            elif '特性:' in line:
                abilities = [s.strip() for s in line.split('特性: ')[1].split('|')]
                abilities = [ability.split(' ')[0] for ability in abilities]
                pokemon['特性'] = abilities
            elif '属性:' in line:
                types = [t.strip() for t in line.split('属性: ')[1].split('/')]
                pokemon['属性'] = types
            elif '物品' in line:
                if '可能携带的物品' not in pokemon:
                    pokemon['可能携带的物品'] = []
                match = re.search(r'物品 \d+ \((\d+)%\): (.+)', line)
                if match:
                    item_prob = int(match.group(1))
                    item_name = match.group(2).strip()
                    if item_prob > 0:
                        pokemon['可能携带的物品'].append({"物品": item_name, "概率": item_prob})
            elif '经验值累积速度:' in line:
                pokemon['经验值累积速度'] = line.split('经验值累积速度: ')[1].strip()
            elif '蛋群:' in line:
                egg_groups = [g.strip() for g in line.split('蛋群: ')[1].split('/')]
                pokemon['蛋群'] = egg_groups
            elif '孵蛋周期:' in line:
                pokemon['孵蛋周期'] = int(line.split('孵蛋周期: ')[1].strip())

        if pokemon:
            pokemons.append(pokemon)

    return pokemons


file_path = '宝可梦个体数据.txt'
pokemons = parse_pokemon_data(file_path)

# 输出JSON格式的数据
print(json.dumps(pokemons, ensure_ascii=False, indent=4))
 (2),精灵技能表

群主提供的数据格式如下


脚本如下 

def parse_pokemon_data(file_path):
    pokemons = []
    with open(file_path, 'r', encoding='utf-16') as file:
        pokemon = {}
        SkillList = []
        for line in file:
            # 假设每行以逗号分隔
            data = line.strip().split(' ')
            if data[0] == '':
                pokemon['SkillList'] = SkillList.copy()
                pokemons.append(pokemon)
                pokemon = {}
                SkillList = []
            if data[0] == '======': continue
            if len(data) == 2:
                pokemon.update({'序号': data[0], 'name': data[1]})
            elif len(data) == 3:
                SkillList.append({'level': data[0], 'skill_name': data[2]})

    return pokemons


if __name__ == "__main__":
    # 假设文件名为 "4.01等级上升技能表.txt"
    file_path = '4.01等级上升技能表.txt'
    pokemons = parse_pokemon_data(file_path)
    print(pokemons)
 (3),精灵特性

由于特性改动很小,所以我就懒得写脚本了,直接用的就是原版的,然后手动改了一些

(4),技能表

由于技能表改变也不是很大,所以如上,我当时也是手敲的 

(5),精灵获取方式

这个群主提供的是  .xls 表格 ,所以我也是按照这个表格写的脚本,大家注意一下

 

脚本

import pandas as pd

# 加载 .xls 文件
file_path = '1.xls'
df = pd.read_excel(file_path)

# 选择需要的列
selected_columns = df[['精组译名', '捕捉方式', '进化等级', '特殊说明']]

# 重命名列
selected_columns = selected_columns.rename(columns={'精组译名': 'pokemonName'})

# 将 DataFrame 转换为 JSON
json_data = selected_columns.to_json(orient='records', force_ascii=False)



# 输出 JSON 数据
print(json_data)
 (6),精灵地区分布

当时群主提供的数据格式如下

 

 脚本

import re

def parse_pokemon_data(file_path):
    # 用于存储最终结果
    grouped_results = {}

    with open(file_path, 'r', encoding='utf-8') as file:
        current_map = None  # 当前地图名称

        # 匹配每行环境和数据的正则表达式
        line_pattern = re.compile(
            r"(?P<environment>[\w\s]+): (?P<data>.+)"
        )

        # 匹配单个 Pokémon 数据的正则表达式
        pokemon_pattern = re.compile(
            r"(?P<rate>\d+%|\?%) - (?P<name>[\w-]+) \(Level (?P<level>\d+), Forme: (?P<forme>\d+)\)"
        )

        for line in file:
            line = line.strip()

            # 检查是否是地图标题
            if line.startswith("Map"):
                current_map = line.split("-", 1)[-1].strip()
                if current_map not in grouped_results:
                    grouped_results[current_map] = {}
                continue

            # 查找匹配的环境和数据部分
            line_match = line_pattern.match(line)
            if line_match:
                environment = line_match.group("environment").strip()
                data = line_match.group("data")

                if environment not in grouped_results[current_map]:
                    grouped_results[current_map][environment] = []

                # 在环境数据中查找所有 Pokémon 数据
                for pokemon_match in pokemon_pattern.finditer(data):
                    rate = pokemon_match.group("rate")
                    name = pokemon_match.group("name")
                    if name == "---":
                        continue
                    level = int(pokemon_match.group("level"))
                    forme = int(pokemon_match.group("forme"))

                    # 向结果中追加数据
                    grouped_results[current_map][environment].append({
                        "rate": rate,
                        "name": name,
                        "level": level,
                        "forme": forme,
                    })

    # 删除没有数据的城镇
    grouped_results = {key: value for key, value in grouped_results.items() if value}

    return grouped_results

if __name__ == "__main__":
    file_path = '野外遭遇.txt'
    pokemons = parse_pokemon_data(file_path)
    import json
    print(json.dumps(pokemons, ensure_ascii=False, indent=2))

下面是地区图片的文件夹,把你想替换的图鉴添加到里面即可

最重要的一点,当时我蠢了,用的中文命名,想着方便很多,但是之后打包回失败报错,后面我又一点一点的改成中文,希望有大佬可以优化这一点吧。 

 

如果要使用,需要自己写键值对

五,项目打包

1,打包

这里要使用一个 HBuilder X 的软件,来把他打包为 APP,先在项目中使用下面这个命令,来打包文件。

npm run build

 

打包后会生成这个文件夹

 

2,打包App 

下载HbuilderX之后新建项目 

选择好项目本地存放的地址,编写项目名,之后点击创建 

打开刚刚创建的那个项目,点击打开manifest.json,就是下图这样子 

填写你的h5项目地址 ,这里和我写的一样即可

基本配置(看图),太简单太多自己研究 

 

把刚刚打包的数据全部放到项目中,如下

打包

 

等待一会,即可打包 ,然后手机安装即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值