Author: hhubner
Date: Tue Jan 29 07:08:08 2008
New Revision: 2416
Added:
branches/trunk-reorg/projects/scrabble/website/scrabble-yui-pos.js
Log:
save this file just in case
Added: branches/trunk-reorg/projects/scrabble/website/scrabble-yui-pos.js
==============================================================================
--- (empty file)
+++ branches/trunk-reorg/projects/scrabble/website/scrabble-yui-pos.js Tue Jan 29 07:08:08 2008
@@ -0,0 +1,168 @@
+// -*- Java -*- (really Javascript)
+
+var boardScoring = [["triple-word",null,null,"double-letter",null,null,null,"triple-word",
+ null,null,null,"double-letter",null,null,"triple-word"],
+ [null,"double-word",null,null,null,"triple-letter",null,null,null,"triple-letter",
+ null,null,null,"double-word",null],
+ [null,null,"double-word",null,null,null,"double-letter",null,"double-letter",
+ null,null,null,"double-word",null,null],
+ ["double-letter",null,null,"double-word",null,null,null,"double-letter",
+ null,null,null,"double-word",null,null,"double-letter"],
+ [null,null,null,null,"double-word",null,null,null,null,null,"double-word",
+ null,null,null,null],
+ [null,"triple-letter",null,null,null,"triple-letter",null,null,null,"triple-letter",
+ null,null,null,"triple-letter",null],
+ [null,null,"double-letter",null,null,null,"double-letter",null,"double-letter",
+ null,null,null,"double-letter",null,null],
+ ["triple-word",null,null,"double-letter",null,null,null,"double-word",
+ null,null,null,"double-letter",null,null,"triple-word"],
+ [null,null,"double-letter",null,null,null,"double-letter",null,"double-letter",
+ null,null,null,"double-letter",null,null],
+ [null,"triple-letter",null,null,null,"triple-letter",null,null,null,"triple-letter",
+ null,null,null,"triple-letter",null],
+ [null,null,null,null,"double-word",null,null,null,null,null,"double-word",
+ null,null,null,null],
+ ["double-letter",null,null,"double-word",null,null,null,"double-letter",
+ null,null,null,"double-word",null,null,"double-letter"],
+ [null,null,"double-word",null,null,null,"double-letter",null,"double-letter",
+ null,null,null,"double-word",null,null],
+ [null,"double-word",null,null,null,"triple-letter",null,null,null,"triple-letter",
+ null,null,null,"double-word",null],
+ ["triple-word",null,null,"double-letter",null,null,null,"triple-word",
+ null,null,null,"double-letter",null,null,"triple-word"]];
+
+function getFieldScore(x, y) {
+ return boardScoring[x][y] || 'standard';
+}
+
+var board;
+
+function makeBoard() {
+ var container = $('playfield');
+ board = [];
+ for (x = 0; x < 15; x++) {
+ board[x] = [];
+ for (y = 0; y < 15; y++) {
+ var element = DIV();
+ element.style.position = 'absolute';
+ element.style.width = '40px';
+ element.style.height = '40px';
+ element.style.backgroundImage = 'url(images/' + getFieldScore(x, y) + '.png)';
+ board[x][y] = element;
+ appendChildNodes(container, element);
+ YAHOO.util.Dom.setXY(element, [ x * 44, y * 44 ]);
+ }
+ }
+
+ myTrayContainer = DIV();
+ myTrayContainer.style.position = 'absolute';
+ myTrayContainer.style.width = 7 * 44 + 'px';
+ myTrayContainer.style.height = '44px';
+ appendChildNodes(container, myTrayContainer);
+ YAHOO.util.Dom.setXY(myTrayContainer, [ 194, 665 ]);
+
+ var shuffleButton = DIV(null, "shuffle");
+ shuffleButton.style.color = 'white';
+ shuffleButton.style.position = 'absolute';
+ shuffleButton.onclick = shuffleMyTray;
+ appendChildNodes(container, shuffleButton);
+ YAHOO.util.Dom.setXY(shuffleButton, [ 480, 665 ]);
+
+ var clearButton = DIV({ id: 'clear' }, "clear");
+ clearButton.style.color = 'white';
+ clearButton.style.position = 'absolute';
+ clearButton.onclick = clearBoard;
+ appendChildNodes(container, clearButton);
+ YAHOO.util.Dom.setXY(clearButton, [ 480, 680 ]);
+
+}
+
+function setLetter(x, y, letter) {
+ var image = IMG({ src: 'images/' + letter + '.png'});
+ image.style.position = 'absolute';
+ image.style.top = '3px';
+ image.style.left = '3px';
+ replaceChildNodes(board[x][y], image);
+ board[x][y].letterNode = image;
+}
+
+function clearBoard() {
+ for (x = 0; x < 15; x++) {
+ for (y = 0; y < 15; y++) {
+ var letterNode = board[x][y].letterNode;
+ if (letterNode) {
+ board[x][y].letterNode = null;
+ letterNode.anim = new YAHOO.util.Motion(letterNode, { points: { to: [ 7 * 44 + 3, 7 * 44 + 3 ]}});
+ letterNode.anim.duration = 0.15;
+ letterNode.anim.onComplete.subscribe(function () { removeElement(this); });
+ letterNode.anim.animate();
+ }
+ }
+ }
+}
+
+var tray;
+
+function trayClick(letter) {
+ this.clicked = !this.clicked;
+ this.anim = new YAHOO.util.Motion(this, { points: { by: [ 0, (this.clicked ? 15 : -15 ) ]}});
+ this.anim.duration = 0.15;
+ this.anim.animate();
+}
+
+function makeMyTray(letters) {
+ tray = [];
+ for (var i = 0; i < letters.length; i++) {
+ var element = IMG({src: 'images/' + letters[i] + '.png'});
+ element.letter = letters[i];
+ element.style.position = 'absolute';
+ element.style.width = '34px';
+ element.style.height = '34px';
+ element.
+ onclick = trayClick;
+ setElementPosition(element, { x: i * 40 });
+ tray[i] = element;
+ }
+ replaceChildNodes(myTrayContainer, tray);
+}
+
+function shuffleMyTray() {
+ var count = tray.length;
+ var newTray = [];
+ for (var i = 0; i < count; i++) {
+ do {
+ index = Math.floor(Math.random() * count);
+ } while (newTray[index]);
+ newTray[index] = tray[i];
+ newTray[index].anim = new YAHOO.util.Motion(tray[i], { points: { to: [ 194 + i * 40, 680 ] }});
+ newTray[index].anim.duration = 0.5;
+ newTray[index].anim.animate();
+ newTray[index].clicked = false;
+ }
+ tray = newTray;
+}
+
+function drawGameState (gameState) {
+ for (var i = 0; i < gameState.board.length; i++) {
+ var x = gameState.board[i][0];
+ var y = gameState.board[i][1];
+ var char = gameState.board[i][2];
+ setLetter(x, y, char);
+ }
+}
+
+function init() {
+ makeBoard();
+ makeMyTray(['S', 'A', 'C', 'H', 'D', 'E', 'N']);
+ setLetter(7, 7, 'H');
+ setLetter(7, 8, 'A');
+ setLetter(7, 9, 'L');
+ setLetter(7, 10, 'L');
+ setLetter(7, 11, 'O');
+ setLetter(8, 7, 'O');
+ setLetter(9, 7, 'R');
+ setLetter(10, 7, 'S');
+ setLetter(11, 7, 'T');
+ var d = loadJSONDoc("/game/108");
+ d.addCallbacks(drawGameState, alert);
+}