jjinux/tetris-in-dart
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
tetris-in-dart ============== This is Tetris written in Dart. To play it, open src/index.html in a modern web browser. There's also a JavaScript version in tetris-in-javascript. Updating -------- Make sure you get the latest, untested version of Dart Editor and use Tools >> Generate JavaScript when committing a new version of Game.dart.js. Credits ------- This code was inspired by Alexei Kourbatov (http://www.javascripter.net). Lessons Learned --------------- * Don't try to play with DOM elements before the DOM is loaded. The easiest way to achieve this is to import your Dart-compiled JavaScript at the bottom of the page. * Dart has generics. This is a little unfamiliar for a scripting guy like me. * I had a hard time finding methods like JavaScript's Math.abs and Math.floor. They're now members of num. * This is how you add to the DOM: HTMLDocument doc = window.document; HTMLParagraphElement p = doc.createElement('p'); p.textContent = message; doc.body.appendChild(p); * Using innerHTML works too, but I suspect it's frowned upon. * DOM manipulation isn't as easy as using innerHTML. It's not quite as horrible as I feared, but it's still a pain in the butt. * Sometimes you need to use a temporary variable to help out the type system. If you write: doc.getElementById("s-" + i + "-" + j).src = 'images/s0.png'; it'll say "'src' is not a member of Element." However, you can easily fix this by writing: HTMLImageElement img = doc.getElementById("s-" + i + "-" + j); img.src = 'images/s0.png'; * Translating from JavaScript to well-typed Dart is a linearly time-consuming, but relatively straightforward progress. * Intelligent code complete is really helpful when you don't know a language or its APIs. I'm definitely slowed down by not being able to use an editor whose keybindings I know (like Vim, etc.), but it's still faster than looking up APIs by hand all the time. * Trying to figure out the proper way to handle keyboard events in Dart is hard because of the DOM. I'm looking at (https://developer.mozilla.org/en/DOM/KeyboardEvent), and it looks like there are two ways to do things, the deprecated way, and the way that isn't implemented yet. * Command-g is the usual Apple key to find the next occurrence of something, but it doesn't work in Dart Editor. * They're working on a new DOM API (http://www.dartlang.org/articles/improving-the-dom/). I've decided not to use it until they say it's stable. * The way main() works in the Sunflower Example doesn't match the way main() works in sample applications generated by Dart Editor. I'm not sure why. * The latest, untested version of Dart Editor has a feature in the Tools menu called "Generate Optimized JavaScript". This reduced the generated JavaScript file from 8.9mb to 186k!
About
This is Tetris written in Dart.
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published