找回密码
 注册
搜索
免费空间 免费域名 免费AI 老牌主机商首月仅1美分!27美元/年!Spaceship优惠码 Namecheap优惠码阿里云2核2G3M新老续费同享99元/年!
查看: 982|回复: 11

[其它资源] [求助]懂JAVA编程的帮个忙

[复制链接]
发表于 2009-1-21 12:35:18 | 显示全部楼层 |阅读模式
俺手上有一个.java源程序文件,需要转换成.class程序文件,我在网吧因为无法安装jdk,自己搞不定,哪位有空的话帮俺转换一下,谢谢。
  1. package xqwlight;

  2. import javax.microedition.lcdui.Canvas;
  3. import javax.microedition.lcdui.Command;
  4. import javax.microedition.lcdui.CommandListener;
  5. import javax.microedition.lcdui.Display;
  6. import javax.microedition.lcdui.Displayable;
  7. import javax.microedition.lcdui.Font;
  8. import javax.microedition.lcdui.Graphics;
  9. import javax.microedition.lcdui.Image;

  10. public class MainForm extends Canvas
  11.   implements CommandListener
  12. {
  13.   private static final int PHASE_STARTING = 0;
  14.   private static final int PHASE_WAITING = 1;
  15.   private static final int PHASE_THINKING = 2;
  16.   private static final int PHASE_EXITTING = 3;
  17.   private static Image imgBackground;
  18.   private static Image imgThinking;
  19.   private Image imgBoard;
  20.   private static final String[] IMAGE_NAME = {
  21.     0, 0, 0, 0, 0, 0, 0, 0, 0, "rk", "ra", "rb", "rn", "rr", "rc", "rp",
  22.     0, "bk", "ba", "bb", "bn", "br", "bc", "bp" };
  23.   private static int widthBackground;
  24.   private static int heightBackground;
  25.   private static Font font = Font.getFont(0, 3, 16);
  26.   private static int fontWidth = font.charWidth(12288);
  27.   private static int fontHeight = font.getHeight();
  28.   private XQWLight midlet;
  29.   private Search search;
  30.   private int cursorX;
  31.   private int cursorY;
  32.   private int sqSelected;
  33.   private int mvLast;
  34.   private int normalWidth;
  35.   private int normalHeight;
  36.   private volatile int phase;
  37.   private String message;
  38.   private Command cmdRetract;
  39.   private Command cmdBack;
  40.   private boolean bLoaded;
  41.   private Image imgSelected;
  42.   private Image imgSelected2;
  43.   private Image imgCursor;
  44.   private Image imgCursor2;
  45.   private Image[] imgPieces = new Image[24];
  46.   private int squareSize;
  47.   private int squareShift;
  48.   private int width;
  49.   private int height;
  50.   private int left;
  51.   private int right;
  52.   private int top;
  53.   private int bottom;

  54.   static
  55.   {
  56.     try
  57.     {
  58.       imgBackground = Image.createImage("/images/background.png");
  59.       imgThinking = Image.createImage("/images/thinking.png");
  60.     } catch (Exception e) {
  61.       throw new RuntimeException(e.getMessage());
  62.     }
  63.     widthBackground = imgBackground.getWidth();
  64.     heightBackground = imgBackground.getHeight();
  65.   }

  66.   public MainForm(XQWLight midlet)
  67.   {
  68.     this.midlet = midlet;
  69.     this.search = new Search();
  70.     this.search.pos = new Position();

  71.     this.normalWidth = getWidth();
  72.     this.normalHeight = getHeight();
  73.     super.setFullScreenMode(true);

  74.     this.cmdBack = new Command("返回", 2, 1);
  75.     addCommand(this.cmdBack);
  76.     setCommandListener(this);
  77.     this.phase = 0;
  78.     this.bLoaded = false;
  79.   }

  80.   public void reset() {
  81.     super.setFullScreenMode(true);
  82.     this.cursorX = (this.cursorY = 7);
  83.     this.sqSelected = (this.mvLast = 0);
  84.     if (this.midlet.rsData[0] == 0) {
  85.       this.search.pos.fromFen(Position.STARTUP_FEN[this.midlet.handicap]);
  86.     } else {
  87.       this.search.pos.clearBoard();
  88.       for (int sq = 0; sq < 256; ++sq) {
  89.         int pc = this.midlet.rsData[(sq + 2)];
  90.         if (pc > 0)
  91.           this.search.pos.addPiece(sq, pc);
  92.       }

  93.       if (this.midlet.flipped)
  94.         this.search.pos.changeSide();

  95.       this.search.pos.setIrrev();
  96.     }
  97.     this.phase = 0;
  98.   }

  99.   public void commandAction(Command c, Displayable d) {
  100.     if ((((this.phase == 1) || (this.phase == 3))) &&
  101.       (c != this.cmdRetract) &&
  102.       (c == this.cmdBack)) {
  103.       this.midlet.rsData[0] = 0;
  104.       Display.getDisplay(this.midlet).setCurrent(this.midlet.startUp);
  105.     }
  106.   }

  107.   protected void paint(Graphics g)
  108.   {
  109.     int i;
  110.     int j;
  111.     int k;
  112.     if (this.phase == 0) {
  113.       this.phase = 1;

  114.       this.width = getWidth();
  115.       this.height = getHeight();
  116.       for (int i = 0; i < 10; ++i) {
  117.         if (this.width != this.normalWidth) break; if (this.height != this.normalHeight)
  118.           break;

  119.         this.width = getWidth();
  120.         this.height = getHeight();
  121.         try {
  122.           Thread.sleep(100L);
  123.         }
  124.         catch (Exception localException1) {
  125.         }
  126.       }
  127.       if (!(this.bLoaded)) {
  128.         this.bLoaded = true;

  129.         String imagePath = "/images/";
  130.         if ((this.width >= 320) && (this.height >= 356)) {
  131.           imagePath = imagePath + "large/";
  132.           this.squareSize = 36;
  133.           this.squareShift = 2;
  134.         } else if ((this.width >= 232) && (this.height >= 258)) {
  135.           imagePath = imagePath + "medium/";
  136.           this.squareSize = 26;
  137.           this.squareShift = 1;
  138.         } else {
  139.           imagePath = imagePath + "small/";
  140.           this.squareSize = 13;
  141.           this.squareShift = 1;
  142.         }
  143.         try {
  144.           this.imgBoard = Image.createImage(imagePath + "board.png");
  145.           this.imgSelected = Image.createImage(imagePath + "selected.png");
  146.           this.imgSelected2 = Image.createImage(imagePath + "selected2.png");
  147.           this.imgCursor = Image.createImage(imagePath + "cursor.png");
  148.           this.imgCursor2 = Image.createImage(imagePath + "cursor2.png");
  149.           for (int i = 0; i < 24; ++i)
  150.             if (IMAGE_NAME[i] == null)
  151.               this.imgPieces[i] = null;
  152.             else
  153.               this.imgPieces[i] = Image.createImage(imagePath + IMAGE_NAME[i] + ".png");
  154.         }
  155.         catch (Exception e)
  156.         {
  157.           throw new RuntimeException(e.getMessage());
  158.         }
  159.         int boardWidth = this.imgBoard.getWidth();
  160.         int boardHeight = this.imgBoard.getHeight();
  161.         this.left = ((this.width - boardWidth) / 2);
  162.         this.top = ((this.height - boardHeight) / 2);
  163.         this.right = (this.left + boardWidth - 32);
  164.         this.bottom = (this.top + boardHeight - 32);
  165.       }
  166.       if (this.search.pos.sdPlayer == 0) if (!(this.midlet.flipped)) break label582;
  167.       else if (this.midlet.flipped) break label582;
  168.       responseMove();
  169.       return;
  170.     }

  171.     for (int x = 0; x < this.width; x += widthBackground) {
  172.       label582: int j;
  173.       for (j = 0; j < this.height; j += heightBackground)
  174.         g.drawImage(imgBackground, x, j, 20);
  175.     }

  176.     g.drawImage(this.imgBoard, this.left, this.top, 20);
  177.     for (int sq = 0; sq < 256; ++sq)
  178.       if (Position.IN_BOARD(sq)) {
  179.         j = this.search.pos.squares[sq];
  180.         if (j > 0)
  181.           drawPiece(g, this.imgPieces[j], sq);
  182.       }


  183.     int sqSrc = 0;
  184.     int k = 0;
  185.     if (this.mvLast > 0) {
  186.       sqSrc = Position.SRC(this.mvLast);
  187.       k = Position.DST(this.mvLast);
  188.       drawPiece(g, ((this.search.pos.squares[sqSrc] & 0x8) == 0) ? this.imgSelected : this.imgSelected2, sqSrc);
  189.       drawPiece(g, ((this.search.pos.squares[k] & 0x8) == 0) ? this.imgSelected : this.imgSelected2, k);
  190.     } else if (this.sqSelected > 0) {
  191.       drawPiece(g, ((this.search.pos.squares[this.sqSelected] & 0x8) == 0) ? this.imgSelected : this.imgSelected2, this.sqSelected);
  192.     }
  193.     int sq = Position.COORD_XY(this.cursorX + 3, this.cursorY + 3);
  194.     if (this.midlet.flipped)
  195.       sq = Position.SQUARE_FLIP(sq);

  196.     if ((sq == sqSrc) || (sq == k) || (sq == this.sqSelected))
  197.       drawCursor(g, ((this.search.pos.squares[sq] & 0x8) == 0) ? this.imgCursor2 : this.imgCursor, sq);
  198.     else
  199.       drawCursor(g, ((this.search.pos.squares[sq] & 0x8) == 0) ? this.imgCursor : this.imgCursor2, sq);

  200.     if (this.phase == 2)
  201.     {
  202.       int x;
  203.       int y;
  204.       if (this.midlet.flipped) {
  205.         x = (Position.FILE_X(k) < 8) ? this.left : this.right;
  206.         y = (Position.RANK_Y(k) < 8) ? this.top : this.bottom;
  207.       } else {
  208.         x = (Position.FILE_X(k) < 8) ? this.right : this.left;
  209.         y = (Position.RANK_Y(k) < 8) ? this.bottom : this.top;
  210.       }
  211.       g.drawImage(imgThinking, x, y, 20);
  212.     } else if (this.phase == 3) {
  213.       g.setFont(font);
  214.       g.setColor(255);
  215.       g.drawString(this.message, (this.width - this.message.length() * fontWidth) / 2, (this.height - fontHeight) / 2, 20);
  216.     }
  217.   }

  218.   protected void keyPressed(int code) {
  219.     if (this.phase == 3) {
  220.       Display.getDisplay(this.midlet).setCurrent(this.midlet.startUp);
  221.       return;
  222.     }
  223.     int deltaX = 0; int deltaY = 0;
  224.     int action = super.getGameAction(code);
  225.     if ((action == 8) || (code == 53)) {
  226.       int sq = Position.COORD_XY(this.cursorX + 3, this.cursorY + 3);
  227.       if (this.midlet.flipped)
  228.         sq = Position.SQUARE_FLIP(sq);

  229.       int pc = this.search.pos.squares[sq];
  230.       if ((pc & Position.SIDE_TAG(this.search.pos.sdPlayer)) != 0) {
  231.         this.mvLast = 0;
  232.         this.sqSelected = sq; break label381:
  233.       }
  234.       if ((this.sqSelected <= 0) || (!(addMove(Position.MOVE(this.sqSelected, sq)))) || (responseMove())) break label381;
  235.       this.mvLast = 0;
  236.       this.midlet.rsData[0] = 0;
  237.       this.phase = 3;
  238.       super.repaint();
  239.       super.serviceRepaints();
  240.       return;
  241.     }

  242.     switch (action)
  243.     {
  244.     case 1:
  245.       deltaY = -1;
  246.       break;
  247.     case 2:
  248.       deltaX = -1;
  249.       break;
  250.     case 5:
  251.       deltaX = 1;
  252.       break;
  253.     case 6:
  254.       deltaY = 1;
  255.       break;
  256.     case 3:
  257.     case 4:
  258.     default:
  259.       switch (code) {
  260.       case 49:
  261.         deltaX = -1;
  262.         deltaY = -1;
  263.         break;
  264.       case 50:
  265.         deltaY = -1;
  266.         break;
  267.       case 51:
  268.         deltaX = 1;
  269.         deltaY = -1;
  270.         break;
  271.       case 52:
  272.         deltaX = -1;
  273.         break;
  274.       case 54:
  275.         deltaX = 1;
  276.         break;
  277.       case 55:
  278.         deltaX = -1;
  279.         deltaY = 1;
  280.         break;
  281.       case 56:
  282.         deltaY = 1;
  283.         break;
  284.       case 57:
  285.         deltaX = 1;
  286.         deltaY = 1;
  287.       case 53:
  288.       }
  289.     }
  290.     this.cursorX = ((this.cursorX + deltaX + 9) % 9);
  291.     this.cursorY = ((this.cursorY + deltaY + 10) % 10);

  292.     label381: super.repaint();
  293.     super.serviceRepaints();
  294.   }

  295.   private void drawCursor(Graphics g, Image image, int sq) {
  296.     drawSquare(g, image, sq, true);
  297.   }

  298.   private void drawPiece(Graphics g, Image image, int sq) {
  299.     drawSquare(g, image, sq, false);
  300.   }

  301.   private void drawSquare(Graphics g, Image image, int sq, boolean cursor) {
  302.     int shift = (cursor) ? 0 : this.squareShift;
  303.     int sqLocal = (this.midlet.flipped) ? Position.SQUARE_FLIP(sq) : sq;
  304.     int sqX = this.left + (Position.FILE_X(sqLocal) - 3) * this.squareSize + shift;
  305.     int sqY = this.top + (Position.RANK_Y(sqLocal) - 3) * this.squareSize + shift;
  306.     g.drawImage(image, sqX, sqY, 20);
  307.   }

  308.   private boolean getResult(boolean computer) {
  309.     if (this.search.pos.isMate()) {
  310.       this.message = ((computer) ? "请再接再厉!" : "祝贺你取得胜利!");
  311.       return true;
  312.     }
  313.     int vlRep = this.search.pos.repStatus(3);
  314.     if (vlRep > 0) {
  315.       vlRep = (computer) ? -this.search.pos.repValue(vlRep) : this.search.pos.repValue(vlRep);
  316.       this.message = ((vlRep < -9800) ? "电脑长打作负,祝贺你取得胜利!" : (vlRep > 9800) ? "长打作负,请不要气馁!" : "双方不变作和,辛苦了!");
  317.       return true;
  318.     }
  319.     if (this.search.pos.moveNum == 100) {
  320.       this.message = "超过自然限着作和,辛苦了!";
  321.       return true;
  322.     }
  323.     if (computer) {
  324.       this.midlet.rsData[0] = (byte)(this.midlet.level + 1);
  325.       this.midlet.rsData[1] = (byte)((this.midlet.flipped) ? 1 : 0);
  326.       System.arraycopy(this.search.pos.squares, 0, this.midlet.rsData, 2, 256);
  327.     }
  328.     return false;
  329.   }

  330.   private boolean addMove(int mv) {
  331.     if (this.search.pos.legalMove(mv)) {
  332.       int pc = this.search.pos.squares[Position.DST(mv)];
  333.       if (this.search.pos.makeMove(mv)) {
  334.         if (pc > 0)
  335.           this.search.pos.setIrrev();

  336.         this.sqSelected = 0;
  337.         this.mvLast = mv;
  338.         return true;
  339.       }
  340.     }
  341.     return false;
  342.   }

  343.   public boolean responseMove() {
  344.     if (getResult(false))
  345.       return false;

  346.     this.phase = 2;
  347.     super.repaint();
  348.     super.serviceRepaints();
  349.     this.search.searchMain(1 << this.midlet.level << 1);
  350.     int pc = this.search.pos.squares[Position.DST(this.search.mvResult)];
  351.     this.search.pos.makeMove(this.search.mvResult);
  352.     if (pc > 0)
  353.       this.search.pos.setIrrev();

  354.     this.mvLast = this.search.mvResult;
  355.     this.phase = 1;
  356.     super.repaint();
  357.     super.serviceRepaints();
  358.     return (!(getResult(true)));
  359.   }
  360. }
