75
a game of letters :: kitt hodsden : @kitt :: open web camp 20 shkrubbel Or, how to make a mobile app using web technologies

Shkrubbel for Open Web Camp 3

  • Upload
    kitthod

  • View
    1.458

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

shkrubbel

Or, how to make a mobile app using web technologies

Page 2: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

Hi.

Page 3: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

Why?

Page 4: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

@snookca

Page 5: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

Why not?

Page 6: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

Page 7: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

div.tile { float: left; }

div.tile { display: grid }

table td

Page 8: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

.tile { float: left; width: 3em; height: 3em;}

<div class=“board”> <div class=“tilerow”> <div class=“tile”></div> <div class=“tile”></div> … <div class=“tile last”></div> …</div>

Page 9: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

display: grid;

http://caniuse.com/css-gridhttp://dev.w3.org/csswg/css3-grid-align/

Page 10: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

Really now, tables for layout?

Page 11: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

styling the board

Page 12: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

one giant background image

Page 13: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

http://wordswithfriends.com/

Page 14: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

single tile images

Page 15: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

http://www.flickr.com/photos/lwr/3034478627/ by Leo Reynolds

Page 16: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

all CSS, all the time

Page 17: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

-webkit-border-radius: 4px;-moz-border-radius: 4px;border-radius: 4px;

Page 18: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

http://tileabl.es/

Page 19: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

$(’.tile').noisy({ 'intensity' : 1, 'size' : 200, 'opacity' : 0.08, 'fallback' : '', 'monochrome' : false}).css('background-color', '#EDEBDE');

https://github.com/DanielRapp/Noisy

Page 20: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

(You may hate me now.)

Page 21: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

http://www.fontyukle.net/en/DownLoad-News+Gothic+Std+Medium.ttf

Page 22: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

http://www.fontsquirrel.com/fontface/generator

Page 23: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

Page 24: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

<div class="tile"> <span class="letter">O</span> <span class="val">1</span></div>

Page 25: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

<!DOCTYPE html><html><head><script src="js/jquery-1.6.2.js"></script><script src=”js/jquery-ui-1.8.14.js"></script><style>…

Page 26: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

$(document).ready(function() { $(".tile").draggable();});

Page 27: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

Page 28: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

.tile { opacity: .9; background-color: AntiqueWhite; }

Page 29: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

$(".tile").draggable( { snap: "#board td" });

Page 30: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

.dropped { border: 1px solid red; }

$("#board td").droppable({ drop: function(event, ui) { $(this).addClass("dropped"); ... } }

Page 31: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

Keep track of the played tile locations

Page 32: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

SHK.board = new Array(15);

for (var i = 0; i < 15; i++) { SHK.board[i] = new Array(15); for (var j = 0; j < 15; j++) { SHK.board[i][j] = ''; }}

Page 33: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

<div class="tilenum">14</div>

.tilenum { display: none;}

Page 34: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

data-* to save the day!

Page 35: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

<td id="l1"> <div id="t1" class="tile" data-tilenum="1"> <span class="letter">U</span> <span class="val">2</span> </div> </td>

Page 36: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

// if previously placed on a board tile, clear the last positionvar p = ui.helper.data('prevloc');if (ui.helper.data('prevloc')) { var p = ui.helper.data('prevloc'); SHK.board[p[0]][p[1]] = '’;}

// set the new positionui.helper.data('prevloc', [row, col]);

Page 37: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

<td id=”r9b"><div class="it"></div></td>

var row = id.substring(1, 2); // 9var col = id.substring(2, 3); // b b = 11, so need to convert from hex to decimal

convert to decimal this way:

parseInt(row, 16);

Page 38: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

Submit the word!

Page 39: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

Page 40: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

rc = 0 or rc = 1, depending on checking for row or column

var t = false;

for (var i in SHK.inplay) { if (i && SHK.inplay[i]) { if (t) { if (t != SHK.inplay[i][rc]) { return false; } } else { t = SHK.inplay[i][rc]; } } }

Page 41: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

But is it a word?

Page 42: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

localStorage FTW!

Page 43: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

// See if the property we want is pre-cached in localStorage if ( window.localStorage !== null && window.localStorage.shkrubbeldict ) { var words = window.localStorage.shkrubbeldict.split("\n"); for ( var i = 0; i < words.length; i++ ) { SHK.dict[words[i]] = true; }…

http://diveintohtml5.org/storage.html

Page 44: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

// easy check now… if (SHK.dict[word.toLowerCase()]) { // we have a word!}

Page 45: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

did I mention, don’t do this?

read these instead:

http://ejohn.org/blog/dictionary-lookups-in-javascript/http://ejohn.org/blog/javascript-trie-performance-analysis/http://ejohn.org/blog/revised-javascript-dictionary-search/

Page 46: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

While we’re here…

Page 47: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

for (var i = 0; i < 7; i++) {

// we're using this in several places, so store in var var t = $('#t' + i);

// move the tile back to its starting spot t.animate({'top': '0px', 'left' : '0px'});

// clear the inplay tiles from the board SHK.inplay[i] = false;

// clear the tile from the board var p = t.data('prevloc'); if (p) { SHK.board[p[0]][p[1]] = '';

t.data(‘prevloc’) = ‘’; } }

Page 48: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

Wait a second…

Page 49: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

http://www.techradar.com/reviews/pc-mac/tablets/apple-ipad-681021/review

Page 50: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

O_O

Page 51: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

http://phonegap.github.com/weinre

Page 52: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

Performance

Page 53: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

Send only what you need

Page 54: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

And I determine that how?

Page 55: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

Server side browser detection?

(Have you seen a recent User-Agent list?)

Page 56: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

http://www.user-agents.org/

Page 57: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

Feature detection

Page 58: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

http://www.modernizr.com/

Page 59: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

Media Queries

Page 60: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

<link rel="stylesheet" href="theme.css" /><link rel="stylesheet” href="print.css" media="print” />

Page 61: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

/* iPhone Portrait */@media screen and (max-width: 320px) { …}

/* iPhone Landscape */@media screen and (min-width: 321px) and (max-width: 480px) { …}

/* iPad */@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) { …}

Page 62: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

Adapt.jshttp://adapt.960.gs/

Page 63: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

Compress files

http://developer.yahoo.com/yui/compressor/http://www.phpied.com/cssmin-js/

Page 64: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

Reduce image sizes

http://developer.yahoo.com/yslow/smushit/http://www.imageoptimizer.net/Pages/Home.aspx

Page 65: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

Use data URIs if you can

Page 66: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

background: url(data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSAAA…) no-repeat left center; padding: 5px 0 5px 25px;

data:[<mime type>][;charset=<charset>][;base64],<encoded data>

Page 67: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

Taking it all offline

Page 68: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

Generate a MANIFEST

why:http://diveintohtml5.org/offline.html

http://bit.ly/g01Her (apple.com)

how:https://github.com/jamesgpearce/confess

Page 69: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

Tell the mobile browser about it.

Page 70: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

<meta name="apple-mobile-web-app-capable" content="yes" /><link rel="apple-touch-startup-image" href="home.png" /><link rel="apple-touch-icon" href="icon.png" />

Page 71: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

Page 72: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

Page 73: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

Push it

Page 74: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

http://shkrubbel.com/https://github.com/kitt/shkrubbel

@shkrubbel

Page 75: Shkrubbel for Open Web Camp 3

shkrubbel: a game of letters :: kitt hodsden : @kitt :: open web camp 2011

phew!

http://ki.tt/owc3