J2ME实验报告Word文件下载.docx
《J2ME实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《J2ME实验报告Word文件下载.docx(29页珍藏版)》请在冰豆网上搜索。
3.源程序:
部分:
publicclassMyMIDletextendsMIDlet{
privateFormform;
privatefinalCommandcmdExit=newCommand("
Exit"
Command.EXIT,1);
privatechar[]charArray={
'
T'
'
h'
i'
s'
'
m'
y'
f'
r'
t'
J'
2'
M'
E'
p'
o'
g'
a'
.'
\n'
W'
e'
l'
c'
!
'
};
publicMyMIDlet(){
//TODOAuto-generatedconstructorstub
form=newForm("
HelloMyJ2ME"
);
StringBufferstrBuf=newStringBuffer();
for(inti=0;
i<
charArray.length;
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(){
protectedvoiddestroyApp(booleanarg0){
}
4.运行截图:
有图形的JavaMe应用
2010/10/21地点:
一.实验设备:
一台计算机。
二.实验目的:
实现一个关于高级图形用户界面的示例。
了解Display类、Displayable类和它们的实现方法;
掌握TextBox组件、List组件和它们的实现方法;
掌握Form及其Item和抽象命令事件。
三.实验内容及方法:
编写一个显示图形界面程序,在eclipse上运行,通过UI表现给用户。
将原图形的矩形改为正方形,将三角形改为直角三角形,并且对颜色相应改变。
四.实验过程:
①.分析实验需求,搜集相关的资料
②.编写程序,修改相应代码
③.在eclipse上面运行调试.输出结果
④.整理实验报告
部分
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:
}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;
menu.length;
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);
退出"
getWidth(),getHeight(),Graphics.RIGHT|Graphics.BOTTOM);
break;
caseLINE:
//直线的绘制
g.setColor(0xcdaba);
g.drawLine(140,80,140,20);
返回"
caseRECT:
//正方形的绘制和填充
g.setColor(0xaaaaaa);
g.drawRect(900,100,100,100);
g.setColor(0xbbbcdd);
g.fillRect(91,101,98,98);
caseTRIANGLE:
//直角三角形的绘制
g.setColor(0xdaaacb);
g.fillTriangle(100,40,40,40,100,100);
publicvoidrun(){
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编写游戏进一步提高。
开发简单的贪吃蛇游戏,正确运用各种类,编写程序,并且运行。
①.理解贪吃蛇的游戏原理编写输入贪吃蛇程序
②.编写输入贪吃蛇程序实验游戏
③.上机输入和调试自己所编的程序;
④.整理出实验报告。
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<
snakeNum;
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);
//绘制蛇身
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;
caseDIRECTION_LEFT:
snake[0][0]=snake[0][0]-SNAKEWIDTH;
caseDIRECTION_RIGHT:
snake[0][0]=snake[0][0]+SNAKEWIDTH;
*吃掉食物,自身增长
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))
booleanb=true;
if(foodX==snake[i][0]&
snake[i][1]==foodY){
b=false;
*判断游戏是否结束
*结束条件:
*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;
if(snake[0][0]==snake[i][0]
&
snake[0][1]==snake[i][1]){
}
returnfalse;
*事件处理
publicvoidkeyPressed(intkeyCode){
intaction=this.getGameAction(keyCode);
//改变方向
switch(action){
caseUP:
if(direction!
=DIRECTION_DOWN){
direction=DIRECTION_UP;
caseDOWN:
=DIRECTION_UP){
direction=DIRECTION_DOWN;
caseLEFT:
=DIRECTION_RIGHT){
direction=DIRECTION_LEFT;
caseRIGHT:
=DIRECTION_LEFT){
direction=DIRECTION_RIGHT;
caseFIRE:
//暂停和继续
isPaused=!
isPaused;
*线程方法
*使用精确延时
publicvoidrun(){
try{
while(isRun){
//开始时间
longstart=System.currentTimeMillis();
if(!
isPaused){
//吃食物
eatFood();
//移动
move(direction);
//结束游戏
if(isGameOver()){
//控制闪烁
b=!
b;
//重新绘制
repaint();
longend=System.currentTimeMillis();
//延时
if(end-start<
SLEEP_TIME){
Thread.sleep(SLEEP_TIME-(end-start));
}catch(Exceptione){}
(1)开始运行,蛇爬行,食物闪
(2)蛇头超出边界,游戏结束
(3)蛇身与食物重合,蛇吃掉食物,蛇身变长(4)蛇头碰到自身,游戏结束
(5)按确定键,游戏暂停,再按,游戏继续
2010/10/28地点:
8—209
一.实验设备:
一台计算机.
修改一个开发出来的JavaME聊天工具,增添其功能。
了解GCF通用连接方法,熟悉JavaME通讯方式,熟悉掌握LogForm类、HallList类和ChatForm类。
将已经编号的实验成寻导入到eclipse,运行。
查看其源代码,并进行修改。
使其在登录的时候能够提供记住当前密码的选项。
运行修改后的程序。
①.导入已经开发好的聊天工具程序
②.读聊天程序,并进行修改:
在登录项里面添加一个“记住密码“项。
③.调试运行程序。
publicLogForm(String