If you’re interested in the capabilities of a particular device, I have assembled a list of all the UAProf URLs from the WURFL database:
- 1 目前小弟我收集的UAPROFILE上载地址
- 2 常用包上载地址
- 3 ubuntu常用软件上载地址
- 4 常用软件上载地址
- 5 常用工具的上载地址
- 1 十分难缠的signal 11 (SIGSEGV)
- 2 Can't create handler inside thread that has not called Looper.prepare() 错误有关问题
- 3 Dex Loader Unable to execute Multiple dex files define解决办法
- 4 解决 Google Play下载施用 "Google Play Store 已停止运行"
- 5 WAP网页获得用户的手机号码
- 6 如何判断Activity是否在运行
- 7 SlidingMenu+ViewPager兑现侧滑菜单效果
- 8 makeKeyAndVisible的功用
- 9 关于Unable to execute dex: Java heap space 解决方法
- 10 RelativeLayout设置居中对齐有关问题
- 1 播发声音文件AVAudioPlayer
- 2 改变银屏显示方式已经加载图片
- 3 2013-十-31 TCP/IP 协议簇
- 4 Java I/零 总体框架图
- 5 拿碗的铠甲勇者
- 6 女友可能出轨 想知道在QQ和别人的聊天记录
- 7 objective C中的字符串(3)
- 8 java.lang.ClassNotFoundException: Didn't find class "Activity" on path: /da
- 9 LG Optimus G Pro 相干
- 10 怎么创建对话框
- 1 用 lipo 下令裁剪出需要的 architecture
- 2 Andriod耗时操作的处置(音乐播放器欢迎界面)
- 3 疑惑为什么报错了
- 4 实现默认文字统制的textview
- 5 power键跟音量键组合实现截图功能
- 6 深入viewgroup.onintercepttouchevent1点
- 7 视图切换的形式
- 8 MGTemplateEngine模版发动机
- 9 Tiledmap编辑操作技巧
- 10 BroadcastReceiver要领
- 上一篇: Bit地图 相关1:存取
- 下一篇: 鸟哥,射击游戏技术分享一
- Web开发
- Web前端
- HTML/CSS
- PHP
- ASP
- JavaScript
- vbScript
- Ajax
- 网页设计
- 跨浏览器开发
- 高性能WEB开发
- Web Service
- XML/SOAP
- CGI
- 数据库
- SQL
- MySQL
- Oracle技术
- Oracle管理
- Oracle开发
- Oracle面试
- Oracle Exception
- Sql Server
- Informix
- Sybase
- DB2
- Access
- VFP
- 数据仓库
- 高性能数据库开发
- 其他数据库
- 移动开发
- Android
- Iphone
- Windows Mobile
- Symbian
- BlackBerry
- QT开发
- Brew
- MeeGo
- 移动平台
- 移动软件开发
- 电信IT应用开发
- 移动应用
- 企业开发
- 企业信息化
- 行业应用
- GIS
- SAP
- Tivoli
- Lotus
- Exchange
- SharePoint
- 报表
- 嵌入开发
- WinCE
- 硬件开发
- 单片机
- 汇编语言
- 驱动开发
- Wireless
- VxWorks
- Java Web开发
- J2EE
- J2SE
- J2ME
- Java面试
- Java相关
- Eclipse
- Java Exception
- 应用服务器
- Apache
- IIS
- JBoss
- WebSphere
- Weblogic
- ColdFusion
- 研发管理
- 项目管理
- 开发过程
- 开发方法
- 软件设计
- 设计模式
- 软件架构设计
- 敏捷开发
- 微创软件开发
- CVS/SVN
- VSTS
- PowerDesigner
- Rational
- 软件测试
- C#
- ASP.NET
- .NET Framework
- VB Dotnet
- VC
- .NET分析设计
- .NET组件控件
- J#
- Delphi
- .NET报表
- LINQ
- .NET新技术
- .NET面试
- .NET相关
- DotNet Exception
- Linux/Unix
- Solaris
- AIX
- 多媒体/流媒体开发
- 多媒体设计
- 交互式开发
- Flash
- 图形/图像
- 图像工具使用
- Flex
- AutoCAD
- Silverlight
- C++
- C语言
- C++ Builder
- VB
- PB
- Ruby/Rails
- perl/python
- 编程
- 其他开发语言
- 网络通信
- Open API
- 信息/网络安全
- IBM云计算
- Paypal
- VOIP
- Google技术
- 人工智能
- 搜索引擎
- CUDA
- 综合
- 互联网
- 操作系统
- 开源软件
- 共享软件
- 系统运维
- 高性能WEB开发
- 高性能数据库开发
- 高性能计算
- 多核软件开发
- 数据结构与算法
- 游戏开发
- 云计算
- 网络设计维护
- 数码设备
- 电脑整机及配件
- 装机与升级
- 外设及办公设备
- 电脑硬件
- 交换机/路由器
- Windows
- Windows2000
- Windows xp
- Windows7
- Office
- VBA
- VC/MFC
- Delphi
- 软件培训
- IT认证
- Oracle认证考试
- 软件水平考试
- IT课程
- 计算机图书
- 计算机英语
可先参见游戏图片和视频
鸟哥,在论坛里承诺过,有空会把相关技术展现出来,今天有空就提提吧。这里不会提供完整代码,仅仅用于算法交流。我想到哪就写哪些吧,一个游戏,相关的东西也是很多的。 先提提cldc1.0吧。
一、浮点运算处理
cldc1.0要求我们在游戏开发中,不能使用浮点数,可是对于射击游戏,有很多运算要用到,那怎么办?下面会提到。至于为什么一定要用cldc1.0?那就和移植有关系了,当前主流用户用的是不支持cldc1.1浮点运算的手机,公司考虑到用户量,定位于cldc1.0,当然,目前绝大多数游戏定位都是cldc1.0的。这里再扯远一点,像有些做3d游戏的,如果用了自带的可选3d api,就要求一定要支持cldc1.1,那么用户定位就是稍高端一点机器用户了,覆盖面将减少很大一部分,像上百宝箱等因为都对移植机型数量有一定要求,决策确实需要慎重。
没有了浮点数,就没有sinx,cosx函数,没有了1/2=0.5,当运算时,j2me的做法都是先放大,后缩小。举例,如sin1(弧度制)=0.01745240....,先把(sin1 )* n算出来,再除于n,这样就不会丢失那么多精度。原理就是如此。
游戏中对sinx,cosx 采用角度制,放大陪数为2的14次方倍,用工具计算出0到90度的值放数组里,共91个值。至于为什么,有3点:
a 因为如果用了2的次方,就可以直接用移位做运算,严重提高速度!
b 这些值放大以后,还能在一个short类型里放得下,而不必用int,小2字节,91个值就相当于182字节。一个short类型16个位,放到2的15次方,一不小心就变负值了,不可,不可,所以选择2的14次方。
c 其他角度的sinx,cosx用这91个值做数学变换即可。
下面给出这方面的源码:
感兴趣的网友可以用源码研究:
//角度制 //取得结果后,把最终结果>>14 //如int a = 100; b = a * sin(1) >> 14; public static int sin(int x) { int degree = (360 + x % 360) % 360; if(degree >= 0 && degree <= 90) { return sins[degree]; } else if(degree > 90 && degree <= 180) { return sins[180 - degree]; } else if(degree > 180 && degree <= 270) { return -sins[degree - 180]; } else { return -sins[360 - degree]; } } public static int cos(int x) { return sin(90 - x); } static short[] sins = new short[] { 0,286,571,856,1143,1428,1712,1997,2280,2562,2844,3126,3406,3686,3963, 4240,4515,4790,5062,5334,5603,5872,6137,6401,6663,6923,7182,7438,7692, 7942,8192,8437,8681,8922,9161,9397,9630,9859,10087,10310,10531,10749, 10962,11173,11381,11585,11785,11983,12174,12365,12550,12732,12910,13084, 13254,13421,13582,13741,13893,14044,14188,14329,14465,14598,14725,14848, 14966,15081,15191,15296,15396,15491,15582,15668,15749,15825,15897,15964, 16025,16082,16134,16182,16225,16261,16293,16321,16344,16361,16374, 16380,16384 };
如果有用到上面代码的网友,请在注释里写上javaeye鸟哥,呵呵。
如有问题,欢迎提。谢谢
从下面的跟贴中,其实可以发现,是角度精确和内存大小问题,用byte可以搞定(下面有代码),用short也可以搞定,内存和精度其实就是个矛盾体,网友使用时,自己均衡考虑。
对,0到90角度做数组下标取对应值,同样有提高速度功效。代码不多,精妙之处应该还不少。
这个已经在手机上跑起来了,根据公司有的机器,移植了25款,其中中屏E398都过,行内人都应该知道,如果E398都过了,中屏以上机器没有过不了的。
ls所说的256度系统,还想请教,小的真不知这系统啥来的。谢谢哈!
private static int sin(int angle) {
byte[] SINES = { 0, 4, 8, 13, 17, 22, 26, 31, 35, 39, 44, 48, 53, 57,
61, 65, 70, 74, 78, 83, 87, 91, 95, 99, 103, 107, 111, 115,
119, 123, 127, -125, -121, -118, -114, -110, -107, -103, -100,
-96, -93, -89, -86, -83, -79, -76, -73, -70, -67, -64, -61,
-58, -56, -53, -50, -48, -45, -43, -40, -38, -36, -33, -31,
-29, -27, -25, -24, -22, -20, -18, -17, -15, -14, -13, -11,
-10, -9, -8, -7, -6, -5, -5, -4, -3, -3, -2, -2, -2, -2, -2, -1 };
angle %= 360; // 360 degrees
if (angle < 0) {
angle += 360;
}
if (angle <= 90) { // 0..90 degrees
return SINES[angle] & 0xff;
} else if (angle <= 180) { // 90..180 degrees
return SINES[180 - angle] & 0xff;
} else if (angle <= 270) { // 180..270 degrees
return -SINES[angle - 180] & 0xff;
} else { // 270..360 degrees
return -SINES[360 - angle] & 0xff;
}
}
private static int sin(int angle) {
byte[] SINES = { 0, 4, 8, 13, 17, 22, 26, 31, 35, 39, 44, 48, 53, 57,
61, 65, 70, 74, 78, 83, 87, 91, 95, 99, 103, 107, 111, 115,
119, 123, 127, -125, -121, -118, -114, -110, -107, -103, -100,
-96, -93, -89, -86, -83, -79, -76, -73, -70, -67, -64, -61,
-58, -56, -53, -50, -48, -45, -43, -40, -38, -36, -33, -31,
-29, -27, -25, -24, -22, -20, -18, -17, -15, -14, -13, -11,
-10, -9, -8, -7, -6, -5, -5, -4, -3, -3, -2, -2, -2, -2, -2, -1 };
angle %= 360; // 360 degrees
if (angle < 0) {
angle += 360;
}
if (angle <= 90) { // 0..90 degrees
return SINES[angle] & 0xff;
} else if (angle <= 180) { // 90..180 degrees
return SINES[180 - angle] & 0xff;
} else if (angle <= 270) { // 180..270 degrees
return -SINES[angle - 180] & 0xff;
} else { // 270..360 degrees
return -SINES[360 - angle] & 0xff;
}
}
很好,谢谢哈,学习了!
抱歉,想点收藏的时候点了下隐藏贴。。。
有同感,有时手机应用也不必那么精确,自己单独写出几个运算来就行了。
嗯,适当的时候再做吧,现在写的文章水平有限,分享1,2都差不多是隐藏贴的水平,愧对观众啊。一些入门资料,遇到过的技术问题和一些,差不多都写在blog上了,再进步进步才配得上导出成pdf。
这点就是要交给自己均衡了,选择时各不一样:回复中已有人提到用byte了,ls的意见也就是提到用int了。
详细内容请见附件中的两个HTML文档
常见的大多数手机都有,比如IPhone,Blackberry(主要是黑莓8X和9X系列的)等
我自己试着下载,发现有些可能是因为GFW的原因,下不了
不过一共有近2000条,够我们用了
UAPRO收集列表中是两个网页
UAPROFILE中是我下的1200多个手机的UAPROFILE