所有道具都是立即作用的,并且每作用一次,该种道具都有3s的冻结时间,冻结期间,该种道具是不可用的。个人游戏时,道具可用数目是规定的,不能在游戏过程中获得道具及道具使用次数。蓝牙对战时,个人道具的控制不变,但对战道具都是在游戏过程中随机获得的,每获得一种道具,该种道具的可用数目就增加一个。
7 实现和测试
7.1 编程环境展示
首先贴出本课题使用的开发环境,如图7.1所示:
7.2 UI模块实现
UI总是任何系统的第一门户,因此设计出良好的UI会极大地增加系统的用户体验,是体现人性化设计的最直接表现。但由于课题时间关系,并没有在UI上下功夫,只是实现了满足功能需求的部分。
UI图如图7.2所示:
加载一张图片的代码如下:
Bitmap bitmap = Bitmap.createBitmap(iconSize, iconSize,
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
d.setBounds(0, 0, iconSize, iconSize);
d.draw(canvas);
icons[key]=bitmap;
7.3 地图生成模块实现
正如前文所述,地图生成模块是可以方便地进行难度和规模控制的,并且每三关一组,地图在规模上增加一行,每关之间图片各类数增加一个。现给出第四关的游戏地图,地图为九行,可以与图7.2作对比。第四关游戏地图如图7.3所示:
难度控制策略如下代码所示。
public void difficultyManage(int gameLevel) {
int a[] = {0, 0, 0, 1, 1, 1, 2, 2, 2}; // 关卡分组辅助数组
refresh = 3 - gameLevel / 6; // 第1~5关道具可用数为3,其它关卡为2
help = refresh; // 同上
totalTime = 100 - a[gameLevel-1] * 10; // 各关卡允许时间控制
leftTime = totalTime;
iconNeeded = 9 + gameLevel; // 第一关加载卡片10张,每关依次加1
yNeeded = 8 + a[gameLevel-1]; // 地图规模控制。
}
关卡之间有人性化提示,主要信息包括输赢状态、所用时间以及三个按钮,从左到右依次为退出、重玩和下一关。如图7.4所示:
图7.4 游戏输赢状态图
7.4 蓝牙对战模块实现
进入蓝牙对战模式后,第一件事情就是要打开蓝牙进行配对。
游戏一开始就检测蓝牙是否打开。
public void onStart() {
super.onStart();
if (!mBluetoothAdapter.isEnabled()) { // 检测蓝牙是否打开
// 如果没有打开蓝牙,则要求打开
Intent enableIntent = new Intent(
BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableIntent, REQUEST_ENABLE_BT);
} else {
// 如果蓝牙已经打开,但没有启动蓝牙服务,则启动之
if (mChatService == null) setupChat();
}
}
之后开始进行蓝牙配对。
public synchronized void connect(BluetoothDevice device) {
if (mState == STATE_CONNECTING) { // 停止一切尝试进行连接的线程
if (mConnectThread != null) {
mConnectThread.cancel();
mConnectThread = null;
}
} Android安卓手机游戏连连看设计(8):http://www.751com.cn/jisuanji/lunwen_3518.html