ドラクエ クイズ

DQX 知の祝祭の練習問題で賢王の称号を目指そう!

view source

JavaScript

document.title = 'ドラクエ クイズ';
//DQX 知の祝祭の練習問題で賢王の称号を目指そう!



let quizCSV = '';
let originalQuizList = [];
let quizPool = [];


fetch('./quizDqxData.csv')
  .then(response => {
    if (!response.ok) throw new Error("error");
    return response.text();
  })
  .then(csv => {
    originalQuizList = parseCsvToQuiz(csv);
    quizCSV = csv;
    quizPool = [...originalQuizList]; // 初回セット
    loadQuiz();
    showQuizAll();
  })
  .catch(error => {
    console.error("エラー:", error);
  });

function parseCsvToQuiz(csv) {
  const lines = csv.trim().split("\n");
  const result = [];

  for (const line of lines) {
    const cells = line.split("\t").map(c => c.trim());

    if (cells.length < 2 || !cells[0]) continue;

    const [question, ...choices] = cells;
    result.push({
      question,
      choices,
      correct: choices[0],
    });
  }

  return result;
}

function loadQuiz() {

  if (quizPool.length === 0) {
    quizPool = [...originalQuizList];
  }

  const randomIndex = Math.floor(Math.random() * quizPool.length);
  const quiz = quizPool.splice(randomIndex, 1)[0]; // 抽選&削除

  const shuffledChoices = quiz.choices
    .map(text => ({ text, sort: Math.random() }))
    .sort((a, b) => a.sort - b.sort)
    .map(({ text }) => ({ text }));

  if(!quiz.question.match(/ドラゴンクエスト/)){
    quiz.question = 'DQXより ' + quiz.question;
  }
  
  displayQuiz({
    h1: document.title,
    question: quiz.question,
    choices: shuffledChoices,
    correct: quiz.correct
  });
}

function showQuizAll() {
  pre.textContent += '\n====' + '\n'.repeat(20) + quizCSV.split("\n").join("\t");
}

const text = `
知の祝祭とは
ドラゴンクエストX内で行われる限定イベント
各部屋ごとに問題が出題されます。
制限時間内に、正解と思う番号の扉に進んでください。正解すると、次の部屋に進めます。
※ 扉の前にいるだけでは解答したことになりません。 決定ボタンなどで扉に「しらべる」をしてください。
不正解になると、「ハート」を1つ失います。ハートは3つある状態でスタートしますが、3つ全て失うとイベント終了となります。
https://hiroba.dqx.jp/sc/topics/detail/8b9e7ab295e87570551db122a04c6f7c/

練習問題集では仮想の出題以外に実際の過去問題から良問を一部抜粋してます。
過去ナンバリングタイトルは**より~と問題文に記載あり。
記載なしの場合はドラクエ10です。


このページでは、株式会社スクウェア・エニックスを代表とする共同著作者が権利を所有する画像を利用しております。 当該画像の転載・配布は禁止いたします。 (C)2019 ARMOR PROJECT/BIRD STUDIO/SQUARE ENIX All Rights Reserved.(C)SUGIYAMA KOBO(P)SUGIYAMA KOBO
`;

const pre = document.createElement('div');
pre.textContent = text;
pre.style.width = '98%';
pre.style.height = '240px';
pre.style.fontSize = '14px';
pre.style.overflowY = 'hidden';
pre.style.whiteSpace = 'pre-wrap';
pre.addEventListener('mouseover',()=>{pre.remove();});
const demo = document.getElementById('demo');
demo.after(pre);

CSS

HTML

ページのソースを表示 : Ctrl+U , DevTools : F12

view-source:https://hi0a.com/game/dqx-quiz/

ABOUT

hi0a.com 「ひまあそび」は無料で遊べるミニゲームや便利ツールを公開しています。

プログラミング言語の動作デモやWEBデザイン、ソースコード、フロントエンド等の開発者のための技術を公開しています。

必要な機能の関数をコピペ利用したり勉強に活用できます。

プログラムの動作サンプル結果は画面上部に出力表示されています。

環境:最新のブラウザ GoogleChrome / Windows / Android / iPhone 等の端末で動作確認しています。

画像素材や音素材は半分自作でフリー素材配布サイトも利用しています。LINK参照。

仕様変更、API廃止等、実験途中で動かないページもあります。