Document

#score {

position: absolute;

top: 450px;

left: 100px;

font-size: 30px;

}

得分: 0

var canvas = document.createElement('canvas')

var ctx = canvas.getContext('2d')

// 水印canvas

var canvas2 = document.createElement('canvas')

var ctx2 = canvas2.getContext('2d')

// 定义变量

var w = 100

var blocks = []

var flag = false

var speed = 2

var num = 0

var requestId = 0

canvas.width = 100 * 3

canvas.height = 100 * 4

canvas.style.border = '5px solid black'

canvas2.width = 100 * 3

canvas2.height = 100 * 4

canvas2.style.border = '5px solid black'

canvas2.style.position = 'absolute'

canvas2.style.left = '9px'

canvas2.style.top = '9px'

document.body.appendChild(canvas)

document.body.appendChild(canvas2)

// 计分栏

var score = document.querySelector('#score')

draw_line()

ready_game()

// 游戏结束

function game_over() {

alert('游戏结束,请重新开始!')

ready_game()

}

// 动画

function animate() {

ctx.clearRect(0, 0, canvas.width, canvas.height)

ctx.fillStyle = 'black'

blocks.forEach(function (val, index) {

ctx.fillRect(val.x, val.y += speed, w, w)

// if (val.y > canvas.height) {

// blocks.splice(index, 1)

// }

})

if (blocks.length === 0) {

ctx.fillStyle = 'black'

var x = ~~(Math.random() * 3) * w

var obj = { x: x, y: -100 }

ctx.fillRect(obj.x, obj.y, w, w)

blocks.unshift(obj)

addClick_event(obj)

}

if (blocks[0].y > 0) {

ctx.fillStyle = 'black'

var x = ~~(Math.random() * 3) * w

var obj = { x: x, y: -100 }

ctx.fillRect(obj.x, obj.y, w, w)

blocks.unshift(obj)

addClick_event(obj)

}

speed = num / 10 + 2

requestId = requestAnimationFrame(animate)

if (blocks[blocks.length - 1].y >= canvas.height) {

// 结束动画

cancelAnimationFrame(requestId)

game_over()

}

}

// 开始游戏

function start_game() {

blocks.pop()

num++

score.textContent = '得分: ' + num

flag = true

animate()

}

// 方块移动

function destroy_block(e) {

if (!flag) return

var cli_x = e.x, cli_y = e.y

blocks.forEach(function (val, index) {

if (cli_x > val.x && cli_x < val.x + w && cli_y > val.y && cli_y < val.y + w) {

if (index === blocks.length - 1) {

blocks.pop()

num++

score.textContent = '得分: ' + num

}

}

})

}

// 在指定位置添加click事件

function addClick_event(obj) {

canvas2.addEventListener('click', function (e) {

var cli_x = e.x - 10

var cli_y = e.y - 10

if (cli_x > obj.x && cli_x < obj.x + w && cli_y > obj.y && cli_y < obj.y + w && obj.flag && !flag) {

start_game()

} else destroy_block(e)

})

}

// 准备开始游戏

function ready_game() {

blocks = []

flag = false

speed = 2

num = 0

ctx.clearRect(0, 0, canvas.width, canvas.height)

score.textContent = '得分: ' + num

ctx.fillStyle = 'black'

var x = 0

for (var i = 0; i < canvas.height; i += w) {

x = ~~(Math.random() * 3) * w

var obj = { x: x, y: i }

ctx.fillRect(x, i, w, w)

if (i == 300) {

ctx.fillStyle = 'white'

ctx.font = '20px consolas'

ctx.fillText('开始游戏', x + 10, i + w / 2)

obj.flag = true

}

addClick_event(obj)

blocks.push(obj)

}

}

// 划线

function draw_line() {

ctx.strokeStyle = 'black'

for (var i = w; i < canvas.height; i += w) {

ctx.moveTo(0, i)

ctx.lineTo(canvas.width, i)

ctx.stroke()

}

for (var i = w; i < canvas.width; i += w) {

ctx.moveTo(i, 0)

ctx.lineTo(i, canvas.height)

ctx.stroke()

}

ctx2.drawImage(canvas, 0, 0, canvas.width, canvas.height)

}

一键复制

编辑

Web IDE

原始数据

按行查看

历史

