flappy bird js 源码

2024-08-31 14:38
文章标签 源码 js flappy bird

本文主要是介绍flappy bird js 源码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

素材

注入灵魂

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>#canvas{background-image: url(res/sky.png);}</style>
</head>
<body><canvas id="canvas" width="800" height="400"></canvas><div id="res"></div>
</body><script>var canvas = document.getElementById('canvas')var context = canvas.getContext('2d')// 创建一个图片var img = new Image();img.src = 'res/birds.png'var birdX = 200;var birdY = 100;var birdTime = null;var stop = 0img.onload = function () {if(birdTime === null && stop === 0) {birdTime = setInterval(function(){if (birdY <= 350) {birdY++}context.clearRect(0,0,800,400)drawColumn ()context.drawImage(img,0,0,52,45,birdX,birdY,52,45);},10)}}var click = nulldocument.onmouseup = function () {if (stop === 0) {context.drawImage(img,0,0,52,45,birdX,birdY,52,45);clearInterval(click)}}document.onmousedown = function () {if (stop === 0) {click  = setInterval(function() { context.drawImage(img,104,0,52,45,birdX,birdY,52,45);birdY = birdY-2},10)}}// 柱子 var columnArr = []var columnTiner = nullfunction createColumn () {columnTiner = setInterval(function() {var column = {}column.postionX = 800column.postionY = -Math.round(Math.random()*100 + 150);column.imgA = new Image()column.imgB = new Image()column.imgA.src = 'res/pipe2.png'column.imgB.src = 'res/pipe1.png'column.id = new Date().getTime()columnArr.push(column)},1500)}createColumn()var same = null;var mark = 0function drawColumn () {for(var i = 0 ; i < columnArr.length; i++) {columnArr[i].postionX--context.drawImage(columnArr[i].imgA,columnArr[i].postionX,columnArr[i].postionY - 100);context.drawImage(columnArr[i].imgB,columnArr[i].postionX,columnArr[i].postionY + 450);if (birdX + 40 >= columnArr[i].postionX && birdX - 70 <= columnArr[i].postionX) {if (columnArr[i].id != same) {mark++same = columnArr[i].id document.getElementById('res').innerHTML = "得分" + mark}// 判定碰撞if(birdY < columnArr[i].postionY + 300 || birdY + 35 > columnArr[i].postionY + 450) {clearInterval(columnTiner)clearInterval(birdTime)stop = 1document.getElementById('res').innerHTML = "最后得分" + mark + "刷新页面重新开始"}}}}</script>
</html>

 

 

这篇关于flappy bird js 源码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1124187

相关文章

Java 正则表达式URL 匹配与源码全解析

《Java正则表达式URL匹配与源码全解析》在Web应用开发中,我们经常需要对URL进行格式验证,今天我们结合Java的Pattern和Matcher类,深入理解正则表达式在实际应用中... 目录1.正则表达式分解:2. 添加域名匹配 (2)3. 添加路径和查询参数匹配 (3) 4. 最终优化版本5.设计思

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

Spring 中 BeanFactoryPostProcessor 的作用和示例源码分析

《Spring中BeanFactoryPostProcessor的作用和示例源码分析》Spring的BeanFactoryPostProcessor是容器初始化的扩展接口,允许在Bean实例化前... 目录一、概览1. 核心定位2. 核心功能详解3. 关键特性二、Spring 内置的 BeanFactory

Node.js net模块的使用示例

《Node.jsnet模块的使用示例》本文主要介绍了Node.jsnet模块的使用示例,net模块支持TCP通信,处理TCP连接和数据传输,具有一定的参考价值,感兴趣的可以了解一下... 目录简介引入 net 模块核心概念TCP (传输控制协议)Socket服务器TCP 服务器创建基本服务器服务器配置选项服

mac安装nvm(node.js)多版本管理实践步骤

《mac安装nvm(node.js)多版本管理实践步骤》:本文主要介绍mac安装nvm(node.js)多版本管理的相关资料,NVM是一个用于管理多个Node.js版本的命令行工具,它允许开发者在... 目录NVM功能简介MAC安装实践一、下载nvm二、安装nvm三、安装node.js总结NVM功能简介N