虽然写的不是很好,但 解释权以及版权仍然归13东倍所有!
 <!DOCTYPE HTML>

<html>
<head>
<title>canvas-00</title>
<script>
window.onload=function(){
//alert("coming onload");
alert("游戏说明:在键盘上输入的字符与游戏下落的字符相同时,积分板加分,积分达到一定时,提示进入下一关,若字符落到底部,即游戏结束。点击按钮开始游戏吧!");
var game=new Game();
game.start();
}
function Game(){
//alert("coming Game()");
var
createChar=new Array();
//var scoreBoard=new Array();
var scoreBoard=new CreateScoreBoard();
for(var i=0;i<10;i++){
createChar[i]=new CreateChar();
//scoreBoard[i]=new CreateScoreBoard();
}
 
this.start=function(){
var time=setInterval(function(){
for(var i=0;i<10;i++){
createChar[i].clearContext();
//scoreBoard[i].clearScore();
}

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

createChar[i].move();
createChar[i].show();
//scoreBoard[i].show();

if(createChar[i].return_y()>490){
clearInterval(time);
for(var i=0;i<10;i++){
createChar[i].clearContext();
}
alert("game over");
break;
}
}

scoreBoard.showScore();
},50);
 
document.onkeydown=keydown;
var jifen=200;
var pass=2;
function keydown(e){
var real=String.fromCharCode(e.which);
//alert(real);
for(var i=0;i<10;i++){
if(real==createChar[i].returnWords()){
//alert("zhong");
//scoreBoard[i].addScores();

scoreBoard.addScores();

//alert("00");
createChar[i].returnTOP();
if(scoreBoard.returnScore()==jifen){
jifen+=200;
alert("恭喜你,点击确定进入第"+(pass++)+"关!");
for(var i=0;i<10;i++){
createChar[i].returnTOP();
createChar[i].speed();
}
}
}
}

}
}
 
}
function CreateChar(){
//alert("coming CreateChar()");
var canvas;
var context;
var char_y=50;
//规定范围内取随机数   *(上限-下限+1)+下限
var char_x;
var words=new Array("A","B","C","D","E","F","G","H","I","J","K","L","N","M","O","P","Q","R","S","T","U","V","W","Z","X","Y");
var num;
var down=1;
function initChar(){
canvas=document.getElementById("myCanvas");
//alert("canvas--"+canvas);
context=canvas.getContext("2d");
//alert("context--"+context);
context.font="20pt 黑体";
num=parseInt(Math.random()*words.length);
char_x=parseInt(Math.random()*(680-20-1)+20);
context.fillText(words[num],char_x,char_y);
}
initChar();
this.move=function(){
char_y+=down;
}
this.show=function(){
context.font="20pt 黑体";
context.fillText(words[num],char_x,char_y);
}
this.clearContext=function(){
//alert("coming clearContext()");
return context.clearRect(0,0,700,500);
}
this.returnWords=function(){
return words[num];
}
this.return_y=function(){
return char_y;
}
this.returnTOP=function(){
char_y=50;
//newChar.style.display="none";
initChar();
}
this.speed=function(){
down++;
}
}
function CreateScoreBoard(){
var canvas;
var context;
var scores=0;
function initScoreBoard(){
//alert("coming initScoreBoard()");
canvas=document.getElementById("myCanvas");
//alert("canvas--"+canvas);
context=canvas.getContext("2d");
//alert("context--"+context);
context.font="20pt 黑体";
//context.fillText("得分:0",400,100);
}
initScoreBoard();

this.showScore=function(){
//context.clearRect(0,0,700,500);
context.font="25pt 黑体";
//context.fillText("",500,30);
context.fillText("得分:"+scores,500,30);
}
this.addScores=function(){
scores+=10;
}
this.clearScore=function(){
//alert("coming clearContext()");
return context.clearRect(0,0,700,500);
}
this.returnScore=function(){
return scores;
}
}
</script>
</head>
<body>
<canvas id="myCanvas" width="700" height="500" style="border:1px solid black"></canvas>
</body>
</html>

