读书人

一个简单算法

发布时间: 2012-02-10 21:27:42 作者: rapoo

请教大家一个简单算法
问题是这样的显示5个图片在屏幕上

34

25

1

当按下右键变成这样:(继续按左键就以此类推逆时针转)

45

31

2

按下左键变成这样:(继续按左键就以此类推顺时针转)
23

14

5


我的方法感觉比较笨重:

switch(listIndex){
case 0:
g.drawImage(0, 8, 100, Graphics.TOP | Graphics.LEFT);
g.drawImage(1, 8, 100, Graphics.TOP | Graphics.LEFT);
g.drawImage(2, 16, 80, Graphics.TOP | Graphics.LEFT);
g.drawImage(3, 120, 80, Graphics.TOP | Graphics.LEFT);
g.drawImage(4, 128, 100, Graphics.TOP | Graphics.LEFT);
break;
case 1:
g.drawImage(1, 8, 100, Graphics.TOP | Graphics.LEFT);
g.drawImage(2, 8, 100, Graphics.TOP | Graphics.LEFT);
g.drawImage(3, 16, 80, Graphics.TOP | Graphics.LEFT);
g.drawImage(4, 120, 80, Graphics.TOP | Graphics.LEFT);
g.drawImage(0, 128, 100, Graphics.TOP | Graphics.LEFT);
break;
case 2:g.drawImage(2, 8, 100, Graphics.TOP | Graphics.LEFT);
g.drawImage(3, 8, 100, Graphics.TOP | Graphics.LEFT);
g.drawImage(4, 16, 80, Graphics.TOP | Graphics.LEFT);
g.drawImage(0, 120, 80, Graphics.TOP | Graphics.LEFT);
g.drawImage(1, 128, 100, Graphics.TOP | Graphics.LEFT);
break;
case 3:g.drawImage(3, 8, 100, Graphics.TOP | Graphics.LEFT);

g.drawImage(4, 8, 100, Graphics.TOP | Graphics.LEFT);
g.drawImage(0, 16, 80, Graphics.TOP | Graphics.LEFT);
g.drawImage(1, 120, 80, Graphics.TOP | Graphics.LEFT);
g.drawImage(2, 128, 100, Graphics.TOP | Graphics.LEFT);
break;
case 4:g.drawImage(4, 8, 100, Graphics.TOP | Graphics.LEFT);

g.drawImage(0, 8, 100, Graphics.TOP | Graphics.LEFT);
g.drawImage(1, 16, 80, Graphics.TOP | Graphics.LEFT);
g.drawImage(2, 120, 80, Graphics.TOP | Graphics.LEFT);
g.drawImage(3, 128, 100, Graphics.TOP | Graphics.LEFT);
break;
}

按键改变listIndex的值

有没有简单点的算法呢!

[解决办法]
说一下我个人的看法.

如果图片比较少,这种方法是最简单直观的了.
如果拓展到N多图片,那么最好把图片们都放入一个数组中.好比images[].
设置一个偏移量d = 0;
g.drawImage(image[(0 + d) % n], 8, 100, Graphics.TOP | Graphics.LEFT);


g.drawImage(image[(1 + d) % n], 8, 100, Graphics.TOP | Graphics.LEFT);
g.drawImage(image[(2 + d) % n], 16, 80, Graphics.TOP | Graphics.LEFT);
g.drawImage(image[(3 + d) % n], 120, 80, Graphics.TOP | Graphics.LEFT);
......
......
......
g.drawImage(image[(n-1 + d) % n], 128, 100, Graphics.TOP | Graphics.LEFT);

按左右键分别对应d++,d--就OK了.

读书人网 >J2ME开发

热点推荐