别踩白块儿游戏代码html,别踩白块儿.html · 知足常乐大哥哥/not-step-on-white-block - Gitee.com...相关推荐

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

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

  2. c语言别踩白块小游戏代码,自学easeljs 根据别踩白块游戏规则自己写的代码

    主要基于       -------easeljs-0.7.1.min.js-----   去制作这个游戏 思路:主要思路是以行为单位 绑定可点击行 选中则讲 移动最外层容器继续绑定可点击行的下一行 ...

  3. C语言项目实战:《别踩白块游戏》零基础项目,137 行源代码示例

    这篇文章主要为大家详细介绍了C语言实现--<别踩白块游戏>,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下! 游戏介绍: <别踩白块儿 Don't Ta ...

  4. 2cocos2dx别踩白块游戏案例

     1 建立一个别踩白块的项目dtwb(Don'ttouch white block) 2 修改main.cpp中的代码 3 修改AppDelegate.cpp中的代码 4 案例代码 Block.h ...

  5. CSS和js和HTML一起做出网页版别踩白块游戏

    CSS和js和HTML一起做出网页版别踩白块游戏 文章目录 CSS和js和HTML一起做出网页版别踩白块游戏 下面我们要用到的知识点: 页面布局 添加样式 游戏初始化 让黑块动起来 点击黑块事件 js ...

  6. 纯js 别踩白块游戏解析与源码

    (一)别踩白块 1.考虑游戏中有哪些对象,属性和方法?    别踩白块游戏仔细想想如果非要对象的话,游戏显示界面可以算是一个对象,下滑的区域算一个对象(每个小方格算对象的属性对象吧) 2.这里主要要思 ...

  7. java别踩白块_jquery之别踩白块游戏的简单实现

    前端学习要告一段落了,也没机会写什么像样的东西,然后无意中想起某人以前给我玩了一下别踩白块的游戏,手残还被嘲讽了下,现在想起来觉得这游戏实现起来也不难,于是上星期用jquery写了一个别踩白块的小游戏 ...

  8. JAVA中Robot类的运用,实现‘别踩白块’游戏辅助

    Robot 一.功能分析 http://www.4399.com/flash/135255_3.htm 别踩白块游戏,运用Java Robot类完成游戏脚本,自动完成踩黑块. 二.设计思路 首先创建一 ...

  9. 笔记37 笨办法学python练习43面向对象OOP的游戏代码(二)代码的反复理解

    笔记37 笨办法学python练习43面向对象OOP的游戏代码(二)代码的反复理解 连续贴着这个练习43的代码折腾了整整两天,把那些英文文本翻译为中文文本,重新装进这个代码之中.本想一段一段的运行,发 ...

  10. Laya小游戏上架Vivo平台踩坑记录(持续更新)

    Laya小游戏上架Vivo平台踩坑记录(持续更新) 个人踩坑的一些记录,大佬留情! 一些快捷键: Ctrl+P 搜索脚本文件 Ctrl+Y 恢复操作 Ctrl+Z 撤回操作 Ctrl+F 搜索字段 C ...

最新文章

  1. 细节:js 创建对象的几种模式举例
  2. Code Valley团队拟在澳洲建立一座价值5000万美元的BCH科技园
  3. 利用SPRING管理热加载的GROOVY对象!
  4. 韩国讨论到 2020 年拥抱开源操作系统
  5. Educational Codeforces Round 107 (Rated for Div. 2) 题解
  6. 使用result配置结果视图
  7. 漫谈依赖管理工具:从Maven,Gradle到Go
  8. 2021SC@SDUSC——使用CUDA/GPU技术加速密码运算(一)
  9. 付费应用程序协议下载 苹果_苹果商店 付费app协议填写 apple苹果IOS内购申请教程协议、税务和银行业务配置...
  10. 华为云GaussDB技术创新持续发力,荣膺DTCC2021创新大奖
  11. L. Lifeguards(排序)
  12. 西门子PLC 冷启动、暖启动、热启动的一种通俗解释
  13. 打造百亿量级、亿级日活SDK的十大关键要点
  14. background背景色
  15. 计算机重启恢复系统怎么操作,电脑如何恢复出厂设置 电脑开机怎么一键还原...
  16. Springboot工程logback和log4j冲突问题的解决。
  17. python 检查代码规范,类型标注
  18. 高校实验室综合管理系统:建立一个安全、智慧、规范的实验室
  19. 1年工作经验跳槽项目总监,看到他的数据可视化报表,我沉默了
  20. 清华最强本科毕业生Top10出炉,从来没有什么天才学霸!

热门文章

  1. 计算机网络cpu规格,国产CPU路漫漫 历数龙芯各型号技术指标
  2. 龙芯源码编译mysql_龙芯服务器安装总结
  3. Leetcode 739. Daily Temperatures
  4. 三维重建 | 单张RGB图片生成三维网格模型
  5. 什么是 CI/CD?
  6. CSS 基础3(内边距、外边距、边距模型)
  7. 杨过最后达到了独孤求败的什么境界, 其实金庸在书中已说明
  8. Google Play的崩溃与ANR
  9. 1.Twitter开发者之如何申请一个twitter开发者账号
  10. 创业之前必须要做的八个测试