js实现一个小游戏(飞翔的jj)

源代码+素材图片在我的仓库

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>飞翔的林俊杰</title>
<style>
* {
padding: 0;
margin: 0;
}
#canvas{
margin-left:100px;
} </style>
</head>
<body>
<canvas id="canvas" width="1200px" height="600px"></canvas>
<div id="res">
键盘点击↑即可跳跃
<h2 id="mark">得分:0</h2>
</div>
<script>
var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");
//创建一个图片
var img = new Image();
img.src = './img/jj.png';
//等图片加载结束
var jjx = 100, jjy = 100;
img.onload = function () {
context.drawImage(img, jjx, jjy);
}
creatColum();
//定义一个计算器下落
var jjtimer = setInterval( function() {
jjy++;
jjy = jjy > 540 ? 540 : jjy;
//把上一张画布清空,确保再次画的时候背景是白纸状态
//参数 开始清空的地方(前两个参数)、宽、高
context.clearRect(0, 0, 1200, 600);
drawColum();
context.drawImage(img, jjx, jjy);
}, 10)
document.onkeydown = function(e) {
if(e.keyCode == 38)
jjy -=25;
}
var columArr = [], colomTimer = null;
function creatColum () {
colomTimer = setInterval(function() {
var colum = {};//柱子容器
colum.x = 1150;
colum.y = -Math.round(Math.random()*150 + 150);
colum.top = new Image();
colum.bottom = new Image();
colum.top.src = './img/colom.jpg';
colum.bottom.src = './img/colom.jpg';
colum.id = new Date().getTime();
columArr.push(colum);
}, 1500);
}
var same = null , mark = 0;
function drawColum() {
for (var i = 0; i< columArr.length; i++) {
columArr[i].x--;
context.drawImage(columArr[i].top,columArr[i].x,columArr[i].y+50);
context.drawImage(columArr[i].bottom,columArr[i].x,columArr[i].y+440);
if (jjx + 37 >= columArr[i].x && jjx - 53 <= columArr[i].x) {
// console.log("经过");
//加分
if (columArr[i].id != same) {
mark+=10;
same = columArr[i].id;
document.getElementById("mark").innerHTML = "得分:" + mark;
}
//判断碰撞
if (jjy < columArr[i].y + 355 || jjy > columArr[i].y+407) {
clearInterval( colomTimer);
clearInterval( jjtimer);
confirm("最终得分:"+mark)
}
} }
}
</script>
</body>
</html>

js实现一个小游戏(飞翔的jj)的更多相关文章

  1. JQuery&原生js ——实现剪刀石头布小游戏

    前言 jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库( 或JavaScript框架).jQuery设计的宗旨是“write L ...

  2. 用js实现2048小游戏

    用js实现2048小游戏 笔记仓库:https://github.com/nnngu/LearningNotes 1.游戏简介 2048是一款休闲益智类的数字叠加小游戏.(文末给出源代码和演示地址) ...

  3. 【转】利用 three.js 开发微信小游戏的尝试

    前言 这是一次利用 three.js 开发微信小游戏的尝试,并不能算作是教程,只能算是一篇笔记吧. 微信 WeChat 6.6.1 开始引入了微信小游戏,初期上线了一批质量相当不错的小游戏.我在查阅各 ...

  4. 使用PixiJS做一个小游戏

    PixiJS PixiJS使用WebGL,是一个超快的HTML5 2D渲染引擎.作为一个Javascript的2D渲染器,Pixi.js的目标是提供一个快速的.轻量级而且是兼任所有设备的2D库. 官方 ...

  5. 使用JS实现2048小游戏

    JS实现2048小游戏源码 效果图: 代码如下,复制即可使用: (适用浏览器:360.FireFox.Chrome.Opera.傲游.搜狗.世界之窗. 不支持Safari.IE8及以下浏览器.) &l ...

  6. Pygame:编写一个小游戏 标签: pythonpygame游戏 2017-06-20 15:06 103人阅读 评论(0)

    大学最后的考试终于结束了,迎来了暑假和大四的漫长的"自由"假期.当然要自己好好"玩玩"了. 我最近在学习Python,本意是在机器学习深度学习上使用Python ...

  7. DirectX游戏开发——从一个小游戏開始

    本系列文章由birdlove1987编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhurui_idea/article/details/26364129 写在前面:自 ...

  8. 用 JS 做一个数独游戏(二)

    用 JS 做一个数独游戏(二) 在 上一篇博客 中,我们通过 Node 运行了我们的 JavaScript 代码,在控制台中打印出来生成好的数独终盘.为了让我们的数独游戏能有良好的体验,这篇博客将会为 ...

  9. 用 JS 做一个数独游戏(一)

    用 JS 做一个数独游戏(一) 数独的棋盘由 9x9 的方格组成,每一行的数字包含 1 ~ 9 九个数字,并且每一列包含 1 ~ 9 这 9 个不重复的数字,另外,整个棋盘分为 9 个 3x3 的块, ...