复制代码
转好的话请打个压缩包发俺信箱 xin46.cn@gmail.com


拜托各位了
发表于 2009-1-21 12:58:48 | 显示全部楼层
j2me 程序。 楼主光一个jdk也不行吧。。呵呵。。

把你的这个源文件放到我的netbean 里。。发现错误最少不下100个。。。

还有。。不是我说的。。。什么垃圾代码。。。

看一下:
  1. // 能直接把0给 String么?? 呵呵。这里要用null....
  2.   private static final String[] IMAGE_NAME = {
  3.     0, 0, 0, 0, 0, 0, 0, 0, 0, "rk", "ra", "rb", "rn", "rr", "rc", "rp",
  4.     0, "bk", "ba", "bb", "bn", "br", "bc", "bp" };


  5. //下面代码我不说什么了。。。
  6. int  j;

  7. .....
  8. for(int j=0;j<10;j++){
  9.    ....
  10. }
  11. //这行也不行,charWidth 要求的参数是 Char, 12288怎么也转换不成 char 呀。
  12. private static int fontWidth = font.charWidth(12288);

复制代码
这些只是开头。。。后面错误还有一堆。。。在没有深入研究代码的情况下,我是没法改啦。
而且这个程序不止一个 .java 文件的。。 缺 XQWLight.java  等等很多。。。
这样的代码如果在我们公司。。项目经理就直接让你拿这月工资回家了。。。

