Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
164 changes: 164 additions & 0 deletions documentation_ja.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
<!DOCTYPE html>
<html>
<head>
<title>Elevator Saga - help and API documentation</title>
<meta charset="UTF-8">
<link rel="stylesheet" href="font-awesome-4.1-1.0/css/font-awesome.min.css" type="text/css" media="all">
<link href='//fonts.googleapis.com/css?family=Oswald:400,700,300' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="style.css" type="text/css" media="all">

<link rel="stylesheet" href="libs/highlight/styles/default.css" type="text/css" media="all">
<link rel="stylesheet" href="libs/highlight/styles/solarized_light.css" type="text/css" media="all">

<script type="text/javascript" src="libs/highlight/highlight.pack.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
</head>
<body>
<div class="container" style="width: 960px">
<div class="header">
<h1>Elevator Saga <em class="emphasis-color">Help and API documentation</em></h1>
</div>

<div class="help">
<h2>このゲームについて</h2>
<p>
これはプログラミングのゲームです!<br>
あなたは <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide">JavaScript</a>のプログラムを書いてエレベーターの動作をプログラミングします。
</p>
<p>
ゴールは効率的にユーザを各階に運ぶことです。<br>
うまく運ぶとより難しい課題にチャレンジすることができます。<br>
素晴らしいプログラムだけがすべてのレベルにチャレンジ・完了することができるのです。
</p>

<h2>プレイ方法</h2>
<p>
ゲームビュー下部にコードを書き、 <span class="emphasis-color">Apply</span> ボタンを押すとそのレベルが開始されます。<br>
ゲーム中の時間の速度は <i class="fa fa-plus emphasis-color"></i> と <i class="fa fa-minus emphasis-color"></i> のボタンによって調整することができます。.
</p>
<p>
あなたのプログラムにエラーがある場合、 ブラウザ上の開発ツールを用いることでデバッグできます。
最初からやり直したい場合は <span class="emphasis-color">Reset</span> ボタンを押します。すべてがリセットされるのでバグはなくなりますが、初期状態に戻ります。<br>
もし、 <a href="http://www.sublimetext.com/">Sublime Text</a>のようなエディタを使いたいのでしたら、コードをそのエディタで編集してコードを貼り付けてください。<br>
画面下部のプログラムは自動的にローカルストレージに保存されます。このため、誤ってブラウザを閉じても消えることはありません。
</p>
<h2>プログラムの基本</h2>
<p>
プログラムは <span class="emphasis-color">init</span> と <span class="emphasis-color">update</span>という2つの関数を含む必要があります。
</p>
<div><pre><code>{
init: function(elevators, floors) {
// elevators、floorはarray型です
},
update: function(dt, elevators, floors) {
// elevators、floorはarray型です
// dtは最後にupdate関数を呼び出してから、この関数が呼ばれるまでのゲーム内の秒数です。
}
}</code></pre></div>
<p>この2つの関数はゲーム中に自動的に呼び出されます。<br>
<span class="emphasis-color">init</span> はゲームの開始時に、<span class="emphasis-color">update</span> はゲーム中に繰り返し呼ばれる関数です。
</p>
<p>
一般的に、多くのコードは <span class="emphasis-color">init</span>にイベントリスナーとロジックが書かれます。
</p>
<h2>コード例</h2>
<h3>エレベータの制御方法</h3>
<dl>
<dt><pre><code>elevator.goToFloor(1);</code></pre></dt>
<dd>他のタスクが完了したのちにエレベーターを1階に移動させます。エレベータに対して1階に異動する指示を出している場合、何も起こりません。</dd>
<dt><pre><code>if(elevator.currentFloor() > 2) { ... }</code></pre></dt>
<dd>currentFloor()関数は現在の回数を返します。ただし、エレベータが階の間を移動している際、この関数は丸めた値を返すことに注意してください。</dd>
</dl>
<h3>イベントリスナー</h3>
<p>イベントをListenすることで、フロア到着時やボタンを押された際にプログラムを実行することができます。</p>
<dl>
<dt><pre><code>elevator.on("idle", function() { elevator.goToFloor(0); });</code></pre></dt>
<dd>idleイベント: タスクのキューが空でエレベータが動いていないときに発火します。この例ではフロア0に移動します。</dd>
<dt><pre><code>elevator.on("floor_button_pressed", function(floorNum) { ... } );</code></pre></dt>
<dd>floor_button_pressedイベント: 乗客によってボタンが押された時に発火します。floorNumには押された階が入ります。</dd>
<dt><pre><code>floor.on("up_button_pressed", function() { ... } );</code></pre></dt>
<dd>up_button_pressed"イベント: そのfloorで待っているユーザが上ボタンを押したときに発火します。上の階に行きたい乗客がいることを示します。</dd>
</dl>

