J2ME实验报告.docx

上传人:b****7 文档编号:9214586 上传时间:2023-02-03 格式:DOCX 页数:29 大小:293.78KB
下载 相关 举报
J2ME实验报告.docx_第1页
第1页 / 共29页
J2ME实验报告.docx_第2页
第2页 / 共29页
J2ME实验报告.docx_第3页
第3页 / 共29页
J2ME实验报告.docx_第4页
第4页 / 共29页
J2ME实验报告.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

J2ME实验报告.docx

《J2ME实验报告.docx》由会员分享,可在线阅读,更多相关《J2ME实验报告.docx(29页珍藏版)》请在冰豆网上搜索。

J2ME实验报告.docx

J2ME实验报告

实验名称:

创建简单的JAVAME应用

时间:

2010/10/18地点:

8-209

一、实验设备:

一台计算机。

二、实验目的:

熟悉使用Eclipse软件;

创建MIDlet项目,检验Eclipse设置;

创建JavaME项目,编辑JavaME元素,并运行与调试改程序,使之得到相应的运行结果。

实验内容及方法:

建立在熟悉MIDlet的条件下。

创建MIDlet项目,然后检验Eclipse的设置,创建JavaME项目。

添加MIDlet到项目,编辑JavaME元素。

最后运行与调试。

三、实验过程:

1.实验步骤

1.创建MIDlet项目。

建立一个继承自Midlet的类MyMIDlet,。

2.检验Eclipse的设置。

选择File—>New—>Project,在弹出的对话框中有一个J2ME选项(如图所示);

从菜单栏中选择Windows—>Preferences命令,在弹出的对话框中同样可以看到J2ME配置的首选项(如下图所示)。

有以上,则表明安装成功

3.创建JavaME项目。

在菜单栏中选择New—>Project命令,选中J2ME—>J2MEMidletSuite—>Next,进入另外向导。

然后输入项目名称,点下一步。

然后进入MidletSuite属性设置对话框,选择“SunJavaWirelessToolkit2.3”。

接下来直接选择默认设置即可。

4.添加MIDlet到项目。

首先找到我们所写的那个MIDlet文件MyMIDlet.java,然后直接复制到MyJ2ME工程文件夹的src文件夹对应的包中即可,刷新后就可以看到添加的MIDlet了。

5.编辑JavaME元素

6.运行与调试。

运行结果如下图所示。

 

2.流程图:

3.源程序:

部分:

