使用NetBeans进行J2ME开发三低级图形用户界面CanvasWord下载.docx

上传人:b****4 文档编号:18461790 上传时间:2022-12-16 格式:DOCX 页数:15 大小:600.67KB
下载 相关 举报
使用NetBeans进行J2ME开发三低级图形用户界面CanvasWord下载.docx_第1页
第1页 / 共15页
使用NetBeans进行J2ME开发三低级图形用户界面CanvasWord下载.docx_第2页
第2页 / 共15页
使用NetBeans进行J2ME开发三低级图形用户界面CanvasWord下载.docx_第3页
第3页 / 共15页
使用NetBeans进行J2ME开发三低级图形用户界面CanvasWord下载.docx_第4页
第4页 / 共15页
使用NetBeans进行J2ME开发三低级图形用户界面CanvasWord下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

使用NetBeans进行J2ME开发三低级图形用户界面CanvasWord下载.docx

《使用NetBeans进行J2ME开发三低级图形用户界面CanvasWord下载.docx》由会员分享,可在线阅读,更多相关《使用NetBeans进行J2ME开发三低级图形用户界面CanvasWord下载.docx(15页珍藏版)》请在冰豆网上搜索。

使用NetBeans进行J2ME开发三低级图形用户界面CanvasWord下载.docx

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模板 > 其它模板

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

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