[ 本帖最后由 wxysky 于 2009-1-21 13:15 编辑 ]
发表于 2009-1-21 13:20:31 | 显示全部楼层
你的代码没有提供相关的库,根本编译不了


[ 本帖最后由 7788 于 2009-1-21 13:27 编辑 ]
发表于 2009-1-21 17:59:19 | 显示全部楼层
原帖由 7788 于 2009-1-21 13:20 发表
你的代码没有提供相关的库,根本编译不了


它的主类是MainForm,包名是 xqxlight 你应该把 文件起名为 MainForm.java 并放到 xqxlight目录下。。
确实少了很多包。貌似是个j2me的象棋程序。。 代码写的很烂。。。。
发表于 2009-1-21 18:48:42 | 显示全部楼层
原帖由 wxysky 于 2009-1-21 17:59 发表


它的主类是MainForm,包名是 xqxlight 你应该把 文件起名为 MainForm.java 并放到 xqxlight目录下。。
确实少了很多包。貌似是个j2me的象棋程序。。 代码写的很烂。。。。

我没看他的代码.我双系统 WIN2008才有JDK等软件,我工作的时候用的.我平时上网用2003 R2 没装这些工具,帮他编译还要换系统,麻烦:L
发表于 2009-1-22 00:35:07 | 显示全部楼层
楼主还不是一般的会折腾人:L
 楼主| 发表于 2009-1-22 08:10:10 | 显示全部楼层
