HTML5写了个贪吃蛇,1.0版。主要玩玩canvas画画和初体验Web存储-localStorage
2013-05-22 14:56
489 查看
闲着没事写了个贪吃蛇,前面吃蛇花了个把小时吧,但没什么意思,也不知道加什么。就加了个穿墙的功能和积分的功能,积分用的是htm5新加的window属性localStorage
关于HTML5的web存储,w3c是这么说的:
HTML5 提供了两种在客户端存储数据的新方法:
localStorage - 没有时间限制的数据存储
sessionStorage - 针对一个 session 的数据存储
之前,这些都是由 cookie 完成的。但是 cookie 不适合大量数据的存储,因为它们由每个对服务器的请求来传递,这使得 cookie 速度很慢而且效率也不高。
在 HTML5 中,数据不是由每个服务器请求传递的,而是只有在请求时使用数据。它使在不影响网站性能的情况下存储大量数据成为可能。
对于不同的网站,数据存储于不同的区域,并且一个网站只能访问其自身的数据。
HTML5 使用 JavaScript 来存储和访问数据。
源代码:
关于HTML5的web存储,w3c是这么说的:
HTML5 提供了两种在客户端存储数据的新方法:
localStorage - 没有时间限制的数据存储
sessionStorage - 针对一个 session 的数据存储
之前,这些都是由 cookie 完成的。但是 cookie 不适合大量数据的存储,因为它们由每个对服务器的请求来传递,这使得 cookie 速度很慢而且效率也不高。
在 HTML5 中,数据不是由每个服务器请求传递的,而是只有在请求时使用数据。它使在不影响网站性能的情况下存储大量数据成为可能。
对于不同的网站,数据存储于不同的区域,并且一个网站只能访问其自身的数据。
HTML5 使用 JavaScript 来存储和访问数据。
源代码:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body onkeydown="getComand()"> <canvas id="snakeMap" width="400px" height="400px" style="background-color: #00ff00;"> </canvas> <span id="totalscore"></span> <span id="highestscore"></span> <span id="score"></span> <script type="text/javascript"> var canvas1 = document.getElementById("snakeMap"); var cxt = canvas1.getContext("2d"); var snake = new Array(); var myfood; var totalScore = (typeof(localStorage.totalscore)=="undefined")?0:parseInt(localStorage.totalscore); console.log(typeof(totalScore)); console.log(totalScore); var highestScore = (typeof(localStorage.highestscore)=="undefined")?0:parseInt(localStorage.highestscore); console.log(highestscore); var score = 0; $("totalscore").innerText="总分数:"+totalScore; $("highestscore").innerText="最高分:"+highestScore; $("score").innerText="本局分数:0"; window.addEventListener('load', function() { for ( var i = 0; i < 5; i++) { var head = new food(canvas1.width / 2, canvas1.height / 2 + 10 * i, 0); snake.push(head); } feed(); }); window.onbeforeunload = onbeforeunload_handler; function onbeforeunload_handler() { //totalScore += score; if (score > highestScore) highestScore = score; console.log(highestScore); //var info="总分"+totalScore+"最高分:"+highestScore; //return info; window.localStorage.highestscore = highestScore; console.log(localStorage.higtestscore); window.localStorage.totalscore = totalScore; console.log(localStorage.totalscore); } function drawsnake() { cxt.clearRect(0, 0, 600, 400); cxt.fillStyle = "red"; for ( var i = 0; i < snake.length; i++) { cxt.fillRect(snake[i].x, snake[i].y, 9, 9); } cxt.fillRect(myfood.x, myfood.y, 9, 9); }; var scoreInner = document.getElementById("score"); function run() { if (snake[0].x == myfood.x && snake[0].y == myfood.y) { snake.push(myfood); scoreInner.innerHTML = "分数:" + (++score); $("totalscore").innerText="总分数:"+(++totalScore); feed(); } if (snake[0].x == 0) snake[0].x = canvas1.width - 10; if (snake[0].x == (canvas1.width)) snake[0].x = 0; if (snake[0].y == 0) snake[0].y = canvas1.height - 10; if (snake[0].y == (canvas1.height)) snake[0].y = 0; var beforex; var beforey; for ( var i = 0; i < snake.length; i++) { /* var before; (i==0)?before=0:before=i-1; */ var statex = snake[i].x; var statey = snake[i].y; if (i == 0) { switch (snake[0].direct) { case 0: //上 snake[0].y -= 10; break; case 1: //右 snake[0].x += 10; break; case 2: //下 snake[0].y += 10; break; case 3: //左 snake[0].x -= 10; break; } } else { snake[i].x = beforex; snake[i].y = beforey; } beforex = statex; beforey = statey; } } function feed() { var x = (Math.floor(Math.random() * 40)) * 10; var y = (Math.floor(Math.random() * 40)) * 10; //alert(x+"aaa"+y); myfood = new food(x, y, 0); } var timerPaint = window.setInterval("drawsnake()", 100); var timerRun = window.setInterval("run()", 100); function getComand() { var code = event.keyCode; switch (code) { case 87: //w snake[0].direct = 0; break; case 68: //d snake[0].direct = 1; break; case 83: //s snake[0].direct = 2; break; case 65: //a snake[0].direct = 3; break; } }; function food(x, y, direct) { this.x = x; this.y = y; this.direct = direct; } function $(id) { return document.getElementById(id); } </script> </body> </html>
相关文章推荐
- 使用HTML5 Web存储的localStorage方式进行编写一个Web页面。
- HTML5客户端(Web)数据存储,localStorage与sessionStorage
- html5 Web存储的localStorage和sessionStorage的使用方法【图文说明】
- Html5 Web的5中离线存储方式之localStorage
- html5的本地存储localstorage和web databases
- HTML5 Web存储方式的localStorage和sessionStorage进行数据本地存储案例应用
- HTML5 Web存储的localStorage和sessionStorage的使用方法
- Html5之高级-13 Web存储API (两个存储系统、sessionStorage、localStorage)
- HTML5中的本地存储sessionStorage、localStorage、Web SQL Database
- 使用HTML5 Web存储的localStorage和sessionStorage方式
- html5的web存储localStorage
- HTML5 Web存储之localStorage
- html5学习canvas基本使用:div在js前面;localStorage存储根据浏览器在不同的位置;应用程序缓存;placeholder 属性提供一种提示(hint),描述输入域所期待的值。
- html5中web存储(localStorage、sessionStorage)与cookie的区别?????
- Storage---Html5 Web的5中离线存储方式之localStorage
- HTML5——Web存储API,sessionStorage和localStorage
- JavaScript 实践HTML5 localStorage 本地存储Json等数据 助于移动设备和web前端开发
- HTML5 Web存储的localStorage和sessionStorage的使用方法【图文说明】
- Web前端开发,利用HTML5 Canvas实现监控系统页面展示
- HTML5 LocalStorage 本地存储