用canvas和原生js写的一个笨鸟先飞的小游戏(暂时只有一个关卡)
其中一个画布背景是一张图片,还有小鸟,两个管子的图片。暂时不知道怎么附上去就不添加了。这里只有源代码,css和js都是在html写着的,感觉比他们的容易吧,hah
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>笨鸟先生</title>
<style>
*{margin: ;padding:;}
body,html{
width:%;
height:%;
}
canvas{
background: url("images/background.png");
background-repeat: repeat-x;
background-size: % %;
position: fixed;
}
#score{
position: absolute;
font-family:Times New Roman;
font-size: 80px;
font-weight: bold;
top:30px;
left:200px;
color:black;
}
.wraper{
width: %;
height:%;
position: absolute;
top:;
left:;
z-index: ;
background-color: ghostwhite;
opacity: 0.5;
display: none;
}
.scoreban{
position: absolute;
top:200px;
left:550px;
z-index: ;
font-family:Times New Roman;
font-size: 80px;
font-weight: bold;
display: none;
}
</style>
</head>
<body>
<canvas style=" display:block;width:100%;height:100%;" id="canvas">
</canvas>
<div class="wraper"> </div>
<div class="scoreban">
<p id="scoreban0"></p>
</div>
<p></p>
<div id="score">
<i id="scoreI"></i>
</div>
<video src="music/zbj.mp3" autoplay loop width="" height="" id="bgMusic"></video>
<script>
var score = document.getElementById('scoreI');
var scoreban0 = document.getElementById('scoreban0');
var wraper = document.getElementsByClassName('wraper')[];//背景色
var scoreban = document.getElementsByClassName('scoreban')[];
var oCanvas = document.getElementById("canvas");
var ctx = oCanvas.getContext("2d");
var birdPic = new Image();
var imgtop=; //小鸟默认高度
var i = ; //小鸟下落速度
var j = ;
var time;
function flyBird(){
birdPic.src = "images/avatar.png";
ctx.clearRect(,,,);
birdPic.onload = function (){
ctx.drawImage(birdPic,,imgtop,,);
}
imgtop+=i;
i=i+0.5;
}
document.onkeydown = function (event){//空格按键触发
if(event.keyCode == ){
j=j+;
imgtop-=j;
}
i=;
j=;
};
time = setInterval(flystop,);
//过柱子的数目
var q = ;
score.innerHTML = q; //默认为0 var stop = new Image();//上下两个柱子
var stop0 = new Image(); var stopsite = ;//默认柱子的开始位置
var toparr = [,,,,,,,,,];
function flystop(){
flyBird();
stop.src = "images/ob_bottom.png";
stop0.src = 'images/ob_top.png';
for(var t = ;t<;t++){
ctx.clearRect(stopsite+*t+,,,);
ctx.drawImage(stop0,stopsite+*t,,,toparr[t]);
ctx.drawImage(stop,stopsite+*t,toparr[t]+,,);
if(stopsite+*t <= && stopsite+*t > ){ //
if(imgtop<=toparr[t] || imgtop>=toparr[t]+){
clearInterval(time);
wraper.style.display = 'block';
scoreban.style.display = 'block';
scoreban0.innerHTML = 'GG,您的分数为:'+ (q-);
}
}
if(stopsite+*t ==){
score.innerHTML = q;
q++;
}
}
if(imgtop <= || imgtop>= ctx.canvas.height){//判断是否过界
clearInterval(time);
wraper.style.display = 'block';
scoreban.style.display = 'block';
scoreban0.innerHTML = 'GG,您的分数为:'+ q;
}
stopsite-=;
if(stopsite == -){
clearInterval(time);
wraper.style.display = 'block';
scoreban.style.display = 'block';
scoreban0.innerHTML = '恭喜你,你赢了0.0';
}
}
</script>
</body>
</html>
用canvas和原生js写的一个笨鸟先飞的小游戏(暂时只有一个关卡)的更多相关文章
- 原生js写的贪吃蛇网页版游戏特效
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <bo ...
- 用原生js写一个"多动症"的简历
用原生js写一个"多动症"的简历 预览地址源码地址 最近在知乎上看到@方应杭用vue写了一个会动的简历,觉得挺好玩的,研究一下其实现思路,决定试试用原生js来实现. 会动的简历实现 ...
- 原生 js 写分页
欢迎留言或者加本人QQ172360937咨询 这段代码是用原生 js 写的一个分页的效果 <!doctype html> <html lang="en"> ...
- 用原生JS写移动动画案例及实际应用
js很强大 相信很多人都知道,那么它有哪些强大之处呢?有兴趣的人可以去查查,这里就不赘述了,因为不在本片文章讨论的范围. 我们要讲的是怎么用原生JS写移动动画?我们先举一个最简单的动画例子,很多网站的 ...
- 原生js写Ajax
//原生js写ajax就像打电话 //打电话分下面4步//1.拿出手机//2.拨号//3.说话//4.挺对方说话 //ajax也分下面4步//1.创建ajax对象//2.连接到服务器//3.发送请求( ...
- 原生JS写的ajax函数
参照JQuery中的ajax功能,用原生JS写了一个ajax,功能相对JQuery要少很多,不过基本功能都有,包括JSONP. 调用的方式分为两种: 1. ajax(url, {}); 2. ajax ...
- 用原生javascript做的一个打地鼠的小游戏
学习javascript也有一段时间了,一直以来分享的都是一些概念型的知识,今天有空做了一个打地鼠的小游戏,来跟大家分享一下,大家也可以下载来增加一些生活的乐趣,下面P出代码:首先是HTML部分代码: ...
- html5面向对象做一个贪吃蛇小游戏
canvas加面向对象方式的贪吃蛇 2016-08-25 这个小游戏可以增加对面向对象的理解,可以加强js逻辑能力,总之认真自己敲一两遍收获还是不少啊!!适合刚学canvas的同学练习!! 废话不多说 ...
- 自定义View4-塔防小游戏第一篇:一个防御塔+多个野怪(简易版)*
塔防小游戏 第一篇:一个防御塔+多个野怪(简易版) 1.canvas画防御塔,妖怪大道,妖怪行走路线 2.防御塔攻击范围是按照妖怪与防御塔中心距离计算的,大于防御塔半径则不攻击,小于则攻击 ...
随机推荐
- 二.jenkins构建自动化任务
1,新建任务 打开jinkens, 选择 [新建] -->[输入要构建的项目名称]-->[构建一个自由风格的软件项目]-->[OK] 2, 配置 根据自己的需要选择配置,如下: 代 ...
- shell脚本修改文件
https://blog.csdn.net/qq_37674858/article/details/80066264 2.2 使用sed命令对文件中的字符替换 例如:将aaaa字符串修改为bbbb [ ...
- oracle中的序列,可以解决自增各种编号自动增长问题,说一下我的小问题。
1.生成0001-9999的编码 //在PL/sql中 创建一个序列 Create sequence seq_cdptIncrement by 1 --自增数Start with 1 --开始累加数M ...
- django 打印sql语句
LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console': { 'level': 'DE ...
- sql数据库 大小查询
select * from sys.master_files where name='CODA_PRD_Catalog' 12416*8/1024=(m)
- 62 不同路径 leetcode JAVA
题目: 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为“Finish”). 问 ...
- [Objective-C语言教程]数据封装(27)
所有Objective-C程序都由以下两个基本要素组成 - 程序语句(代码) - 这是执行操作的程序的一部分,它们被称为方法(函数). 程序数据 - 数据是受程序功能影响的程序信息. 封装是一种面向对 ...
- 不信任的 .exe 怎么办,用 Windows 沙盒啊!
简评:维基百科,在计算机安全领域,沙盒(sandbox)是种安全机制,为执行中的程式提供的隔离环境.通常是作为一些来源不可信.具破坏力或无法判定程序意图的程序提供实验之用. 微软正在尝试解决人们对运行 ...
- Flutter 1.0 正式版: Google 的便携 UI 工具包
简评:所以 React-Native 和 Flutter 该怎么选? 在 10 个月前的 MWC 上,谷歌发布了 Flutter 的 Beta 版本,给跨平台应用开发带来了一种全新的选择,昨天谷歌正式 ...
- Carte上面的作业1、2天就会丢失的问题
发现Carte上面的作业莫名其妙就会没有,问了客户的维护人员说也没删除. 对象时间也是No Limit,但还是隔1.2天就不见了. 那说明之前配置这里还是无效 <slave_config> ...