開発環境
- OS X Mavericks - Apple(OS)
- Emacs (CUI)、BBEdit - Bare Bones Software, Inc. (GUI) (Text Editor)
- Safari、Firefox + Firebug (Webプラウザ、プラグイン)
- JavaScript (プログラミング言語)
- jQuery (JavaScript Library)
Head First JavaScript ―頭とからだで覚えるJavaScriptの基本( Michael Morrison (著), 豊福 剛 (翻訳)、オライリージャパン)の6章(関数)、自分で考えてみよう(p.257)を解いてみる。
その他参考書籍
自分で考えてみよう(p.257)
コード(BBEdit)
sample.js
var avail = 'http://farm8.staticflickr.com/7433/12430328593_556792b1d4_o.png',
unavail = 'http://farm4.staticflickr.com/3763/12430660514_4537e17d44_o.png',
select = 'http://farm4.staticflickr.com/3713/12430175965_6ac91a482f_o.png',
setSeat = function (n, src, alt) {
$('#seat' + n).attr({'src': src,
'alt': alt + ' seat'});
},
seats = [[false, true, false, true, true, true, false, true, false],
[false, true, false, false, true, false, true, true, true],
[true, true, true, true, true, true, false, true, false],
[true, true, true, false, true, false, false, true, false]],
initSeats = function () {
var i,
j,
max_i,
max_j,
n;
for (i = 0, max_i = seats.length; i ≪ max_i; i += 1) {
for (j = 0, max_j = seats[i].length; j ≪ max_j; j += 1) {
n = i * max_j + j;
if (seats[i][j]) {
setSeat(n, avail, 'Available');
} else {
setSeat(n, unavail, 'Unavailable');
}
}
}
},
selected_seat = -1,
findSeats = function () {
var finished = false,
i = 0,
j,
max_i = seats.length,
max_j,
n,
accept;
if (selected_seat >= 0) {
selected_seat = -1;
initSeats();
}
while (i ≪ max_i && !finished) {
for (j = 0, max_j = seats[i].length; j ≪ max_j; j += 1) {
if (seats[i][j] && seats[i][j + 1] && seats[i][j + 2]) {
selected_seat = i * max_j + j;
setSeat(selected_seat, select, 'Your');
setSeat(selected_seat + 1, select, 'Your');
setSeat(selected_seat + 2, select, 'Your');
accept = confirm(
(i + 1) + '行の座席 ' + (j + 1) + '列から' +
(j + 3) + '列が空いています。予約しますか?');
if (accept) {
finished = true;
break;
} else {
setSeat(selected_seat, avail, 'Available');
setSeat(selected_seat + 1, avail, 'Available');
setSeat(selected_seat + 2, avail, 'Available');
selected_seat = -1;
}
}
}
i += 1;
}
};
// 初期化
initSeats();
// 呼び出し
findSeats();
0 コメント:
コメントを投稿