<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>女子高生キャラクタージェネレーター</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            max-width: 800px;
            margin: 0 auto;
            padding: 20px;
            background-color: #fff8fa;
        }
        .character-profile {
            background-color: #fff;
            padding: 20px;
            border-radius: 8px;
            margin-top: 20px;
            box-shadow: 0 2px 8px rgba(0,0,0,0.1);
            border: 1px solid #ffcce0;
        }
        button {
            padding: 10px 20px;
            background-color: #ff6699;
            color: white;
            border: none;
            border-radius: 4px;
            cursor: pointer;
            font-size: 16px;
            transition: background-color 0.3s;
        }
        button:hover {
            background-color: #ff3377;
        }
        .export-btn {
            margin-top: 20px;
            background-color: #66aaff;
        }
        .export-btn:hover {
            background-color: #3377ff;
        }
        h1 {
            color: #ff3377;
            text-align: center;
        }
        h2 {
            color: #ff6699;
            border-bottom: 2px solid #ffcce0;
            padding-bottom: 5px;
        }
        .seed-info {
            background-color: #f0f0f0;
            padding: 10px;
            border-radius: 4px;
            margin-bottom: 15px;
            font-family: monospace;
            font-size: 14px;
        }
    </style>
</head>
<body>
    <h1>女子高生キャラクタージェネレーター</h1>
    <p>タイムスタンプをシード値として使用した、ランダムな女子高生キャラクターを生成します。</p>
    
    <div>
        <button id="generateBtn">キャラクターを生成</button>
    </div>
    
    <div id="characterProfile" class="character-profile" style="display: none;">
        <div id="seedInfo" class="seed-info"></div>
        <h2>キャラクタープロフィール</h2>
        <div id="profileContent"></div>
        <button id="exportBtn" class="export-btn">テキストファイルとして保存</button>
    </div>
    
    <script>
        // データベース:各特性のオプション
        const data = {
            名前: ["アヤカ", "ユイ", "ミサキ", "ヒナ", "リン", "アイリ", "サオリ", "ハルカ", "マオ", "アオイ", "リコ", "アンナ", "ユウナ", "ルナ", "アヤネ", "ミオ", "シズク", "カノン", "コトネ", "カエデ", "リカ", "サクラコ", "ナナ", "メイ", "サナ", "シオリ", "レナ", "ユウカ", "ミズキ", "アカネ", "チヒロ", "ノア", "ヒカリ", "ミユウ", "アヤノ", "アヤカ", "ユナ", "アイ", "マイ", "ハルナ", "カホ", "フユカ", "アカネ", "ルリ", "ユウリ", "ミツキ", "セナ", "ホノカ", "リオ", "アイナ", "エミ", "ソラ", "ユキ", "ハナ", "ミカ", "アミ", "ナツキ", "リサ", "トモカ", "ユメ", "コハル", "スミレ", "ミナ", "カナ", "レイ", "アカリ", "サキ", "ヒメ", "ノゾミ", "ユリ", "マユ", "シオン", "カスミ", "モモ", "ツバキ", "アサミ", "ミライ", "エリ", "サヤ", "ルカ", "ナギ", "ホタル", "ミホ", "キラ", "セイラ", "リホ", "ユズ", "マナ", "ヒロ", "サツキ", "アヤメ", "ラン", "チアキ", "ミヤ", "ハヅキ", "フミ", "セリ", "ナオ", "リノ", "ツキ"],
            
            性格: ["明るい", "元気", "陽気", "無邪気", "天真爛漫", "素直", "優しい", "穏やか", "おっとり", "のんびり", "天然", "マイペース", "ドジっ子", "甘えん坊", "人懐っこい", "寂しがり屋", "泣き虫", "ツンデレ", "クーデレ", "ヤンデレ", "ツンツン", "デレデレ", "クール", "冷静", "知的", "聡明", "論理的", "真面目", "堅実", "生真面目", "几帳面", "努力家", "健気", "世話焼き", "お姉さん気質", "母性が強い", "面倒見がいい", "リーダー気質", "姉御肌", "男勝り", "負けず嫌い", "気が強い", "勝ち気", "意地っ張り", "毒舌", "辛辣", "高飛車", "プライドが高い", "わがまま", "自己中心的", "小悪魔的", "ミステリアス", "不思議ちゃん", "神秘的", "妖艶", "色気がある", "誘惑的", "あざとい", "計算高い", "策略家", "冷酷", "サディスティック", "ドS", "ドM", "内向的", "恥ずかしがり屋", "シャイ", "引っ込み思案", "気弱", "臆病", "自信がない", "ネガティブ", "悲観的", "根暗", "陰キャ", "内気", "大人しい", "無口", "無表情", "感情が読めない", "感情を表に出さない", "感受性豊か", "涙もろい", "ロマンチスト", "夢見がち", "妄想癖", "中二病", "自由奔放", "気まぐれ", "飽きっぽい", "面倒くさがり", "ルーズ", "適当", "ズボラ", "大雑把", "お調子者", "騒がしい", "にぎやか", "おしゃべり", "毒舌", "皮肉屋", "反抗的", "斜に構える", "不良っぽい", "アウトロー", "ミーハー", "世俗的", "打算的", "ちゃっかりしている", "金にがめつい", "ギャンブラー気質", "人たらし", "カリスマ性がある", "社交的", "外交的", "八方美人", "誰とでも仲良くなれる", "大人っぽい", "ユーモラス", "お茶目", "キラキラ", "ムードメーカー", "楽しそう", "はしゃぎすぎ", "スイーツ好き", "おしゃれ", "トレンド追い", "可愛らしい", "ふわふわ", "秘密主義", "謎めいた", "マジカル", "ほんわか", "ピュア", "夢見るドリーマー", "元気はつらつ", "パワフル", "熱し", "はきはき", "青春", "熱狂", "長身脳", "はつらつ", "献身", "清楚", "照れ隠し", "無邪気悪", "乙女チック", "考えすぎ", "読みすぎ", "深い", "真実見", "熱くなれない", "ノスタルジック", "物思い", "空気読める", "丁寧", "親切", "頑張り屋", "剥き出し", "変化好き", "想像力豊か", "特別感", "思い出し", "感情的", "強がり", "いたずらっ子", "ギャル"],
            
            好きな相手への態度: ["素直に甘える", "恥ずかしがりながら甘える", "ツンツンしながら甘える", "無邪気にじゃれつく", "大胆にアプローチする", "控えめに好意を示す", "上目遣いで見つめる", "ふくれっ面をする", "頬を赤らめる", "じっと目をそらさない", "そっぽを向く", "拗ねる", "泣きそうな顔をする", "すねたふりをする", "無表情を装う", "冷たくあしらう", "からかう", "茶化す", "意地悪を言う", "毒舌を吐く", "小悪魔的に誘惑する", "無邪気にスキンシップする", "距離を詰めてくる", "わざと距離を取る", "ちょっと意地悪をする", "嫉妬する", "独占欲を見せる", "依存する", "さりげなく世話を焼く", "積極的に世話を焼く", "お節介を焼く", "強がる", "負けず嫌いな態度を取る", "プライドが高くふるまう", "一歩引いた態度を取る", "冷静に対応する", "計算高くふるまう", "打算的に接する", "素直になれずそっけなくする", "デレデレに甘える", "わざとそっけなくする", "おどおどする", "挙動不審になる", "緊張して固まる", "自信満々に振る舞う", "堂々としている", "明るく接する", "親しげに距離を縮める", "意図的に距離を置く", "軽くあしらう", "興味なさそうに振る舞う", "わざと興味ありげにする", "真剣な表情を見せる", "じっと考え込む", "何かを企んでいる様子", "不機嫌そうにする", "泣き出しそうになる", "強がって笑う", "本音を隠して微笑む", "本音を漏らしてしまう", "突然素直になる", "急に大胆になる", "無防備な態度を取る", "礼儀正しく接する", "ぶっきらぼうに話す", "ため息をつく", "冷淡な態度を取る", "不器用に好意を示す", "そっけなくしながらも気にかける", "何気なく助ける", "意図せず優しくしてしまう", "からかいながらも心配する", "わざと冷たい態度を取る", "心配しながらも素直になれない", "挑発的にふるまう", "試すような態度を取る", "駆け引きをする", "照れ隠しに怒る", "口を尖らせる", "目を逸らして誤魔化す", "じっと手を握る", "袖を掴む", "裾を引っ張る", "腕を組む", "抱きつく", "後ろから抱きつく", "上目遣いでお願いする", "涙目で訴える", "唇をかむ", "指を絡ませる", "そっと体を寄せる", "膝枕をする", "髪を撫でる", "頭を預ける", "服の裾を握る", "照れながらも寄り添う", "大胆にキスをする", "そっとキスをする", "わざとじらす", "名前を呼んでくる", "耳元で囁く"],
            
            体型: ["がっしり", "ぽっちゃり", "長身細身", "むっちり", "ほっそり", "肉感的", "柔らかボディ", "アスリート体型", "スラッと", "丸っこい", "がっちり", "薄っぺら", "ふくよか", "引き締まった", "しなやか", "ずんぐり", "均整美", "ナチュラルボディ", "ガリガリ", "曲線美", "スレンダー小胸小尻", "スレンダー大胸小尻", "グラマラス大胸大尻", "グラマラス小胸大尻", "小柄小胸小尻", "小柄大胸普通尻", "高身長大胸小尻", "高身長普通胸大尻", "筋肉質小胸普通尻", "細マッチョ普通胸小尻", "メリハリボディ大胸大尻", "華奢小胸小尻", "ふっくら大胸普通尻", "均整の取れた体型普通胸普通尻", "モデル体型小胸小尻", "幼児体型小胸小尻", "豊満大胸大尻", "ボーイッシュ小胸普通尻", "がっしり普通胸大尻", "ぽっちゃり大胸大尻", "長身細身小胸小尻", "むっちり大胸大尻", "ほっそり小胸小尻", "肉感的大胸大尻", "柔らかボディ大胸普通尻", "アスリート体型普通胸小尻", "スラッと小胸小尻", "丸っこい普通胸大尻", "がっちり小胸普通尻", "薄っぺら小胸小尻", "ふくよか大胸大尻", "引き締まった普通胸小尻", "しなやか小胸普通尻", "ずんぐり普通胸大尻", "均整美大胸普通尻", "ナチュラルボディ普通胸普通尻", "ガリガリ小胸小尻", "曲線美大胸大尻", "スレンダー普通胸大尻", "ぽっちゃり小胸大尻"],
            
            性感帯: ["頭皮", "耳", "口", "舌", "胸", "腋", "腹", "尻", "女性器", "肛門", "太もも", "指の股"],
            
            弱点: ["キス", "ディープキス", "耳舐め", "首筋舐め", "乳首舐め", "乳首つまみ", "胸揉み", "尻揉み", "尻叩き", "太もも撫で", "足舐め", "腋舐め", "へそ舐め", "クンニ", "フェラチオ", "パイズリ", "素股", "アナル舐め", "言葉責め", "甘い囁き", "目隠し", "手錠", "緊縛", "鞭打ち", "スパンキング", "軽い噛みつき", "髪引っ張り", "首絞め", "抱きしめ", "密着", "背中撫で", "唾液交換", "顔舐め", "汗舐め", "愛撫", "乳首吸い", "耳に息吹きかけ", "お尻ペンペン", "焦らしプレイ", "寸止め", "連続絶頂", "強制絶頂", "電マ", "クリ責め", "騎乗位", "バック", "正常位", "対面座位", "駅弁", "立位", "壁ドン体位", "鏡前プレイ", "シャワー責め", "ローション", "見つめ合い", "耳元囁き", "喘ぎ声要求", "名前呼び", "甘噛み", "爪立て", "髪撫で", "頭撫で", "抱き潰し", "押し倒し", "壁押し", "羽交い絞め", "膝枕", "太もも締め", "顔面騎乗", "足踏み", "踏みつけ", "くすぐり", "舐め回し", "全身キス", "ハグキス", "指フェラ", "乳首擦り", "尻コキ", "囁きながら挿入"],

        	髪型: ["ロングストレート", "ミディアムレイヤー", "ショートボブ", "ロングウェーブ", "ポニーテール", "お団子ヘア", "ツインテール", "サイドポニー", "フレンチブレイド", "フィッシュボーンブレイド", "ハーフアップ", "ピクシーカット", "アシンメトリーボブ", "ウルフカット", "ロングレイヤー", "シースルーバング", "センターパート", "サイドパート", "ヘアアレンジアップスタイル", "ウェットヘア", "コーンロウ", "ドレッドロックス", "アフロ", "ビーチウェーブ", "編み込みアップ", "ハイポニー", "ローポニー", "サイドシニヨン", "ワンレングス", "ヒッピースタイル", "レトロウェーブ", "ブラントカット", "グラデーションカラー", "インナーカラー", "マッシュルームカット", "カーリーヘア", "シャギーカット", "ヘアアクセサリー付き", "ハーフシェーブ", "アンダーシェーブ", "ショートパーマ", "ソバージュ", "ウェーブボブ", "ロングパーマ", "編み込みハーフアップ", "フェミニンショート", "スパイラルパーマ", "ゆるふわカール", "オールバック", "前髪ありロング"],
        	口調: ["普通の丁寧語「です・ます」調", "元気で明るい「だよね~!」", "クールでそっけない「別に」口調", "お嬢様系「ですわ~」", "ギャル語満載「マジやばくない?」", "少し緊張した「あの…えっと…」", "テンション高め「超楽しい~!」", "ツンデレ「べ、別にあんたのためじゃないんだからね」", "方言混じり「~じゃん」「~だべ」", "アニメ好き「推し最高~!」", "真面目な委員長「皆さん、注目してください」", "おっとり癒し系「あ、そうなんだね…」", "サバサバ系「めんどくさ~」", "SNS語「草」「それな」多用", "英語フレーズ混じり「マジYabai」「Like, seriously?」", "流行語をよく使う「それってホント、エモいよね」", "語尾に「~かも」を付ける", "オタク系「推しが尊すぎる~」", "猫語尾「~にゃん」「にゃんにゃん」", "博学系「実はこれって…なんだよね」", "体育会系「頑張るぞっ!」「根性だ!」", "内気な「…そう、かな」", "悩み相談上手「大丈夫?話聞くよ?」", "ゲーマー「ナイスプレイだった!」", "勉強熱心「テスト範囲教えて~」", "音楽好き「この曲マジ神」", "反抗期「うざ」「めんどい」多用", "食べ物好き「それ美味しそう!」", "恋バナ好き「ねえねえ、好きな人いる?」", "噂好き「あのね、聞いた?」", "流行に敏感「今これが流行ってるんだよ」", "カワイイ系「きゃ~、めっちゃ可愛い~!」", "面倒見がいい「大丈夫?手伝おうか?」", "自撮り好き「この角度ベストじゃない?」", "親友との特別な言葉「いつものやつね」", "部活熱心「練習頑張らなきゃ!」", "恋愛に夢中「好きすぎてやばい…」", "悩み多き「もう何もわかんない…」", "ひょうきん「ウケる~!」", "ファッション好き「この服、どう思う?」", "コスメマニア「この新作コスメ最高!」", "LINE語「りょ」「おけ」多用", "感情表現豊か「うれしすぎて泣ける~」", "文学少女「あのね、この本素敵なんだ」", "算数得意「これ、こう解くと簡単だよ」", "パリピ系「今夜マジ盛り上がろう!」", "ちょい毒舌「あんた、それはないわー」", "妹キャラ「お兄ちゃん風」話し方", "遠慮がち「迷惑じゃなかったら…」", "キャピキャピ系「きゃぴ~♪」"]
        };
        // タイムスタンプからシード値を生成する関数
        function generateSeedFromTimestamp() {
            const now = new Date();
            const hours = now.getHours();
            const minutes = now.getMinutes();
            const seconds = now.getSeconds();
            
            // 時:分:秒を連結した数値を生成
            const seedValue = parseInt(`${hours}${minutes}${seconds}`);
            
            return {
                timestamp: now,
                seed: seedValue,
                formattedTime: `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`
            };
        }

        // シード値に基づいてランダムな要素を選択する関数
        function getElementBasedOnSeed(array, seed) {
            const index = seed % array.length;
            return array[index];
        }

        // シード値に基づいて複数の性格を選択する関数
        function getPersonalitiesBasedOnSeed(seed) {
            const personalityCount = (seed % 3) + 1; // 1〜3個の性格
            const personalities = [];
            let currentSeed = seed;
            
            for (let i = 0; i < personalityCount; i++) {
                // 異なるシード値を生成するために少しずつズラす
                currentSeed = currentSeed * 17 + 23;
                const personality = getElementBasedOnSeed(data.性格, currentSeed);
                
                // 重複チェック
                if (!personalities.includes(personality)) {
                    personalities.push(personality);
                }
            }
            
            return personalities;
        }

        // キャラクタープロフィールを生成する関数
        function generateCharacterProfile() {
            const seedInfo = generateSeedFromTimestamp();
            const seed = seedInfo.seed;
            
            const profile = {
                名前: getElementBasedOnSeed(data.名前, seed),
                髪型: getElementBasedOnSeed(data.髪型, seed),
                性格: getPersonalitiesBasedOnSeed(seed).join('、'),
                好きな相手への態度: getElementBasedOnSeed(data.好きな相手への態度, seed),
                体型: getElementBasedOnSeed(data.体型, seed),
                性感帯: getElementBasedOnSeed(data.性感帯, seed),
                弱点: getElementBasedOnSeed(data.弱点, seed),
                口調: getElementBasedOnSeed(data.口調, seed)
            };
            
            return {
                profile: profile,
                seedInfo: seedInfo
            };
        }

        // プロフィールをHTMLとして表示する関数
        function displayProfile(profileData) {
            const profileDiv = document.getElementById('profileContent');
            const seedInfoDiv = document.getElementById('seedInfo');
            let html = '';
            
            // シード情報を表示
            seedInfoDiv.innerHTML = `生成時刻: ${profileData.seedInfo.formattedTime}<br>シード値: ${profileData.seedInfo.seed}`;
            
            // プロフィール情報を表示
            for (const [key, value] of Object.entries(profileData.profile)) {
                html += `<p><strong>${key}:</strong> ${value}</p>`;
            }
            
            profileDiv.innerHTML = html;
            document.getElementById('characterProfile').style.display = 'block';
        }

        // テキストファイルとして保存する関数
        function saveAsTextFile(profileData) {
            const profile = profileData.profile;
            let text = "【女子高生キャラクタープロフィール】\n\n";
            text += `生成時刻: ${profileData.seedInfo.formattedTime}\n`;
            text += `シード値: ${profileData.seedInfo.seed}\n\n`;
            
            for (const [key, value] of Object.entries(profile)) {
                text += `${key}: ${value}\n`;
            }
            
            const blob = new Blob([text], { type: 'text/plain' });
            const a = document.createElement('a');
            a.href = URL.createObjectURL(blob);
            a.download = `女子高生キャラクター_${profile.名前}.txt`;
            a.click();
        }

        // イベントリスナーを設定
        document.addEventListener('DOMContentLoaded', function() {
            const generateBtn = document.getElementById('generateBtn');
            const exportBtn = document.getElementById('exportBtn');
            let currentProfileData = null;
            
            generateBtn.addEventListener('click', function() {
                currentProfileData = generateCharacterProfile();
                displayProfile(currentProfileData);
            });
            
            exportBtn.addEventListener('click', function() {
                if (currentProfileData) {
                    saveAsTextFile(currentProfileData);
                }
            });
        });
    </script>
</body>
</html>