使用NetBeans进行J2ME开发三低级图形用户界面CanvasWord下载.docx
- 文档编号:18461790
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:15
- 大小:600.67KB
使用NetBeans进行J2ME开发三低级图形用户界面CanvasWord下载.docx
《使用NetBeans进行J2ME开发三低级图形用户界面CanvasWord下载.docx》由会员分享,可在线阅读,更多相关《使用NetBeans进行J2ME开发三低级图形用户界面CanvasWord下载.docx(15页珍藏版)》请在冰豆网上搜索。
g.setColor(color);
17.
18.
19.
publicvoidpaint(Graphicsg){
20.
//清除背景
21.
clearBackground(g);
22.
23.
//显示可供绘图的区域的大小
24.
g.drawString("
宽度:
"
10,10,Graphics.LEFT|Graphics.TOP);
25.
g.drawString(String.valueOf(getWidth()),50,10,Graphics.LEFT|Graphics.TOP);
26.
高度:
10,25,Graphics.LEFT|Graphics.TOP);
27.
g.drawString(String.valueOf(getHeight()),50,25,Graphics.LEFT|Graphics.TOP);
28.
29.
30.}
复制代码
第二个类当然就是我们的Midlet了,因为它是主程序嘛。
在程序启动的时候调用display.setCurrent将画布设置为主界面,同时设置事件监听器。
代码比较简单,如下:
3.importjavax.microedition.midlet.*;
4.importjavax.microedition.lcdui.*;
6.publicclassCanvasTestextendsMIDlet{
privateCanvascanvas=newMyCanvas();
privateDisplaydisplay=null;
privateCommandexitCommand=newCommand("
退出"
Command.EXIT,1);
publicvoidstartApp(){
if(display==null){
display=Display.getDisplay(this);
canvas.addCommand(exitCommand);
canvas.setCommandListener(newMyCommandListener(this,canvas));
display.setCurrent(canvas);
}
publicvoidpauseApp(){
publicvoiddestroyApp(booleanunconditional){
25.}
第三个类当然是我们的事件监听器类了,等一下我们会讲到,Canvas支持许多低级事件,比如键盘的按键事件,所以我们这里把事件监听器单独抽取出来,代码如下:
3.importjavax.microedition.lcdui.CommandListener;
4.importjavax.microedition.lcdui.Command;
5.importjavax.microedition.lcdui.Displayable;
6.importjavax.microedition.lcdui.Canvas;
7.
8.publicclassMyCommandListenerimplementsCommandListener{
privateCanvasTestapp;
privateCanvascanvas;
/***//**CreatesanewinstanceofMyCommandListener*/
publicMyCommandListener(CanvasTestapp,Canvascanvas){
this.app=app;
this.canvas=canvas;
publicvoidcommandAction(Commandcmd,Displayabledisplayable){
if(cmd.getLabel().equalsIgnoreCase("
)){
app.destroyApp(false);
app.notifyDestroyed();
26.}
下面是运行效果:
知道了画图区域的大小,同时又知道Canvas可以支持许多低级事件,我们就可以发挥我们自己的想象力创建一个小游戏了。
下面,我将写一个简单的拼图游戏,只需要使用上下左右四个方向键操作即可,在事件监听器中,我们只需响应Canvas的keyPressed()事件即可。
代码也不复杂,只需把上面的程序稍加扩展即可。
当然,我们还需要准备一些图片当素材。
首先,在网上随便找一张图片,使用图形编辑软件调整图片的大小,然后再裁成3*4共12幅图象。
把这12幅图象分别命名为1.png到12.png,同时还要准备一张全白的图片,命名为0.png,这张图片和前面的12张图片一样大小。
在项目所在的文件夹下建立一个文件夹,取名为pictures,把这些图片都拷贝进去。
在NetBeansIDE左边的文件选项卡中可以看到这些文件,如图:
但是,在生成项目的时候,这些文件并不会自动打包到项目中,我们必须将这个文件夹捆绑为该项目的资源。
在项目上点右键,在弹出的菜单中选择属性,弹出如下对话框,选中左边的“库和资源”,在右边点击“添加文件夹”按钮即可:
下面是我的MyCanvas类的全部代码,其它两个类的代码没有改变。
在这里,我使用的图片是174*280的大小,切割后的小图片每一个都是58*70的大小,空白的图片也是58*70的大小。
请看代码:
5.importjavax.microedition.lcdui.Image;
6.importjava.util.Random;
8.publicclassMyCanvasextendsCanvas{
publicint[][]pics=newint[4][4];
publicImage[]images=newImage[13];
publicintstep=0;
publicintspaceX=3;
publicintspaceY=0;
publicintspaceValue=0;
//随机填充数组
for(inti=0;
i<
4;
i++){
for(intj=0;
j<
3;
j++){
pics[i][j]=i*3+j+1;
}
pics[0][3]=0;
Randomrand=newRandom();
i<
i++){
intx1=rand.nextInt(3);
inty1=rand.nextInt(4);
30.
intx2=rand.nextInt(3);
31.
inty2=rand.nextInt(4);
32.
intn=pics[y1][x1];
33.
pics[y1][x1]=pics[y2][x2];
34.
pics[y2][x2]=n;
35.
36.
37.
//载入图片
38.
13;
39.
try{
40.
images[i]=Image.createImage("
/"
+String.valueOf(i)+"
.png"
);
41.
}catch(Exceptione){
42.
//不做处理
43.
44.
45.
46.
47.
48.
49.
g.setColor(0xcccccc);
50.
51.
52.
53.
54.
55.
56.
57.
58.
//绘制网格
59.
g.setColor(0x000000);
60.
g.drawRect(1,3,236,284);
61.
g.drawLine(1,74,237,74);
62.
g.drawLine(1,145,178,145);
63.
g.drawLine(1,216,178,216);
64.
g.drawLine(60,3,60,287);
65.
g.drawLine(119,3,119,287);
66.
g.drawLine(178,3,178,287);
67.
68.
//根据pics数组和images数组的内容绘图到网格中
69.
70.
j<
j++){
71.
g.drawImage(images[pics[i][j]],j*59+2,i*71+4,Graphics.TOP|Graphics.LEFT);
72.
73.
74.
g.drawImage(images[pics[0][3]],179,4,Graphics.TOP|Graphics.LEFT);
75.
76.
//绘制所用的步骤
77.
步数:
182,140,Graphics.TOP|Graphics.LEFT);
78.
79.
g.fillRect(182,158,50,18);
80.
g.setColor(0xff0000);
81.
g.drawString(String.valueOf(step),187,160,Graphics.TOP|Graphics.LEFT);
82.
83.
84.
85.
publicvoidkeyPressed(intkeyCode){
86.
switch(getGameAction(keyCode)){
87.
caseRIGHT:
88.
right();
89.
break;
90.
caseLEFT:
91.
left();
92.
93.
caseUP:
94.
up();
95.
96.
caseDOWN:
97.
down();
98.
99.
100.
repaint();
101.
102.
103.
publicvoidup(){
104.
if(spaceY<
3){
105.
pics[spaceY][spaceX]=pics[spaceY+1][spaceX];
106.
pics[spaceY+1][spaceX]=0;
107.
spaceY++;
108.
step++;
109.
110.
111.
112.
publicvoiddown(){
113.
if(spaceY>
0){
114.
pics[spaceY][spaceX]=pics[spaceY-1][spaceX];
115.
pics[spaceY-1][spaceX]=0;
116.
spaceY--;
117.
118.
119.
120.
121.
122.
publicvoidleft(){
123.
intrightLimit=2;
124.
if(spaceY==0){
125.
rightLimit=3;
126.
127.
if(spaceX<
rightLimit){
128.
pics[spaceY][spaceX]=pics[spaceY][spaceX+1];
129.
pics[spaceY][spaceX+1]=0;
130.
spaceX++;
131.
132.
133.
134.
135.
136.
publicvoidright(){
137.
if(spaceX>
0){
138.
pics[spaceY][spaceX]=pics[spaceY][spaceX-1];
139.
pics[spaceY][spaceX-1]=0;
140.
spaceX--;
141.
142.
143.
144.
}
145.}
运行项目,得到如下的效果,使用上下左右四个键可以移动图片:
游戏过程中的截图:
游戏完成后的截图:
当然,大家也可以自己添加拼图完成后的判断代码,在拼图成功后自动弹出提示信息。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 使用 NetBeans 进行 J2ME 开发 低级 图形 用户界面 Canvas