---
# System prepended metadata

title: BookDangeonプロジェクト仕様書

---

# BookDangeonプロジェクト仕様書
ワイヤーフレームはmiro参照
githubURL https://github.com/Reyt0m/BookDangeon
## 使用可能言語
HTML,CSS,Javascriptのみ。
node.jsを入れる場合は拡張機能開発のできるライブラリの導入が必要
https://qiita.com/abcang/items/10750e3fb8453d5e0944
## 経験値パート
目標は4/1日完成
### 大まかな流れ
- 読了!ボタンを押す
- 難易度バーを動かす
- 経験値を取得ボタンを押す
- 本ごとに割り当てられた経験値を取得し、取得経験値量をアラートする
- 既存経験値に取得経験値を足して現在経験値にする
- 現在経験値と経験値テーブルを比較する
- 現在経験値が経験値テーブルの[lvevl]よりたかければlevelUpさせ、アラートする。
- 足りていなければ、残り経験値をアラートする
### 詳細
作る必要があること
- 本を読んだ際の経験値取得処理（難易度設定が終わったあとは、難易度と現在レベルの差を比較して経験値に倍率をつける予定）
- 経験値テーブル
- 経験値取得時、レベルup時、未レベルアップ時のアラート
- 現在経験値、現在レベル、次レベルまでの残り経験値量をpopup.htmlに表示

### 参考となるページ
chrome拡張機能基本
https://qiita.com/RyBB/items/32b2a7b879f21b3edefc
経験値処理基本
http://oredon.guitarkouza.net/blog/2014/04/enchantjsoredondemo.php

#### サンプルコード
```

const exp = 5;
const $done = '読み終わった！';
var lv = 1;
var roleExp = 0;
var EXPTABLE = [
    0,
    4,
    10,
    22,
    38,
    58,
    72,
    99
];
var restExp = (EXPTABLE[lv] - roleExp);
var startBar = 100*(EXPTABKLE[lv]-roleExp)/EXPTABLE[lv];
var goalBar = 100*restExp/EXPTABKLE[lv];
var skillbar = document.getElementById('bookLevelBar');

document.getElementsByTagName('button')[0].addEventListener("click", () => {
    if(document.getElementsByTagName('button')[0].textContent === $done ){
        window.alert('経験値獲得！');
        roleExp = roleExp + exp;
        if(roleExp => EXPTABLE[lv]){
            lv = lv + 1;
            restExp = (EXPTABLE[lv] - roleExp);
            window.alert('LevelUP!')
            document.getElementById('your-level').textContent = lv;
        } else{
        }
    }
});
document.getElementById('rest-exp').textContent = restExp;
document.getElementById('your-level').textContent = lv;
```
#### フォルダ構造
booklevel
|
-js
 |
 -harding.js
 -level.js
 -jquery-mim-.js
 -jguery-2.1.4.min.js
 -skill_bar_jquery.js
-static
 |
 -css
 -icons 
-templates
 |
 -popup.html
manifest.json
README.md

## 難易度作成パート