仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 5585|回复: 20
打印 上一主题 下一主题

[学习教程] JAVA编程:MySprite 2.0

[复制链接]
不帅 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:51:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
令人可喜的是java现在已经开源了,所以我想我上述的想法也许有一天会实现,因为java一直都是不断创新的语言,每次创新都会给我们惊喜,这也是我喜欢java的一个原因。
/**

为MIDP1.0写的Sprite类的晋级版本*<p>Title:精灵类</p>**<p>Description:</p>**<p>Copyright:Copyright(c)2004</p>**<p>Company:</p>**@authornotattributable*@version1.0*/importjavax.microedition.lcdui.*;publicclassMySprite{finalpublicstaticintByCollideXY=0;finalpublicstaticintByCollideArea=1;finalpublicstaticintByCollideRadius=2;publicImageimage;publicintpositionX;publicintpositionY;publicintnumFrames;publicintcurrentFrame;publicint[][]framesInfo;//本版本吧各个帧的尺寸存到数组中,而不是象1.0中等年夜publicbooleanvisible=true;publicintDX;publicintDY;publicintcollideX=0;//当两个脚色交织横向间隔凌驾collideX时以为已碰撞publicintcollideY=0;//当两个脚色交织纵向间隔凌驾collideY时以为已碰撞publicintcollideArea=0;//当两个脚色相互进侵面积凌驾collideArea时以为已碰撞(注重:这里的进侵面积!=交织面积)publicintcollideRadius=0;//碰撞半径publicintstate=0;

publicMySprite(Imageimage,intnumFrames)throwsException{this.image=image;this.numFrames=numFrames;//setframeInfoframesInfo=newint[numFrames][4];for(inti=0;i<numFrames;i++){framesInfo[i][0]=i*image.getWidth()/numFrames;//左上角X坐标framesInfo[i][1]=0;//左上角Y坐标framesInfo[i][2]=image.getWidth()/numFrames;//本帧宽度framesInfo[i][3]=image.getHeight();//本帧高度}///////////////this.currentFrame=0;}publicvoiddraw(CanvastheCanvas,Graphicsg){if(visible){g.setClip(positionX,positionY,framesInfo[currentFrame][2],framesInfo[currentFrame][3]);g.drawImage(image,positionX-framesInfo[currentFrame][0],positionY-framesInfo[currentFrame][1],0);g.setClip(0,0,theCanvas.getWidth(),theCanvas.getHeight());}}publicvoidstep(){if(visible){this.positionX+=DX;this.positionY+=DY;}}publicbooleancollidesWith(MySpritesprite){returnthis.collidesWith(sprite,ByCollideArea);}publicbooleancollidesWith(MySpritesprite,intCheckType){if(!visible||!sprite.visible){returnfalse;}if(CheckType==ByCollideArea){//当两个脚色相互进侵面积凌驾collideArea时以为已碰撞(注重:这里的进侵面积!=交织面积)intinX=sprite.positionX+sprite.framesInfo[sprite.currentFrame][2]-this.positionX>this.positionX+this.framesInfo[currentFrame][2]-sprite.positionX?this.positionX+this.framesInfo[currentFrame][2]-sprite.positionX:sprite.positionX+sprite.framesInfo[sprite.currentFrame][2]-this.positionX;intinY=sprite.positionY+sprite.framesInfo[sprite.currentFrame][3]-this.positionY>this.positionY+this.framesInfo[currentFrame][3]-sprite.positionY?this.positionY+this.framesInfo[currentFrame][3]-sprite.positionY:sprite.positionY+sprite.framesInfo[sprite.currentFrame][3]-this.positionY;if(inX>0&&inY>0&&inX*inY>this.collideArea+sprite.collideArea){returntrue;}else{returnfalse;}}elseif(CheckType==ByCollideXY){if(sprite.positionX+sprite.framesInfo[sprite.currentFrame][2]-sprite.collideX>this.positionX+this.collideX&&this.positionX+this.framesInfo[currentFrame][2]-this.collideX>sprite.positionX+sprite.collideX&&sprite.positionY+sprite.framesInfo[sprite.currentFrame][3]-sprite.collideY>this.positionY+this.collideY&&this.positionY+this.framesInfo[currentFrame][3]-this.collideY>sprite.positionY+sprite.collideY){returntrue;}else{returnfalse;}}else//if(CheckType==ByCollideRadius){intinX=Math.abs(this.positionX+this.framesInfo[currentFrame][2]/2-sprite.positionX-(sprite.framesInfo[sprite.currentFrame][2]+1)/2);intinY=Math.abs(this.positionY+this.framesInfo[currentFrame][3]/2-sprite.positionY-(sprite.framesInfo[sprite.currentFrame][3]+1)/2);if(inX*inX+inY*inY<(collideRadius+sprite.collideRadius)*(sprite.collideRadius+sprite.collideRadius)){returntrue;}else{returnfalse;}}}publicbooleancollidesWith(Imageimage,intx,inty){returnthis.collidesWith(image,x,y,ByCollideArea);}

publicbooleancollidesWith(Imageimage,intx,inty,intCheckType){if(!visible){returnfalse;}

if(CheckType==ByCollideArea){//当两个脚色相互进侵面积凌驾collideArea时以为已碰撞(注重:这里的进侵面积!=交织面积)intinX=x+image.getWidth()-this.positionX>this.positionX+this.framesInfo[currentFrame][2]-x?this.positionX+this.framesInfo[currentFrame][2]-x:x+image.getWidth()-this.positionX;intinY=y+image.getHeight()-this.positionY>this.positionY+this.framesInfo[currentFrame][3]-y?this.positionY+this.framesInfo[currentFrame][3]-y:y+image.getHeight()-this.positionY;if(inX>0&&inY>0&&inX*inY>this.collideArea){returntrue;}else{returnfalse;}}elseif(CheckType==ByCollideXY){if(x+image.getWidth()>this.positionX&&this.positionX+this.framesInfo[currentFrame][2]-this.collideX>x&&y+image.getHeight()>this.positionY&&this.positionY+this.framesInfo[currentFrame][3]-this.collideY>y){returntrue;}else{returnfalse;}}else//if(CheckType==ByCollideRadius){intinX=Math.abs(this.positionX+this.framesInfo[currentFrame][2]/2-x-(image.getWidth()+1)/2);intinY=Math.abs(this.positionY+this.framesInfo[currentFrame][3]/2-y-(image.getHeight()+1)/2);if(inX*inX+inY*inY<collideRadius*collideRadius){returntrue;}else{returnfalse;}}}}

JAVA是一种可以撰写跨平台应用软件的面向对象的程序设计语言,由升阳(SunMicrosystems)公司的詹姆斯·高斯林(JamesGosling)等人于1990年代初开发。
简单生活 该用户已被删除
沙发
发表于 2015-1-21 16:25:21 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
若相依 该用户已被删除
板凳
发表于 2015-1-26 17:24:34 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
冷月葬花魂 该用户已被删除
地板
发表于 2015-2-2 11:48:46 | 只看该作者
是一种突破用户端机器环境和CPU
小魔女 该用户已被删除
5#
发表于 2015-2-7 19:22:50 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
乐观 该用户已被删除
6#
发表于 2015-2-9 15:31:52 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
飘飘悠悠 该用户已被删除
7#
发表于 2015-2-15 22:02:13 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
爱飞 该用户已被删除
8#
发表于 2015-2-22 02:46:43 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
小女巫 该用户已被删除
9#
发表于 2015-3-6 22:34:02 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
只想知道 该用户已被删除
10#
发表于 2015-3-11 01:39:25 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
第二个灵魂 该用户已被删除
11#
发表于 2015-3-11 02:06:56 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
老尸 该用户已被删除
12#
发表于 2015-3-17 18:38:54 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
变相怪杰 该用户已被删除
13#
发表于 2015-3-22 05:09:20 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
再现理想 该用户已被删除
14#
发表于 2015-4-11 15:11:34 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
兰色精灵 该用户已被删除
15#
发表于 2015-4-25 07:54:23 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
海妖 该用户已被删除
16#
发表于 2015-6-28 22:36:12 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
山那边是海 该用户已被删除
17#
发表于 2015-6-29 22:34:58 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
蒙在股里 该用户已被删除
18#
发表于 2015-7-2 09:27:38 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
再见西城 该用户已被删除
19#
发表于 2015-7-11 06:54:12 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
灵魂腐蚀 该用户已被删除
20#
发表于 2015-7-11 15:34:33 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 16:25

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表