java祖玛_Canvas小练习_祖玛游戏01
这几天学习了一个祖玛游戏的小Demo,记录下这个小游戏的编写过程。
1:首先实现的一个简单界面效果。
2:在图形绘制完成后,让黑色小球沿着圆形弧线运动。
编码过程
创建画布,绘制圆形弧线。
首先在Html页面上定义一个Canvas标签。
在JS代码中,实现Canvas绘图功能。
1:绘制弧形图。
gc.beginPath();
//调用绘图的 arc(x,y,r,start,stop,counterclockwise) 方法创建一个园
//其中x,y是圆心坐标,r是半径,start是开始弧度,
//stop是结束弧度,counterclockwise false顺时钟 true逆时钟 默认位顺时钟。
//三点钟是0弧度 ,12点是1.5弧度。
gc.arc(300,200,200,1.5*Math.PI,1*Math.PI,false);
//stroke()和fill()的区别在于,fill()是填充绘制图形
gc.stroke();
gc.closePath();
gc.beginPath();
//绘制在180度的时候,大圆变成小圆。将圆心移动(250,200)处。
gc.arc(250,200,150,1.*Math.PI,2*Math.PI,false);
gc.stroke();
gc.closePath();
gc.beginPath();
//绘制结束处的小圆,半径为20.
gc.arc(400,200,20,0*Math.PI,2*Math.PI);
gc.stroke();
gc.closePath();
2:创建一个动起来的小球。由于后面的目标小球会有多个,需定义一个数组。
var ball=[];
ball[0]={
x:300,//绘制小球的中心点x坐标
y:0,//绘制小球的中心点y坐标
r:200,//绘制小球的半径
angle:0,//小球从0度开始转过的角度
firstx:300,//小球的起始点x坐标
firsty:200 //小球的起始点y坐标
};
3:让创建的小球动起来。创建的小球动起来,通过改变小球的圆心坐标,重新绘制这个小球。
改变小球的圆心坐标,通过角度计算相加得到
//创建一个定时器,每隔30秒改变小球的圆心点坐标
setInterval(function(){
for(var i=0;i
ball[i].angle++;
//新的小球x坐标等于,等于原始起点x坐标加上小球转过的角度后的x轴的分量。
ball[i].x=ball[i].firstx+Math.sin(ball[i].angle*Math.PI/180)*ball[i].r;//新的小球y坐标等于,等于原始起点y坐标减去小球转过的角度后的y轴的分量。
ball[i].y=ball[i].firsty-Math.cos(ball[i].angle*Math.PI/180)*ball[i].r;}
},30);
}
4:动态能够改变小球的圆心点坐标后,把小球加入到画布,小球动起来。
小球能够动起来,实际上通过每隔多少秒,重新清理下画布,在重新绘制该画布,达到实现动态的效果。
调用:clearRect(x,y,width,height)方法,清理从(x,y)处开始的坐标的长度的画布。
//清理画布
gc.clearRect(0,0,context.width,context.height);
//加入小球
for(var i=0;i
gc.beginPath();
gc.moveTo(ball[i].x,ball[i].y);
//绘制目标小球
gc.arc(ball[i].x,ball[i].y,20,0*Math.PI,2*Math.PI);
gc.fillStyle="black";
gc.fill();
gc.closePath();
}
5:关于弧度和角度的换算问题。
canvas中大多数函数,以弧度计算 需将角度转换弧度,角度转换弧度只需将角度乘以 0.017453293 (2PI/360)即可转换为弧度。
即Math.PI/180。
未完待续。
java祖玛_Canvas小练习_祖玛游戏01相关推荐
- java ee的小程序_用微服务和容器替换旧版Java EE应用程序服务器
java ee的小程序 Lightbend最近对2000多个JVM开发人员进行了一项调查,结果刚刚发布. 开展该调查的目的是发现:发展趋势与IT基础架构趋势之间的相关性,处于数字化转型前沿的组织如何使 ...
- java ee的小程序_在Java EE应用程序中实现自动重试
java ee的小程序 最初,我想将此博客称为" 具有拦截器驱动的重试策略的灵活超时 ",但后来我认为它太"繁重". 该声明以及修改后的标题应该(希望)使您了解 ...
- java ee的小程序_扩展Java EE应用程序的基础
java ee的小程序 老实说,"可扩展性"是一个详尽的主题,并且通常没有被很好地理解. 通常,它被认为与高可用性相同. 我已经看到新手程序员和"经验丰富"的建 ...
- java犯的小错误_[Java教程]十个JavaScript中易犯的小错误,你中了几枪?
[Java教程]十个JavaScript中易犯的小错误,你中了几枪? 0 2015-06-01 12:00:19 序言 在今天,JavaScript已经成为了网页编辑的核心.尤其是过去的几年,互联网见 ...
- 天刀 服务器状态,天刀实用技巧_天刀各种游戏小技巧_玩游戏网
一:御风神行无CD小技巧 这个小技巧,是玩家们游戏方便的一大助力,毕竟它方便了几乎所有天刀玩家,在游戏中给玩家们创造了极大便利.就是当玩家角色走到地图的边缘空气墙处,自动蹦出来地图,点击传送点,可以无 ...
- 数据结构java实验 刘小晶_《数据结构实例解析与实验指导——Java语言描述》刘小晶著【摘要 书评 在线阅读】-苏宁易购图书...
商品参数 作者: 刘小晶著 出版社:清华大学出版社 出版时间:2013-2-1 版次:1 印次:1 印刷时间:2013-2-1 字数:619000 页数:380 开本:16开 装帧:平装 ISBN:9 ...
- Java io流小技巧_选择用流的小规律(java)基本的io流
选择流的规律 1 首先我们要明确源和目的 源: InputStream Reader 目的::OutputStream Write 2 我们要判断源和目的是不是纯文本 源是纯文本 :Reader 否则 ...
- 应用java编写 按键小脚本_一个使用JAVA编写的类似按键精灵的程序
import java.io.*; import java.util.*; import java.awt.*; import java.awt.event.*; /** * 支持脚本文件的按键控制程 ...
- java查重小程序_”万能查重器“小程序
//今天组长让我写一个查重的的程序来给一个词库查重 把相同的删除 //一开始我绞尽脑汁想用嵌套的for循环怎么都有bug 原因是&&和&的理解错误 //后来我想到了用Map集合 ...
最新文章
- 基于Angularjs+jasmine+karma的测试驱动开发(TDD)实例
- 简单试用了一下 dynamips 7200路由模拟器
- java druid jdbc例子_JDBC【使用Druid连接数据库,DBUtils工具类的使用】
- js将数字转成大写中文
- AcWing 1826. 农田缩减(思维+枚举)
- ccna、ccnp视频教程
- 网络共享时 计算机名如何设置方法,win7怎么在局域网共享文件夹|win7局域网共享设置方法...
- 基于python+pyqt5的串口助手
- win10 启动后无法正常显示桌面/黑屏
- 麓堂诗话 明 李东阳 著
- SQL语句 SQL Server中Text类型操作
- 视频伪原创工具 剪辑过的视频md5会改变吗
- 金仓数据库在 TPCE(dbt5,tpsE)测试框架方面的实践和突破
- 一个例子入坑布谷鸟算法(附完整py代码)
- LabVIEW学习心得
- 一个汉字占几个字节的问题
- Chrome浏览器新版本解决CROS的技巧
- JFrog Artifactory 二进制软件制品仓库介绍
- 第三章:课后习题答案-SAS程序部分
- 国标GB28181协议网络摄像头直播视频平台EasyGBS如何实现语音对讲功能?
热门文章
- SQL Server数据库mdf文件中了勒索病毒.FREEMAN。扩展名变为FREEMAN
- Oracle 中add_months和trunc的用法,数据类型
- ZDNS联合发起创建的“粤港大数据图像和通信应用联合实验室”成功获批
- 什么是机器语言、汇编语言、高级语言?
- ubuntu-CPU频率调节
- LL教你入侵网站(算是吧)--对于天津理工教务处网站找回密码方案的建议
- static关键字是什么意思?java中是否可以覆盖一个private方法或者static方法
- 无法识别USB设备解决办法
- 电商平台快递物流解决方案
- Quartz框架实现定时任务介绍及简单使用