<h2 id="docs">API ドキュメント</h2>
<h3>Elevator オブジェクトt</h3>
<table class="doctable">
<thead><th width="150">Property</th><th width="90">Type</th><th width="190">説明</th><th width="*">例</th></thead>
<tbody>
<tr><td>goToFloor</td><td>function</td><td><small>第一引数に指定されたフロアをキューに入れます。第二引数にtrueを設定するとキューに入ることなくその階に向かいます。そのあと、キューに入っているフロアに向かいます。</small></td><td><pre><code>elevator.goToFloor(3); // ほかのキュー動作の後に3階に向かいます
elevator.goToFloor(2, true); // キューの内容にかかわらず2階に向かいます</code></pre></td></tr>
<tr><td>stop</td><td>function</td><td><small>動作キューをクリアし、エレベータをストップします。通常、エレベータをストップすることはありません。この関数は再スケジューリングロジックの実装のために用意されています。この関数が呼ばれたときおそらくエレベータはフロアに停止していないので、乗客は降りることができません。</small></td><td><pre><code>elevator.stop();</code></pre></td></tr>
<tr><td>currentFloor</td><td>function</td><td><small>エレベータのいるフロアを返します</small></td><td><pre><code>if(elevator.currentFloor() === 0) {
// 何らかの動作
}</code></pre></td></tr>
<tr><td>goingUpIndicator</td><td>function</td><td><small>Upのインジケータをset/getします。これはフロアで停止した際の乗客の行動に影響します。</small></td><td><pre><code>if(elevator.goingUpIndicator()) {
elevator.goingDownIndicator(false);
}</code></pre></td></tr>
<tr><td>goingDownIndicator</td><td>function</td><td><small>Downのインジケータをset/getします。これはフロアで停止した際の乗客の行動に影響します。</small></td><td><pre><code>if(elevator.goingDownIndicator()) {
elevator.goingUpIndicator(false);
}</code></pre></td></tr>
<tr><td>maxPassengerCount</td><td>function</td><td><small>最大乗車人数を取得します</small></td><td><pre><code>if(elevator.maxPassengerCount() > 5) {
// なにか特別なことにこの大きなエレベータを使います
}</code></pre></td></tr>
<tr><td>loadFactor</td><td>function</td><td><small>エレベータに乗っている人々の重さを得ます。そのエレベータごとに0が空、1がFULLを示します。</small></td><td><pre><code>if(elevator.loadFactor() < 0.4) {
// Maybe use this elevator, since it's not full yet?
}</code></pre></td></tr>
<tr><td>destinationDirection</td><td>function</td><td><small>エレベータの今の状態を得ます。 "up", "down" or "stopped"のいずれかです。</small></td></tr>
<tr><td>destinationQueue</td><td>array</td><td><small>そのエレベータの今の行き先キューをgetします。これは設定することが可能です(空にすることも可能です)。変更を即座に反映したい場合、checkDestinationQueue関数を呼ぶ必要があります。</small></td><td><pre><code>elevator.destinationQueue = [];
elevator.checkDestinationQueue();</code></pre></td></tr>
<tr><td>checkDestinationQueue</td><td>function</td><td><small>この関数はdestinationDirectionを手動で編集した場合に呼ぶ必要があります。この関数はdestination queueを参照し、次の宛先を決定します。</small></td><td><pre><code>elevator.checkDestinationQueue();</code></pre></td></tr>
<tr><td>getPressedFloors</td><td>function</td><td><small>現在押されているフロアを配列で取得します。</small></td><td><pre><code>if(elevator.getPressedFloors().length > 0) {
// 最初に押されたフロアに行く?
}</code></pre></td></tr>
</tbody>
</table>
<table class="doctable">
<thead><th width="150">Event</th><th width="280">Explanation</th><th>Example</th></thead>
<tbody>
<tr><td>idle</td><td><small>このイベントはエレベータがなんのタスクも持っていないときに発火します。</small></td><td><pre><code>elevator.on("idle", function() { ... });</code></pre></td></tr>
<tr><td>floor_button_pressed</td><td><small>乗客がエレベータ内の行き先フロアボタンを押したときに発火するイベントです。</small></td><td><pre><code>elevator.on("floor_button_pressed", function(floorNum) {
// この階に行くようにエレベータに命令する?
})</code></pre></td></tr>
<tr><td>passing_floor</td><td><small>エレベータがフロアを通過する直前に発火するイベントです。そのフロアに停止すべきかを判断するのに利用できます。ただし、このイベントはdestination フロアには発火しません。尚、"Direction"は"up"か"down"です。</small></td><td><pre><code>elevator.on("passing_floor", function(floorNum, direction) { ... });</code></pre></td></tr>
<tr><td>stopped_at_floor</td><td><small>フロアに到着した時に発火するイベント。</small></td><td><pre><code>elevator.on("stopped_at_floor", function(floorNum) {
// 次にどこに行くかを決定する?
})</code></pre></td></tr>
</tbody>
</table>
<h3>Floor object</h3>
<table class="doctable">
<thead><th width="150">Property</th><th width="90">Type</th><th width="190">Explanation</th><th width="*">Example</th></thead>
<tbody>
<tr><td>floorNum</td><td>function</td><td><small>そのフロアの階数を示します。</small></td><td><pre><code>if(floor.floorNum() > 3) { ... }</code></pre></td></tr>
</tbody>
</table>
<table class="doctable">
<thead><th width="150">Event</th><th width="280">Explanation</th><th>Example</th></thead>
<tbody>
<tr><td>up_button_pressed</td><td><small>フロアで乗客が"up"ボタンを押した際に発火するイベントです。乗客がエレベータに入れなかった場合、再度ボタンは押されます。</small></td><td><pre><code>floor.on("up_button_pressed", function() {
// この階に行くようにエレベータに命令する?
})</code></pre></td></tr>
<tr><td>down_button_pressed</td><td><small>フロアで乗客が"down"ボタンを押した際に発火するイベントです。乗客がエレベータに入れなかった場合、再度ボタンは押されます。</small></td><td><pre><code>floor.on("down_button_pressed", function() {
// この階に行くようにエレベータに命令する?
})</code></pre></td></tr>

</tbody>
</table>
</div>
<div class="footer">
<h4>Made by Magnus Wolffelt and contributors</h4>
<h4><a href="https://github.com/magwo/elevatorsaga">Source code</a> on GitHub</h4>
</div>
</div>

<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');

ga('create', 'UA-56810935-1', 'auto');
ga('send', 'pageview');
</script>
</body>
</html>