原帖由 wxysky 于 2009-1-21 12:58 发表
j2me 程序。 楼主光一个jdk也不行吧。。呵呵。。

把你的这个源文件放到我的netbean 里。。发现错误最少不下100个。。。

还有。。不是我说的。。。什么垃圾代码。。。

看一下: // 能直接把0给 String么?? ...

俺不懂编程,这个代码是俺用反编译程序得到的,是象棋小巫师1.13版(手机JAR游戏)的某个.class文件,俺的手机是老古董128x128屏幕的NOKIA6020,象棋小巫师1.13在俺机子上运行,画面太大,屏幕放不开。最新的1.29版本俺的机子又运行不了,只好找了个反编译工具查看它的class文件,刚好这个文件有控制屏幕大小和棋子间距的部分,俺调整了下就把它发到这里来求助了。至于其中的错误,俺想应该是反编译软件的问题,与俺无关。
发表于 2009-1-22 09:42:24 | 显示全部楼层

回复 8楼 xzss 的帖子

恩 java的反编译建议用jad, 很好用。   用jad把这个文件反编译后最好连那个jar一起贴出来。 这样编译就比较方便了。

评分

参与人数 1银币 +1 收起 理由
TMD + 1 我很赞同

查看全部评分

发表于 2009-1-22 10:20:08 | 显示全部楼层
这代码长成这样子:L
发表于 2009-1-22 11:01:10 | 显示全部楼层
原帖由 yuriyan 于 2009-1-22 00:34 发表
这叫编译。。。不叫换转。。。搞毛线

那个啥子7788。。。JDK是不用安装的,只要找得到文件夹就能用的,换什么换。。。

还有。。。JAVA这么写出来的话,没人会去看的

Y的我都告诉你我这个系统下没JDK了,连装JDK的目录都没有.两个系统2块硬盘,为了防止病毒感染,2块硬盘是不能互相访问的,怎么启动了来转?你以为我不知道直接把JDK加到系统变量里去使用?
你懂你给楼主转好了,说什么风凉话

[ 本帖最后由 7788 于 2009-1-22 11:07 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|小黑屋|免费吧论坛

GMT+8, 2024-11-26 14:56 , Processed in 0.032946 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表