publicclassMyMIDletextendsMIDlet{

privateFormform;

privatefinalCommandcmdExit=newCommand("Exit",Command.EXIT,1);

privatechar[]charArray={

'T','h','i','s','','i','s','',

'm','y','','f','i','r','s','t','','J','2','M','E','',

'p','r','o','g','r','a','m','.','\n','W','e','l','c','o','m','e','!

'};

 

publicMyMIDlet(){

//TODOAuto-generatedconstructorstub

form=newForm("HelloMyJ2ME");

StringBufferstrBuf=newStringBuffer();

for(inti=0;i

{

strBuf.append(charArray[i]);

}

form.append(strBuf.toString());

form.addCommand(cmdExit);

form.setCommandListener(newCommandListener(){

publicvoidcommandAction(Commandarg0,Displayablearg1){

//TODOAuto-generatedmethodstub

if(cmdExit==arg0){

notifyDestroyed();

destroyApp(true);

}

}

});

}

protectedvoidstartApp(){

//TODOAuto-generatedmethodstub

Display.getDisplay(this).setCurrent(form);

}

protectedvoidpauseApp(){

//TODOAuto-generatedmethodstub

}

protectedvoiddestroyApp(booleanarg0){

//TODOAuto-generatedmethodstub

}

}

4.运行截图:

实验名称:

有图形的JavaMe应用

时间:

2010/10/21地点:

8-209

 

一.实验设备:

一台计算机。

二.实验目的:

实现一个关于高级图形用户界面的示例。

了解Display类、Displayable类和它们的实现方法;掌握TextBox组件、List组件和它们的实现方法;掌握Form及其Item和抽象命令事件。

三.实验内容及方法:

编写一个显示图形界面程序,在eclipse上运行,通过UI表现给用户。

将原图形的矩形改为正方形,将三角形改为直角三角形,并且对颜色相应改变。

四.实验过程:

1.实验步骤

①.分析实验需求,搜集相关的资料

②.编写程序,修改相应代码

③.在eclipse上面运行调试.输出结果

④.整理实验报告

2.流程图:

3.源程序:

部分

classMyCanvasextendsCanvasimplementsRunnable{

intmenuIndex=0;

String[]menu={"直线","正方形","弧","圆角矩形","直角三角形","图片","文本",""};

publicMyCanvas(){

setFullScreenMode(true);

image=createImage("/image1.png");

newThread(this).start();

}

privateImagecreateImage(Stringpath){

Imageimage=null;

try{

image=Image.createImage(path);

}catch(Exceptione){

e.printStackTrace();

}

returnimage;

}

publicvoidkeyPressed(intkeyCode){

intgameAction=getGameAction(keyCode);

if(gameAction==Canvas.UP){

menuIndex=--menuIndex<0?

menu.length-1:

menuIndex;

}elseif(gameAction==Canvas.DOWN){

menuIndex=++menuIndex>menu.length-1?

0:

menuIndex;

}elseif(gameAction==Canvas.FIRE||keyCode==-6){

state=menuIndex+1;

}elseif(keyCode==-7){

if(state==MENU){

exitApp();

}else{

state=MENU;

}

}

}

protectedvoidpaint(Graphicsg){

//TODOAuto-generatedmethodstub

g.setClip(0,0,getWidth(),getHeight());

g.setColor(0xABCDEF);

g.fillRect(0,0,getWidth(),getHeight());

switch(state){

caseMENU:

for(inti=0;i

if(i==menuIndex){

g.setColor(0);

}else{

g.setColor(0xDDDDDD);

}

g.drawString(menu[i],getWidth()>>1,20+i*20,0x1|0x10);

}

g.setColor(0xff);

g.drawString("进入",0,getHeight(),Graphics.LEFT|Graphics.BOTTOM);

g.drawString("退出",getWidth(),getHeight(),Graphics.RIGHT|Graphics.BOTTOM);

break;

caseLINE:

//直线的绘制

g.setColor(0xcdaba);

g.drawLine(140,80,140,20);

g.setColor(0xff);

g.drawString("返回",getWidth(),getHeight(),Graphics.RIGHT|Graphics.BOTTOM);

break;

caseRECT:

//正方形的绘制和填充

g.setColor(0xaaaaaa);

g.drawRect(900,100,100,100);

g.setColor(0xbbbcdd);

g.fillRect(91,101,98,98);

g.setColor(0xff);

g.drawString("返回",getWidth(),getHeight(),Graphics.RIGHT|Graphics.BOTTOM);

break;

caseTRIANGLE:

//直角三角形的绘制

g.setColor(0xdaaacb);

g.fillTriangle(100,40,40,40,100,100);

g.setColor(0xff);

g.drawString("返回",getWidth(),getHeight(),Graphics.RIGHT|Graphics.BOTTOM);

break;

}

publicvoidrun(){

//TODOAuto-generatedmethodstub

while(true){

longst=System.currentTimeMillis();

repaint();

serviceRepaints();

intet=(int)(System.currentTimeMillis()-st);

if(et<100){

try{

Thread.sleep(100-et);

}catch(Exceptione){

e.printStackTrace();

}

}

 

4.运行截图。

(1)修改前修改后

(2)修改前修改后

(3)修改前修改后

(4)修改前修改后

 

实验名称:

贪吃蛇小游戏

时间:

2010/10/25地点:

8—209

一.实验设备:

一台计算机。

二.实验目的:

了解SnakeCanvas类、SnakeMIDlet类和它们的实现方法;

编写贪吃蛇小游戏;

对eclipse编写游戏进一步提高。

三.实验内容及方法:

开发简单的贪吃蛇游戏,正确运用各种类,编写程序,并且运行。

四.实验过程:

1.实验步骤

①.理解贪吃蛇的游戏原理编写输入贪吃蛇程序

②.编写输入贪吃蛇程序实验游戏

③.上机输入和调试自己所编的程序;

④.整理出实验报告。

2.流程图:

3.源程序:

publicclassSnakeCanvasextendsCanvasimplementsRunnable{

/**存储贪吃蛇节点坐标,其中第二维下标为0的代表x坐标,第二维下标是1的代表y坐标*/

int[][]snake=newint[200][2];

intsnakeNum;/**已经使用的节点数量*/

intdirection;/**贪吃蛇运动方向,0代表向上,1代表向下,2代表向左,3代表向右*/

/*移动方向*/

privatefinalintDIRECTION_UP=0;/**向上*/

privatefinalintDIRECTION_DOWN=1;/**向下*/

privatefinalintDIRECTION_LEFT=2;/**向左*/

privatefinalintDIRECTION_RIGHT=3;/**向右*/

intwidth;/**游戏区域宽度*/

intheight;/**游戏区域高度*/

privatefinalbyteSNAKEWIDTH=4;/**蛇身单元宽度*/

booleanisPaused=false;/**是否处于暂停状态,true代表暂停*/

booleanisRun=true;/**是否处于运行状态,true代表运行*/

privatefinalintSLEEP_TIME=300;/**时间间隔*/

intfoodX;/**食物的X坐标*/

intfoodY;/**食物的Y坐标*/

booleanb=true;/**食物的闪烁控制*/

Randomrandom=newRandom();/**Random对象*/

publicSnakeCanvas(){

init();//初始化

width=this.getWidth();

height=this.getHeight();

newThread(this).start();//启动线程

}

/**

*初始化开始数据

*/

privatevoidinit(){

snakeNum=7;//初始化节点数量

//初始化节点数据

for(inti=0;i

snake[i][0]=100-SNAKEWIDTH*i;

snake[i][1]=40;

}

direction=DIRECTION_RIGHT;//初始化移动方向

//初始化食物坐标

foodX=100;

foodY=100;

}

protectedvoidpaint(Graphicsg){

//清屏

g.setColor(0xffffff);

g.fillRect(0,0,width,height);

g.setColor(0);

//绘制蛇身

for(inti=0;i

g.fillRect(snake[i][0],snake[i][1],SNAKEWIDTH,SNAKEWIDTH);

}

//绘制食物

if(b){

g.fillRect(foodX,foodY,SNAKEWIDTH,SNAKEWIDTH);

}

}

privatevoidmove(intdirection){

//蛇身移动

for(inti=snakeNum-1;i>0;i--){

snake[i][0]=snake[i-1][0];

snake[i][1]=snake[i-1][1];

}

//第一个单元格移动

switch(direction){

caseDIRECTION_UP:

snake[0][1]=snake[0][1]-SNAKEWIDTH;

break;

caseDIRECTION_DOWN:

snake[0][1]=snake[0][1]+SNAKEWIDTH;

break;

caseDIRECTION_LEFT:

snake[0][0]=snake[0][0]-SNAKEWIDTH;

break;

caseDIRECTION_RIGHT:

snake[0][0]=snake[0][0]+SNAKEWIDTH;

break;

}

}

/**

*吃掉食物,自身增长

*/

privatevoideatFood(){

//判别蛇头是否和食物重叠

if(snake[0][0]==foodX&&snake[0][1]==foodY){

snakeNum++;

generateFood();

}

}

/**

*产生食物

*说明:

食物的坐标必须位于屏幕内,且不能和蛇身重合

*/

privatevoidgenerateFood(){

while(true){

foodX=Math.abs(random.nextInt()%(width-SNAKEWIDTH+1))

/SNAKEWIDTH*SNAKEWIDTH;

foodY=Math.abs(random.nextInt()%(height-SNAKEWIDTH+1))

/SNAKEWIDTH*SNAKEWIDTH;

booleanb=true;

for(inti=0;i

if(foodX==snake[i][0]&&snake[i][1]==foodY){

b=false;

break;

}

}

if(b){

break;

}

}

}

/**

*判断游戏是否结束

*结束条件:

*1、蛇头超出边界

*2、蛇头碰到自身

*/

privatebooleanisGameOver(){

//边界判别

if(snake[0][0]<0||snake[0][0]>(width-SNAKEWIDTH)||

snake[0][1]<0||snake[0][1]>(height-SNAKEWIDTH)){

returntrue;

}

//碰到自身

for(inti=4;i

if(snake[0][0]==snake[i][0]

&&snake[0][1]==snake[i][1]){

returntrue;

}

}

returnfalse;

}

/**

*事件处理

*/

publicvoidkeyPressed(intkeyCode){

intaction=this.getGameAction(keyCode);

//改变方向

switch(action){

caseUP:

if(direction!

=DIRECTION_DOWN){

direction=DIRECTION_UP;

}

break;

caseDOWN:

if(direction!

=DIRECTION_UP){

direction=DIRECTION_DOWN;

}

break;

caseLEFT:

if(direction!

=DIRECTION_RIGHT){

direction=DIRECTION_LEFT;

}

break;

caseRIGHT:

if(direction!

=DIRECTION_LEFT){

direction=DIRECTION_RIGHT;

}

break;

caseFIRE:

//暂停和继续

isPaused=!

isPaused;

break;

}

}

/**

*线程方法

*使用精确延时

*/

publicvoidrun(){

try{

while(isRun){

//开始时间

longstart=System.currentTimeMillis();

if(!

isPaused){

//吃食物

eatFood();

//移动

move(direction);

//结束游戏

if(isGameOver()){

break;

}

//控制闪烁

b=!

b;

}

//重新绘制

repaint();

longend=System.currentTimeMillis();

//延时

if(end-start

Thread.sleep(SLEEP_TIME-(end-start));

}

}

}catch(Exceptione){}

}

}

4.运行截图:

(1)开始运行,蛇爬行,食物闪

(2)蛇头超出边界,游戏结束

(3)蛇身与食物重合,蛇吃掉食物,蛇身变长(4)蛇头碰到自身,游戏结束

(5)按确定键,游戏暂停,再按,游戏继续

实验名称:

创建简单的JAVAME应用

时间:

2010/10/28地点:

8—209

一.实验设备:

一台计算机.

二.实验目的:

修改一个开发出来的JavaME聊天工具,增添其功能。

了解GCF通用连接方法,熟悉JavaME通讯方式,熟悉掌握LogForm类、HallList类和ChatForm类。

三.实验内容及方法:

将已经编号的实验成寻导入到eclipse,运行。

查看其源代码,并进行修改。

使其在登录的时候能够提供记住当前密码的选项。

运行修改后的程序。

四.实验过程:

1.实验步骤

①.导入已经开发好的聊天工具程序

②.读聊天程序,并进行修改:

在登录项里面添加一个“记住密码“项。

③.调试运行程序。

2.流程图:

3.源程序:

部分

publicLogForm(String

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1