使用Netbeans6.1创建项目,如何创建这里就不再赘述了。
1.结构设计与系统框图:(应用UML建模创建类视图)
本游戏的操作流程分为如下几步:
(1).用户启动MIDlet后,首先进入Master/Slave选择画面,如选择Slave,则向周围广播自己的服务,然后等待;如是Master,则搜索周围的服务。Master端在搜索到服务后,将Slave端的服务描述信息现实在屏幕上。
(2).Master选择想联机游戏的Slave(广播服务可以是多个),建立连接。
(3).按“开始”键,判断远端的玩家是否已经同意开始游戏(此时进入等待状态),如没有同意,则继续等待,并发送“等待”信号给远端玩家。
(4).按“开始”键,如远端玩家已经“等待”,则“初始化”游戏,同时发送该信号给远端玩家。
(5).开始游戏后,再按“开始”键,则暂停或游戏状态之间互相切换。
(6).如受到对方游戏结束信号,则主屏上显示胜利画面,副屏上显示失败画面,如自己失败,则主屏上显示失败画面,副屏上显示胜利画面,并发送该信号给远端玩家。
(7).如远端玩家退出或断开,则本地游戏玩家继续,代表远端玩家的状态值为退出或失去连接,并停止发送数据。
2.主程序模块MainMIDlet类
源代码如下所示:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package game.teris;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import javax.bluetooth.*;
import game.bluetooth.*;
/**
*
* @author dongdong
*/
public class MainMIDlet extends MIDlet implements Commandlistener {
private Display display;
private BluetoothDiscovery disc;
private TetrisCanvas canvas;
private MasterSlaveSelect select;
public MainMIDlet(){//构造函数实现如下功能:
//1.通过引用display得到Display类对象;
//2.使用ErrorScreen的静态方法init(Image img,Display disp)进行参数初始化;
//3.构造BluetoothDiscovery类对象disc;
display=Display.getDisplay(this);
ErrorScreen.init(null,display);
disc=new BluetoothDiscovery(display);
}
public void startApp(){//startApp()方法实现如下功能:
//1.调用name=LocalDevice.getLocalDevice.getFriendlyName()得到本地设备;
//2.设置disc的UUID值和name;
//3.调用startUI()方法进行角色选择换面;
String name;
try{
name=LocalDevice.getLocalDevice().getFriendlyName();
}
catch(BluetoothStateException e){
showAlertandexit("","请切换蓝牙设备!",AlertType.ERROR);
return;
}
disc.setServiceUUID("20000000000010008000006057028C19");
disc.setName(name);
startUI();
}
public void startUI(){
//startUI()方法引导玩家进行角色选择画面;
select= new MasterSlaveSelect(this);
display.setCurrent(select);
}
public void pauseApp(){
}
public void destoryApp(boolean unconditional){
}
public void showAlertAndExit(String t, String s, AlertType type ){
//该方法构造一个Alert对象,标题为t,警告文本为s,警告类型为type,实现如下:
Alert a=new Alert(t,s,null,type);
a.addCommand(new Command("退出", Command.EXIT, 1));
a.setCommandListener(this);
display.setCurrent(a);
}
public void Exit(){/*该方法调用destoryApp(boolean unconditional)和
notifyDestroyed()方法退出程序*/
destroyApp(false);
notifyDestroyd();
}
public void commandAction(Command c,Displayable s){
/*该方法为commandListener接口定义的方法,进行按键响应,如c的命令类型
为Command.EXIT测退出*/
switch(c.getCommandType())
{
case Command.EXIT:
Exit();
break;
}
}
public Display getDisplay(){
//getDisplay()方法返回Display类对象的引用display;
return display;
}
public BluetoothDiscovery getDisc(){
//getDisc()方法返回BluetoothDiscovery类对象的引用disc;
return disc;
}
public void setCanvas(TetrisCanvas _canvas){
//该方法设置canvas为Tetriscanvas的引用;
canvas=_canvas;
}
public TetrisCanvas getCanvas(){
//返回TetrisCanvas类型的引用;
return canvas;
}
}
未完待续。。。
分享到:
相关推荐
J2ME 入门、俄罗斯方块、 欢迎交流,
俄罗斯方块源程序俄罗斯方块源程序俄罗斯方块源程序俄罗斯方块源程序俄罗斯方块源程序俄罗斯方块源程序俄罗斯方块源程序俄罗斯方块源程序俄罗斯方块源程序俄罗斯方块源程序俄罗斯方块源程序
J2me课程设计:俄罗斯方块(内附源码和设计报告)
J2ME手机游戏源码_俄罗斯方块
第一次运行JB2006开如J2ME时出现 ALERT: java/lang/ClassFormatError: Bad version information.错误 点“启动”就会出错 我现在找到了答案 请你们下去看
简单的源代码,自己试试看看吧!!MIDP1.0的,
/* * 一个简单的俄罗斯方块游戏代码,代码中主要包含3个类: *TerrisMIDlet——MIDlet类 *GameCanvas——游戏界面类 *GameEngine——游戏逻辑类 *已经使用WTK2.5.2运行通过. */
J2ME蓝牙实战入门J2ME蓝牙实战入门J2ME蓝牙实战入门J2ME蓝牙实战入门J2ME蓝牙实战入门J2ME蓝牙实战入门J2ME蓝牙实战入门J2ME蓝牙实战入门J2ME蓝牙实战入门J2ME蓝牙实战入门J2ME蓝牙实战入门J2ME蓝牙实战入门J2ME蓝牙...
俄罗斯方块俄罗斯方块俄罗斯方块俄罗斯方块俄罗斯方块俄罗斯方块俄罗斯方块俄罗斯方块俄罗斯方块俄罗斯方块俄罗斯方块
完整的俄罗斯方块游戏,带源码!很容易扩展游戏中方块形状!
J2me 俄罗斯方块游戏 源程序 java J2me 俄罗斯方块游戏 源程序 java J2me 俄罗斯方块游戏 源程序 java
本文给出了一个基于MIDP1.0的俄罗斯方块游戏的设计方案,并给出全部实现源代码。利用J2ME语言编程的思想来完成系统的设计,然后编写出程序设计代码进行界面设计,实现友好的界面交互,具有清晰的程序流程图,最后编程...
郭可华J2ME实战教程:ppt和对应源码,非常好的入门材料!
俄罗斯方块手机版代码,在Eclipse下开发完成。 给希望学习j2me的同仁以一点参考!
j2me入门:J2ME程序开发新手入门九大要点
J2ME源码:连连看 看到了就快下载吧,我不希望由于你的没下载而后悔!
俄罗斯方块游戏代码 图片可执行程序 等资源 !!!
该程序是基于07年底写的一个J2ME小游戏 俄罗斯方块,将全部逻辑绘制都放到LUA脚本里来做,J2ME方面仅作一个绘制库来使用!
我编写的 J2ME 版的俄罗斯方块,需要支持 J2ME 的手机或PALM之类的设备。如果你安装了 SUN 的 wireless-toolkit 的话,也可以用 PC 模拟运行