键盘游戏之canvas--用OO方式写的更多相关文章

  1. 用OO方式写键盘字母小游戏

    <html>  <head>   <title>0.0</title>   <script>    window.onload=functi ...

  2. HttpWeb服务器之--用OO方式写

    虽然写的不是很好,但 最终解释权以及版权归13东倍所有! package com.web; import java.io.IOException; public class Test { public ...

  3. OO方式下,ALV TREE和ALV GRID的不同之处

    作为大部分报表程序的基础,ALV GRID差不多是每个ABAP开发者必须了解和掌握的内容,因此网上也不乏相关资料,而ALV TREE的应用相对较少,中文资料也就比较少见了.实际上,ALV TREE和A ...

  4. jQuery中.bind() .live() .delegate() .on()的区别 和 三种方式写光棒事件 动画

    地狱的镰刀 bind(type,[data],fn) 为每个匹配元素的特定事件绑定事件处理函数. $("a").bind("click",function(){ ...

  5. JavaScript--------------------jQuery中.bind() .live() .delegate() .on()的区别 和 三种方式写光棒事件 动画

    bind(type,[data],fn) 为每个匹配元素的特定事件绑定事件处理函数. $("a").bind("click",function(){alert( ...

  6. Django类方式写view

    问题: Django官方教程中都是通过def函数方式来写view,如何通过类方式写view以及为何要通过类方式写view? 那,如何解决这个问题? 用户访问浏览器,一般两种方式,get获取网页和pos ...

  7. 使用promise方式写settimeout

    //使用promise方式写settimeout, //好处就是用于写动画的时候只需知道后一个的动画在前一个动画结束后多久执行 console.time('settimeout:');//开始计算这段 ...

  8. 代码规范(RL-TOC)用更合理的方式写 JavaScript

    代码可以改变世界 不规范代码可以毁掉世界 只有先学会写规范的代码,才可以走的更远 编程语言之间有很多编程规范都是通用: 命名 不要用语言不明的缩写,不用担心名字过长,名字一定要让别人知道确切的意思; ...

  9. 四种方式写按钮点击事件和Android 中常用的布局

    1.匿名内部类的方式 2.创建一个类实现onClickListener,实现onClick方法,设置控件点击时传一个类的对象 3.让当前类实现onClickListener,设置控件点击事件时传递一个 ...

随机推荐

  1. 如何实现android蓝牙开发 自动配对连接,并不弹出提示框

    之前做一个android版的蓝牙 与血压计通讯的项目,遇到最大的难题就是自动配对. 上网查资料说是用反射createBond()和setPin(),但测试时进行配对还是会出现提示,但配对是成功了 我就 ...

  2. 网页制作之html基础学习1-简介

    学习网页制作主要分为三大块 1.HTML    超文本标记语言( 全称:Hyper Text  Markup Language) 专门编辑静态网页 2.CSS      网页美化:是HTML控制的样式 ...

  3. JSP动态网站环境搭建应用中的详细步骤(Tomcat和Apache/IIS的整合)

    链接地址:http://www.cnblogs.com/dartagnan/archive/2011/03/25/2003426.html JSP动态网站环境搭建应用中的详细步骤(Tomcat和Apa ...

  4. javascript每日一练(十一)——多物体运动

    一.多物体运动 需要注意:每个运动物体的定时器作为物体的属性独立出来互不影响,属性与运动对象绑定,不能公用: 例子1: <!doctype html> <html> <h ...

  5. ZOJ 3492 模拟循环链表线性查找

    WA了好几次最后找到错因是因为数组开小了! = = string whose length never exceeds 20 所以至少要开到21 = = ,我却一直开20 ╮(╯▽╰)╭ AC代码: ...

  6. 01-UIKit

    目录: 一.视图和控制器 二.interface Builder 回到顶部 一.视图和控制器 1 视图(view)ios程序运行期间用户所能看见的东西都可以认为是视图,比如UIwindow就是一个视图 ...

  7. Qt核心剖析: 寻找 QObject 的源代码

    本来打算把<Qt学习之路>作为一个类似教程的东西,所以就不打算把一些关系到源代码的内容放在那个系列之中啦.因此今天就先来看一个新的开始吧!这个系列估计不会进展很快,因为最近公司里面要做 f ...

  8. Wince下实现ImageButton

    我们在winform中给按钮设置个背景图片超级简单,是不?可是在wince下面就没那么简单了,下面我来介绍一种方式来实现ImageButton. 实现思路是重新写一个usercontrol就ok.具体 ...

  9. Jquery 中each循环嵌套的使用示例教程

    1.从MVC返回的Json数据如下: 2.下面是客户端实现的示例: $.post("/admin/GetPermissionsForRole", function (data,st ...

  10. BZOJ 3357: [Usaco2004]等差数列( dp )

    dp(x, p) 表示序列中第x个数, 上一个数是p构成的等差数列的最长. 转移时从[1, x)中枚举p = seq[] 就行了.时间复杂度O(n²logn) -------------------- ...