ラトリー私は学校プロジェクトに取り掛かっています。私の場合、パズルタワーズオブハノイの解法アルゴリズムを提示する必要があります。 HTML/CSSでの私の知識のために、私はそれらの+ Javascriptを使用してウェブページ上のステップを視覚化することは非常にうまくいくと考えました。Javascriptでハノイアルゴリズムのタワーを視覚化する
私は、基本的な再帰アルゴリズムと同様にサイトをセットアップしました。
function move(n, beg, aux, end) {
if (n == 1) {
console.log(beg + '-->' + end + '\n');
setTowers(beg, end);
} else {
move(n - 1, beg, end, aux);
move(1, beg, aux, end);
move(n - 1, aux, beg, end);
}
}
ページのレイアウト(CSSコード文句を言わない、ここで役立つ):
section#main-app
.app-wrapper
.tower-wrapper
.tower#twr--a
.block.blck--top
.block.blck--middle
.block.blck--bottom
.tower#twr--b
.block.blck--top
.block.blck--middle
.block.blck--bottom
.tower#twr--c
.block.blck--top
.block.blck--middle
.block.blck--bottom
は、それから私は、私は何とかそれを視覚化しなければならなかったとして苦労し始めました。私は各タワーを配列に入れることを考えました:
var twrElemsA = document.getElementById('twr--a').getElementsByClassName('block');
towerA = jQuery.makeArray(twrElemsA);
実際に色を設定する機能。現時点では2つの事柄があります:必要ならば色を消さず、色を設定しません。なぜなら、私はswitch文を使いこなしてしまったからです。今
function setColors(target) {
target.forEach(function (element) {
switch (element) {
case '<div class="block blck--top">':
$(element).css({
'background-color': 'red'
});
break;
case '<div class="block blck--middle">':
$(element).css({
'background-color': '#51616F'
});
break;
case '<div class="block blck--bottom">':
$(element).css({
'background-color': '#394B5A'
});
break;
}
});
}
移動機能は、例えば、Aのために返された場合、 - > B、setColorsは次にTowerBを反復し、特定の色にすべての3つのブロックの背景色を設定すべきです。しかし、スイッチのステートメントは動作しませんと私は壊滅的なコンボですアイデアと時間が不足しています。
誰かが何を助けてくれるのか分かっているかもしれません。私は助けていただきありがとうございます!
よろしく..
要素を文字列と比較しているため、スイッチが機能しません。代わりに 'if-else'を使ってクラスが存在するかどうかを調べることができます:' $(element).hasClass( 'blck - top') '。 –