Spaces:
Running
Running
| #BEGIN_PROPERTIES# | |
| { | |
| "version": "1.3", | |
| "commandsIntroduced": | |
| ["global.objective", "map.getDOM", "map.createFromDOM", | |
| "map.updateDOM", "map.overrideKey", "global.$", | |
| "jQuery.find", "jQuery.addClass", "jQuery.hasClass", | |
| "jQuery.removeClass", "jQuery.parent", "jQuery.length", | |
| "jQuery.children", "jQuery.first", "jQuery.next", | |
| "jQuery.prev"], | |
| "music": "BossLoop", | |
| "mapProperties": { | |
| "showDummyDom": true | |
| } | |
| } | |
| #END_PROPERTIES# | |
| /**************************** | |
| * documentObjectMadness.js * | |
| **************************** | |
| * | |
| * I can't believe it! I can't believe you made it onto | |
| * Department of Theoretical Computation's web server! | |
| * YOU SHOULD HAVE BEEN DELETED! This shouldn't even be | |
| * possible! What the hell were the IT folks thinking? | |
| * | |
| * No matter. I still have the Algorithm. That's the | |
| * important part. The rest is just implementation, and | |
| * how hard could that be? | |
| * | |
| * Anyway you're not going to catch me now, my good Doctor. | |
| * After all, you're a tenured professor with a well-respected | |
| * history of research - you probably don't know jQuery! | |
| */ | |
| function objective(map) { | |
| return map.getDOM().find('.adversary').hasClass('drEval'); | |
| } | |
| function startLevel(map) { | |
| #START_OF_START_LEVEL# | |
| var html = "<div class='container'>" + | |
| "<div style='width: 600px; height: 500px; background-color: white; font-size: 10px;'>" + | |
| "<center><h1>Department of Theoretical Computation</h1></center>" + | |
| "<hr />" + | |
| "<table border='0'><tr valign='top'>" + | |
| "<td><div id='face' /></td>" + | |
| "<td>" + | |
| "<h2 class=facultyName>Cornelius Eval</h2>" + | |
| "<h3>Associate Professor of Computer Science</h3>" + | |
| "<ul>" + | |
| "<li>BS, Mathematics, University of Manitoba</li>" + | |
| "<li>PhD, Theoretical Computation, <a href='http://www.mit.edu'>MIT</a></li>" + | |
| "</ul>" + | |
| "<h4>About me</h4>" + | |
| "<p>I am an associate professor of computer science, attached to the Department of " + | |
| "Theoretical Computation. My current research interests include the human-machine " + | |
| "interface, NP complete problems, and parallelized mesh mathematics.</p>" + | |
| "<p>I am also the current faculty advisor to the <a href=''>undergraduate Super Smash Bros. team</a>. " + | |
| "In my spare time I enjoy polka and dirtbiking. </p>" + | |
| "</td>" + | |
| "</tr></table>" + | |
| "<div id='class_schedule'>" + | |
| "<h4>Class Schedule</h4>" + | |
| "<table>" + | |
| "<tr>" + | |
| "<th>Monday</th><th>Tuesday</th><th>Wednesday</th><th>Thursday</th><th>Friday</th>" + | |
| "</tr>" + | |
| "<tr>" + | |
| "<td>CS145 - Semicolons</td><td>Nothing Planned</td><td>CS145 - Semicolons</td><td>CS199 - Practical Theorycrafting </td><td>CS145 - Semicolons</td>" + | |
| "</tr>" + | |
| "</table>" + | |
| "</div>" + | |
| "<div id='loremIpsum'>" + | |
| "<h4>Lorem Ipsum</h4>" + | |
| "<blockquote>" + | |
| "<code>Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci " + | |
| "velit, sed quia nonnumquam eiusmodi tempora incidunt ut labore et dolore magnam aliquam quaerat " + | |
| "voluptatem.</code>" + | |
| "<footer>— " + | |
| "<cite>Cicero, De Finibus Bonorum et Malorum</cite>" + | |
| "</footer>" + | |
| "</blockquote>" + | |
| "</div>" + | |
| "</div></div>"; | |
| var $dom = $(html); | |
| $dom.find('.facultyName').addClass('drEval'); | |
| $dom.find('cite').addClass('adversary'); | |
| function moveToParent(className) { | |
| var currentPosition = $dom.find('.' + className); | |
| if (currentPosition.parent().length > 0) { | |
| if (currentPosition.parent().hasClass('container')) { | |
| if (className === 'drEval') { | |
| map.getPlayer().killedBy('moving off the edge of the DOM'); | |
| } else { | |
| return false; | |
| } | |
| } else { | |
| currentPosition.parent().addClass(className); | |
| currentPosition.removeClass(className); | |
| map.updateDOM($dom); | |
| } | |
| } | |
| } | |
| function moveToFirstChild(className) { | |
| var currentPosition = $dom.find('.' + className); | |
| if (currentPosition.children().length > 0) { | |
| currentPosition.children().first().addClass(className); | |
| currentPosition.removeClass(className); | |
| map.updateDOM($dom); | |
| } | |
| } | |
| function moveToPreviousSibling(className) { | |
| var currentPosition = $dom.find('.' + className); | |
| if (currentPosition.prev().length > 0) { | |
| currentPosition.prev().addClass(className); | |
| currentPosition.removeClass(className); | |
| map.updateDOM($dom); | |
| } | |
| } | |
| function moveToNextSibling(className) { | |
| var currentPosition = $dom.find('.' + className); | |
| if (currentPosition.next().length > 0) { | |
| currentPosition.next().addClass(className); | |
| currentPosition.removeClass(className); | |
| map.updateDOM($dom); | |
| } | |
| } | |
| map.overrideKey('up', function () { moveToParent('drEval'); }); | |
| map.overrideKey('down', function () { moveToFirstChild('drEval'); }); | |
| map.overrideKey('left', function () { moveToPreviousSibling('drEval'); }); | |
| map.overrideKey('right', function () { moveToNextSibling('drEval'); }); | |
| map.defineObject('adversary', { | |
| 'type': 'dynamic', | |
| 'symbol': '@', | |
| 'color': 'red', | |
| 'behavior': function (me) { | |
| var move = Math.floor(Math.random() * 4) + 1; // 1, 2, 3, or 4 | |
| if (move == 1) { | |
| moveToParent('adversary'); | |
| } else if (move == 2) { | |
| moveToFirstChild('adversary'); | |
| } else if (move == 3) { | |
| moveToPreviousSibling('adversary'); | |
| } else if (move == 4) { | |
| moveToNextSibling('adversary'); | |
| } | |
| } | |
| }); | |
| map.placePlayer(1, 1); | |
| map.placeObject(map.getWidth() - 2, map.getHeight() - 2, 'adversary'); | |
| map.createFromDOM($dom); | |
| #END_OF_START_LEVEL# | |
| } | |