废话不多说,就是一个简单的网页版的别踩白块儿 (踩到白块会弹出窗口,手动点击确定才能继续游戏,达到耗费你的游戏时间的目的)

HTML:(注意js文件的名字和所放位置,如果和我命名的不一样,注意在第六行修改)

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><title>别踩白块</title><script src="js/brick.js"></script>   <!--注意js文件的名字--> <style>#cns{           /* 画布*/border:solid 1px black;margin-left: 100px;}#timer_dash{     /*计时器*/color: red;}</style></head><body><button οnclick="Game.Start()">开始游戏</button>     <!--开始按钮触发游戏开始--><p>时间:<span id='timer_dash'></span> 秒</p>    <canvas id='cns' width="200px"  height="300px"></canvas> <script>var Game=new Brick(document.querySelector('#cns'),     //new一个新对象出来  传参画布与计时器document.querySelector('#timer_dash'));</script></body>
</html>

JavaScript:

var Model=function(canvas,timer_dash){   //传参var me=this;me.canvas=canvas;me.context=canvas.getContext('2d');me.time_dash=timer_dash;me.bricks=new Array();      //砖块数组me.cols=4;                   //4列me.rows=6;                    //6排me.brickWidth=me.canvas.width/me.cols;me.brickHeight=me.canvas.height/me.rows;me.clickBrick();            //点击砖块
}Model.prototype.Draw=function(){             //画var me=this;me.context.clearRect(0,0,me.canvas.width,me.canvas.height);me.drawGrid();          //画出方格me.drawBricks();        //画出砖块
}Model.prototype.Start=function(){     //开始游戏var me=this;me.totalRows=10;                     //总的砖块数  可以设置几十个甚至几百个  如果你无聊的话==me.startTime=new Date();           //记录游戏开始时间me.interval=setInterval(function(){         //每110ms循环调用函数 (显示时间)var timerTxt=new Date()-me.startTime;        //现在时间减去开始时间等于显示的时间timerTxt=(timerTxt/1000|0)+'.'+(timerTxt%1000|0);    //自动转换成字符串me.time_dash.innerHTML=timerTxt;                     },110);me.initBricks();       //初始化砖块me.Draw();
}Model.prototype.drawGrid=function(){  //画出方格var me =this;var ctx=me.context;ctx.beginPath();for(var i=1;i<me.cols;i++){           //绘制列ctx.moveTo(i*me.brickWidth,0);ctx.lineTo(i*me.brickWidth,me.canvas.height);}for(var i=1;i<me.rows;i++){            //绘制行ctx.moveTo(0,i*me.brickHeight);ctx.lineTo(me.canvas.width,i*me.brickHeight);}ctx.stroke();ctx.closePath();
}Model.prototype.initBricks=function(){var me=this;for(var i=0;i<me.rows;i++){me.bricks[i]=Math.random()*me.cols|0;  //每一行的砖块出现在哪一列是随机的}
}Model.prototype.drawBricks=function(){         //填充颜色var me =this;var ctx=me.context;for(var i=0;i<me.rows;i++){var currColValue = me.bricks[i];if(currColValue != -1) {var x = currColValue*me.brickWidth;var y = i*me.brickHeight;ctx.fillRect(x,y,me.brickWidth,me.brickHeight);}}
}Model.prototype.GetClickedBrick=function(e){      //得到鼠标点击的砖块的信息var me=this;var x=e.offsetX/me.brickWidth|0;var y=e.offsetY/me.brickHeight|0;if(me.bricks[y]===x){return {row:y,color:'black'};}else return {row:y,color:'white'};
}Model.prototype.clickBrick=function(){    //鼠标点击var me =this;me.canvas.addEventListener('click',function(e){     //在canvas上注册一个监听器对象var position=me.GetClickedBrick(e);          //得到鼠标点击的砖块的信息if(position.color==='white'){           //踩到白块alert("你猜到白块了!!!");         }else if(position.row===me.rows-1){        //踩到最后一排的黑色砖块me.bricks.pop();                      //从数组尾部删除最后一排的砖块信息me.totalRows--;                       //总的行数减一if(me.totalRows>=me.rows){me.bricks.unshift(Math.random()*me.cols|0);        //往砖块数组头部添加}else me.bricks.unshift(-1);                //-1表示这一排没有砖块if(me.totalRows===0){alert('恭喜你通关了! 你用了 ' + (new Date() - me.startTime)/1000 + ' 秒。');clearInterval(me.interval);          //取消由 setInterval()设置的timeout  参数必须是由 setInterval()返回的ID值}me.Draw();}})
}
window.Brick=Model;

web学习(2)--别踩白块儿(js版)(web入门)相关推荐

  1. 初学JS——利用JS制作的别踩白块儿(街机模式) 小游戏

    初学JS--利用JS制作的别踩白块儿(街机模式) 小游戏 这个是上个星期5写的了,当时是突然想写个游戏,就想到了别踩白块儿,当时的想法是 可能普通模式的别踩白块儿因为他的"块儿"是 ...

  2. Cocos别踩白块儿案列1

    Cocos  版本3.10 1.游戏介绍: <别踩白块儿>是由 Umoni Studio (Umoni Entertainment Limited 的前身)"制作的一款休闲益智游 ...

  3. QT 小游戏 : 别踩白块儿~

    一.实现思路 QPainter 绘制 游戏界面 PS:根据方块坐标链表绘制所有方块 支持两种操作方式 PS:鼠标事件 和 键盘事件(Q,W,E,R,T) 定时器(10ms) 刷新 方块坐标数据 根据得 ...

  4. python+opencv别踩白块儿游戏辅助,一天一个opencv小项目(已开源)

    python+opencv别踩白块儿游戏辅助,一天一个opencv小项目(已开源) 见链接

  5. 别踩白块儿 开源免费(C++)

    别踩白块儿(C++) 演示视频 调用EasyX图形库,电脑没有安装图形库的话,无法运行 EasyX下载 源码下载 //主要代码,源码请下载源码文件//游戏开始 void Begin() {MOUSEM ...

  6. 团队项目代码分析(Android游戏:别踩白块儿)

    代码组成部分: 关键代码主要分为三大部分,如下图所示(用思维导图的形式展示): 代码调用关系 通过MainActivity调用其他类❤,具体见核心代码分析! 核心代码分析 public class P ...

  7. 基于Linux、QT、C++的“别踩白块儿”小游戏

    基于Linux.QT.C++的"别踩白块儿"小游戏 源码链接 一.功能实现 完善的游戏界面.游戏倒计时.得分记录.历史最高分显示 二.功能描述 1.界面为4*4,一行中只有一个黑块 ...

  8. python 4399别踩白块儿脚本

    持续无聊中,看到别踩白块儿觉得这个脚本貌似比较好写. 需要用到的python 库如下 import pyautogui from PIL import ImageGrab, Image import ...

  9. 傅小森的游戏制作之路-别踩白块儿

    项目前言 别踩白块儿 这- 还用开发吗? 别人已经制作了呀 触屏版本多的是 是挺多的 但是 你见过按键版本的嘛? 没见过吧 这就是需要开发出来 , 进入项目需求环节 项目需求 别踩白块儿 顾名思义:不 ...

最新文章

  1. 分布式架构高可用架构篇_04_Keepalived+Nginx实现高可用Web负载均衡
  2. eclipse 配置打开工作空间
  3. linux 虚拟机安装图形界面,linux 在虚拟机中安装图形界面
  4. Flink-java读取Kafka(转载+自己验证)
  5. 什么是高清DVI光端机?dvi光端机的技术参数及应用有哪些?
  6. (转)Delaunay三角剖分
  7. C#中判断服务器图片是否存在
  8. 批处理也玩创建快捷方式
  9. react月份选择控件_一款很实用的ReactJS日期范围选择控件
  10. 《Linux》美轮美奂的Arch, 详解Arch虚拟机安装
  11. sublime text3 错误解决
  12. 区块链会议_2018杭州云栖大会区块链相关_20180919
  13. 服务器的上行带宽和下行带宽是什么意思
  14. 0ctf-2016 pwn-warmup writeup
  15. 如何应对“创可贴”式员工
  16. wamp phpMyAdmin error #1045 - Access denied for user root@locahost Fixed!
  17. u8 客户端修改服务器地址,u8服务器地址怎么修改
  18. 嵌入式Linux开发常用命令总结
  19. PHP 对接微信公众号订阅消息详细教程
  20. Linux系统中的权限详解

热门文章

  1. 纺织品功能性质量检测要求
  2. 2021年广东高考成绩短信查询方式,广东高考成绩查询 短信查询方式
  3. BMP180气压传感器
  4. Hexo 中 Butterfly主题和看板娘的使用
  5. struts2文件上传下载
  6. WinMount V3.2.0804 for xp 32位版本 日期2009.08.04
  7. 服务器有时候显示美国,美国服务器突然离线是什么原因
  8. 客端日志的收集、存储和分析
  9. 第八章 解释SQL查询计划(一)
  10. 手机adb 连接不到电脑,但是可以连接到各种助手