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>

最新文章

  1. MySQL 数据库事务与复制
  2. httpd安装.md
  3. Computer vision labs
  4. ORACLE中的支持正则表达式的函数
  5. Java中的Bigdecimal类型运算
  6. 【leetcode❤python】342. Power of Four
  7. C++学习笔记1:高级语言
  8. JDK环境变量中dt.jar、tools.jar等变量值的作用
  9. 推荐系统之LFM(二)
  10. [HIHO1299]打折机票(线段树)
  11. Java核心技术II读书笔记(一)
  12. TQ210裸机编程(2)——LED流水灯
  13. Java使用JAX-WS来写webservice时 Unable to create JAXBContext
  14. [原创]零基础R语言教程---第一课---认识R语言
  15. ZeroMQ初探
  16. 【java】i++与++i、i--运算
  17. mac &amp; ip
  18. Kubenetes 核心概念理解
  19. 定时自动从FTP服务器取数据脚本
  20. uniGUI经验几则

热门文章

  1. [科技]Loj#6564-最长公共子序列【bitset】
  2. Python自动化测试发送邮件太麻烦?!一起聊一聊 Python 发送邮件的3种方式
  3. IdentityServer4[3]:使用客户端认证控制API访问(客户端授权模式)
  4. 记一次centos挂载ceph存储的坑
  5. Filter和Interceptor
  6. SpringBoot 简易实现热搜邮件推送,妈妈再也不用担心我不了解国家大事了
  7. vue使用AES.js
  8. vue3 专用 indexedDB 封装库,基于Promise告别回调地狱
  9. Linux查找运行程序主目录
  10. 题解 Wide Swap