随机推荐

  1. RabbitMQ3.9.7在CentOS7中的安装搭建

    1.概述 RabbitMQ 是目前很流行的消息中间件之一,可靠性非常好,能简单的实现高可用.负载均衡. 今天我们先来聊一下 RabbitMQ 3.9.7 版本在 CentOS7 中的安装. 2.安装R ...

  2. 鸿蒙内核源码分析(内存分配篇) | 内存有哪些分配方式  | 百篇博客分析OpenHarmony源码 | v11.02

    百篇博客系列篇.本篇为: v11.xx 鸿蒙内核源码分析(内存分配篇) | 内存有哪些分配方式 | 51.c.h .o 内存管理相关篇为: v11.xx 鸿蒙内核源码分析(内存分配篇) | 内存有哪些 ...

  3. hdu5909-Tree Cutting【FWT】

    正题 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5909 题目大意 给出\(n\)和\(m\)(\(m=2^k\)).再给出一个大小为\(n\)的树 ...

  4. Python3模块调用你真的会吗?不懂就来看一看?

    前言 学习Python自动化框架的时候,各种文件会相互之间的调用.刚学的时候是不是很头疼!有木有!!一步步告诉你如何调用文件里的类和方法. 经常会调用同目录下的文件还有跨文件的调用 调用同目录下文件A ...

  5. git批量处理git author和commit

    最近在做自己项目的时候,由于使用了git全局配置的用户名和邮箱,导致自己私人的仓库里面的所有提交记录都是用的公司的邮箱和用户名,于是想批量替换一下. 可以在需要修改的项目的根目录下使用如下命令,进行批 ...

  6. NOIP 模拟 十一

    T1 math 分析性质,对于 $$ ax+by=c$$ 有 $$ gcd(x,y)|c$$ 所以 $$ gcd(a_1,a_2 .....,a_n)|num$$ 换句话说就是最后得到的数一定是 GC ...

  7. cadvisor+prometheus+alertmanager+grafana完成容器化监控告警(一)

    一.概况 1.拓扑图 2.名词解释 Grafana 可视化监控容器运行情况 Prometheus: 开源系统监视和警报工具包 Alertmanager 一个独立的组件,负责接收并处理来自Prometh ...

  8. H5移动端适配方案-rem

    为什么移动端要适配: 由于移动设备的尺寸不一,所以移动端的页面要能够适应不同尺寸的设备,即页面的自适应,让页面在视觉上保持一致. rem:rem 是css3的一种相对单位,参考是根元素HMTL的fon ...

  9. [AGC023D] Go Home 题解

    题目传送门 Solution 首先排除掉特殊情况:若 \(S\) 在两侧,肯定会顺序/逆序直接走完,答案就是边界减去出发点. 考虑到若 \(P_1\geq P_n\),那么显然 \(1\) 不到家 \ ...

  10. javascript-原生-闭包

    1.变量的作用域 前提:这里只全部都通过var创建的变量或对象 1.全局变量:函数外创建变量 var x=10; function test(){ alert("全局变量在test函数中&q ...