少一个类的效率。

hcz883867 2009-04-13 10:44:53
小弟在学习蓝牙对战五子棋时,遇到一个问题不懂,特来问问。这个代码网上很多,相信很多大侠也看过啦,我就简单列一下:

首先介绍下主要用到的八个类:

BTGame :midlet类,控制所有midlet的运行和销毁;

MyCanvas :调用GameWorld.keyPressed()方法处理键盘输入并实例化和绘制GameWorld;

Chess :抽象了棋盘上是否为服务器下子;

GameWorld :抽象了游戏的棋盘和棋子以及通过调用Control类来收发信息;

Control :主要在GameWorld类和Connetion类之间传递坐标值和服务器判断值;

Connetion :根据服务器判断值类启动服务器和客户端并把其棋子坐标传递给Control类;

Server :主要是创建蓝牙服务和连接并等候服务,并负责服务器的信息收发;

Client :主要负责搜索设备和服务,并负责客户端的信息收发。


五子棋首先是由BTGame类运行midlet,启动画布MyCanvas类,再根据启动服务器/客户端的选择再逐次启动GameWorld类、Control类、Connection类和其选择模式的线程,来完成蓝牙通信的初始化以及创建连接和收发信息。MyCanvas类再通过调用GameWorld 类的draw( )来绘制背景、棋盘和棋子。

到此后我发现要经历GameWorld,Control,Connection的过渡收发,才到达服务器/客户端,我发现Control类完全起的是一个传递的作用,就试着将中间的Control类省去,修改GameWorld,Connection直接相联系,之后发现点开始后(打开MyCanvas之后)运行启动非常的慢。我想着电脑都运行这么慢,手机就更不可能了...原来想MyCanvas和GameWorld合并的想法就也又打消了...我有点想不明白,为何少一个类的效率会变低呢?
...全文
103 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hcz883867 2009-04-14
  • 打赏
  • 举报
回复
嗯,我今天设了很多台,设备没什么问题。用输出测试看到,能找到设备,然后不能搜索到服务。

可能代码中写死了UUID或者蓝牙服务。

这个不是很懂,期待回答中。
JarodYv 2009-04-14
  • 打赏
  • 举报
回复
根据你类出的程序的分层,你把Control去掉,合并到View是没问题的,这要改动得当,一般是不会影响到效率的。如果修改前后有很大的效率的差异,很可能是你重构后的代码结构有问题,特别是线程上出现的问题。

至于到真机上无法使用,情况就很多,首先确定设备本身没有问题。然后检测蓝牙连接部分的代码。可能代码中写死了UUID或者蓝牙服务。
zwtchy123 2009-04-14
  • 打赏
  • 举报
回复
uping
Sodino 2009-04-14
  • 打赏
  • 举报
回复
这个不大懂,正在学习蓝牙中,帮顶一下....
愤怒的大闸蟹 2009-04-14
  • 打赏
  • 举报
回复
不用以PC运行结果来衡量,手机跟PC机差别是很大的。我以前做了好几个项目,代码用JBuilder运行起来很慢很慢,放到手机上速度确是正常的,所以,做手机应用要一切以手机为准。
mikaxing 2009-04-14
  • 打赏
  • 举报
回复
这位朋友还在不 如果可以加我Q 357305985 好吗 有事想问
hcz883867 2009-04-13
  • 打赏
  • 举报
回复
还有...这个为什么不能真机使用...真机蓝牙对战的实现和这个不同?安装上去了就是不能联起来...

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