j2me笑话浏览实验报告Word文件下载.docx
《j2me笑话浏览实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《j2me笑话浏览实验报告Word文件下载.docx(47页珍藏版)》请在冰豆网上搜索。
![j2me笑话浏览实验报告Word文件下载.docx](https://file1.bdocx.com/fileroot1/2023-2/3/e4f34aef-c6d1-44b0-a52d-4d0380348ab7/e4f34aef-c6d1-44b0-a52d-4d0380348ab71.gif)
设置阅读模式界面类
3.2任务2:
完成接口com.ldci.game.Frame.Scene
3.2.1任务目的
(1)掌握接口使用法
(2)声明场景类中用到的方法,供场景类实现
3.2.2任务描述
在com.ldci.game.Frame包中的Scene接口里声明方法
//声明方法
publicvoidpaint(Graphicsg);
publicvoidkeyPressed(intkeyCode);
publicvoidkeyReleased(intkeyCode);
publicvoidlogic();
3.3任务3:
完成主Canvas界面类com.ldci.game.Frame.Main
3.3.1任务目的
(1)掌握静态对象调用方法
(2)掌握状态调用的原理
(3)实现Canvas界面类
3.3.2实现代码
packagecom.ldci.game.Frame;
importjavax.microedition.lcdui.Canvas;
importjavax.microedition.lcdui.Graphics;
importcom.ldci.game.state.Menu;
publicclassMainextendsCanvasimplementsRunnable{
//定义一个静态Scene对象sceneState调用状态
publicstaticScenesceneState=null;
//状态设置
publicstaticMaincanvas=null;
//canvas对象
Threadt=null;
publicMain(){
try{
canvas=this;
//本类对象
this.setFullScreenMode(true);
//设置全屏
//创建Menu类对象
Menumenu=newMenu();
//menu设置成当前界面
sceneState=menu;
t=newThread(this);
t.start();
}catch(Exceptione){
e.printStackTrace();
}
}
protectedvoidpaint(Graphicsg){
//通过sceneState显示当前状态里的paint()方法
sceneState.paint(g);
protectedvoidkeyPressed(intkeyCode){
//通过sceneState调用当前显示状态的keyPressed方法
sceneState.keyPressed(keyCode);
protectedvoidkeyReleased(intkeyCode){
//通过sceneState调用当前显示状态的keyReleased方法
sceneState.keyReleased(keyCode);
publicvoidlogic(){
//调用当前显示状态的logic方法
sceneState.logic();
publicvoidrun(){
while(true){
logic();
Thread.sleep(100);
repaint();
}
}
3.4任务4:
完成常用量类mon.Const
3.4.2任务目的
(1)掌握Const类使用
(2)定义屏幕分辨率的宽度
(3)申明按键值,按照机型的键值定义
(4)声明字体设置,把项目中所要用到的字体定义,高度通过定义字体来获得
(5)申明图片路径
(6)申明菜单状态
3.4.1实现代码
packagemon;
importjava.io.ByteArrayInputStream;
importjava.io.ByteArrayOutputStream;
importjava.io.DataInputStream;
importjava.io.IOException;
importjava.io.InputStream;
importjava.util.Vector;
importjavax.microedition.lcdui.Font;
importcom.ldci.game.midlet.Midlet;
publicclassConst{
/**
*屏幕分辨率
*/
publicstaticfinalintscreenWidth=240;
//屏幕宽度
publicstaticfinalintscreenHeight=310;
//屏幕高度
*按键键值
publicstaticfinalintKEY_UP=-1;
//方向键上键
publicstaticfinalintKEY_DOWN=-2;
//方向键下键
publicstaticfinalintKEY_LEFT=-3;
//方向键左键
publicstaticfinalintKEY_RIGHT=-4;
//方向键右键
publicstaticfinalintKEY_OK=-5;
//中间键
publicstaticfinalintKEY_SOFT_LEFT=-6;
//左软键
publicstaticfinalintKEY_SOFT_RIGHT=-7;
//右软键
*字体设置
//定义小系统字体
publicstaticFontsmallFont=Font.getFont(Font.FACE_SYSTEM,Font.STYLE_PLAIN,Font.SIZE_SMALL);
publicstaticintfontHeight=smallFont.getHeight();
publicstaticintspace=10;
/**
*菜单状态
publicstaticfinalintSTATE_MENU=6;
publicstaticfinalintSTATE_READ=0;
publicstaticfinalintSTATE_SEARCH=1;
publicstaticfinalintSTATE_OPTION=2;
publicstaticfinalintSTATE_HELP=3;
publicstaticfinalintSTATE_ABOUT=4;
publicstaticfinalintSTATE_EXIT=5;
*图片路径数组
*/
publicstaticString[]resource={
"
/beijing1.png"
//0
/beijing2.png"
//1
/beijing3.png"
//2
/beijing4.png"
//3
/xiaohua.png"
//4
/read.png"
//5
/sousuo.png"
//6
/option.png"
//7
/help.png"
//8
/about.png"
//9
/exit.png"
//10
/arrowUp.png"
//11
/arrowDown.png"
//12
/arrowLeft.png"
//13
/arrowRight.png"
//14
};
*菜单文字数组
publicstaticString[]menuStr={
阅读"
搜索"
设置"
*阅读笑话类型文字数组
publicstaticString[]readTypeStr={
名人"
"
幽默"
动物"
*阅读模式文字数组
publicstaticString[]readModeStr={
白天模式"
夜晚模式"
3.5任务5:
完成常用方法mon.GameCommon
3.5.1任务目的
(1)GameCommon类属于工具类,掌握其使用
(2)类中有清屏方法、读取文本数据方法(加载笑话文本)、文本换行方法、画左右软键的方法。
3.5.2实现代码
importcom.ldci.game.Frame.Main;
importcom.ldci.game.state.Option;
publicclassGameCommon{
*清屏
publicstaticvoidclean(Graphicsg){
g.setColor(0xffffff);
g.fillRect(0,0,Const.screenWidth,Const.screenHeight);
*加载笑话文本
publicstaticString[]loadText(){
String[]result=newString[8];
InputStreamis=null;
try{
is=Midlet.instance.getClass().getResourceAsStream("
/xiaohua.txt"
);
//readLine(is);
for(inti=0;
i<
result.length;
i++){
result[i]=readLine(is);
//System.out.println("
Index["
+i+"
]:
"
+result[i]);
}catch(Exceptione){
System.out.println("
thereisaerrorwhenloadtext:
+e.toString());
}finally{
try{
is.close();
is=null;
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
returnresult;
publicstaticStringreadLine(InputStreamis)throwsIOException{
byte[]data;
Stringstr;
intb;
ByteArrayOutputStreambaos;
baos=newByteArrayOutputStream();
b=0;
while((b=is.read())!
=-1){
if(b==10){
break;
if(b!
=13){
baos.write(b);
baos.close();
data=baos.toByteArray();
if(data.length>
0){
str=convertFromUTF8(data);
elseif(b!
str="
;
else{
str=null;
baos=null;
returnstr;
catch(Exceptione){
return"
x"
publicstaticStringconvertFromUTF8(byte[]data){
if(data==null){
returnnull;
intlen=data.length;
byte[]newdata=newbyte[len+2];
newdata[0]=(byte)(len>
>
8);
newdata[1]=(byte)len;
System.arraycopy(data,0,newdata,2,len);
ByteArrayInputStreambis=newByteArrayInputStream(newdata);
DataInputStreamdis=newDataInputStream(bis);
returndis.readUTF();
returnnull;
/**
*文本换行
*/
publicstaticfinalString[]changeToArrayCn(Stringstr,Fontfont,intwidth){
intnowWidth=0;
Vectorresult=newVector();
StringBufferbuffer=newStringBuffer();
for(inti=0;
str.length();
i++){
charch=str.charAt(i);
intchWidth=font.charWidth(ch);
if(ch=='
['
||ch=='
]'
~'
^'
\r'
)
chWidth=0;
||ch=='
|'
){
result.addElement(buffer.toString());
buffer=newStringBuffer();
nowWidth=0;
continue;
}
nowWidth+=chWidth;
if(nowWidth>
=width){
if(!
isSign(ch)){
result.addElement(buffer.toString());
buffer=newStringBuffer();
nowWidth=chWidth;
buffer.append(ch);
if(buffer.length()>
0)
result.addElement(buffer.toString());
String[]s=newString[result.size()];
s.length;
s[i]=(String)result.elementAt(i);
if(s[i].charAt(0)=='
\n'
s[i]=s[i].substring
(1);
//System.out.println(i+"
:
+s[i]);
returns;
privatestaticfinalchar[]SIGN_ALL={'
'
'
'
.'
?
!
'
//English
'
\uFF0C'
\u3002'
\uFF1F'
\uFF01'
\uFF1B'
\u3001'
//Chinese
privatestaticfinalbooleanisSign(charch){
for(inti=SIGN_ALL.length-1;
i>
=0;
i--){
if(ch==SIGN_ALL[i]){
returntrue;
returnfalse;
/*
*画左右软键
publicstaticvoiddrawSoftButton(Graphicsg,Stringlstr,Stringrstr){
if(Menu.menuIndex==Const.STATE_READ&
&
Option.isReadMode==true){
}else{
g.setColor(0);
if(lstr!
=null){
g.drawString(lstr,0,Const.screenHeight,Graphics.LEFT|Graphics.BOTTOM);
if(rstr!
=null)
{
g.drawString(rstr,Const.screenWidth,Const.screenHeight,Graphics.RIGHT|Graphics.BOTTOM);
3.6任务6:
完成菜单界面类com.ldic.game.state.Menu
3.6.1任务目的
(1)掌握Graphics画笔的使用
(2)掌握按键的处理方法
(3)Menu类里的paint()方法中,画背景,先清屏然后绘制背景图片
(4)Menu类里的paint()方法中添加绘制菜单
(5)Menu类里的keypressed()方法中增加按键选择菜单功能,处理向上按键的功能
(6)Menu类里的keyPressed()方法中增加按键选择菜单功能,处理向下按键的功能
(7)Menu类里的keyPressed()方法中增加按键选择菜单功能,处理中间键、左软键的功能
(8)Menu类里的keypressed()方法中增加按键退出程序功能,处理右软键
4.6.2实现代码
*清屏并绘制背景图片
packagecom.ldci.game.state;
importjavax.microedition.lcdui.Image;
importcom.ldci.game.Frame.Scene;
importmon.Const;
importmon.GameCommon;
importcom.ldci.game.midlet.Mid