2017-10-10 160 views
-1

我是新来的Java和作为一个项目我开发一个国际象棋游戏。我把所有的一块移动,但是当我王动了国际象棋界的我得到的错误:国际象棋Java游戏错误

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 

at ChessProject.checkBlackOpponent(chessproject.java:149) 
at ChessProject.mouseReleased(chessproject.java:559) 
at java.awt.Component.processMouseEvent(Component.java:6527) 
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321) 
at java.awt.Component.processEvent(Component.java:6292) 
at java.awt.Container.processEvent(Container.java:2234) 
at java.awt.Component.dispatchEventImpl(Component.java:4883) 
at java.awt.Container.dispatchEventImpl(Container.java:2292) 
at java.awt.Component.dispatchEvent(Component.java:4705) 
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898) 
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533) 
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462) 
at java.awt.Container.dispatchEventImpl(Container.java:2278) 
at java.awt.Window.dispatchEventImpl(Window.java:2739) 
at java.awt.Component.dispatchEvent(Component.java:4705) 
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746) 
at java.awt.EventQueue.access$400(EventQueue.java:97) 
at java.awt.EventQueue$3.run(EventQueue.java:697) 
at java.awt.EventQueue$3.run(EventQueue.java:691) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86) 
at java.awt.EventQueue$4.run(EventQueue.java:719) 
at java.awt.EventQueue$4.run(EventQueue.java:717) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) 
at java.awt.EventQueue.dispatchEvent(EventQueue.java:716) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 

回答

-1
Here is my code for the king 

else if(pieceName.contains("King")) { 
    if (((startX - landingX > 1) && (startY == landingY)) || ((startX - landingX > 1) && (startY-landingY > 1)) || 
     ((startX ==landingX) && (startY-landingY > 1)) || ((landingX - startX > 1) && (startY-landingY > 1)) || 
     ((landingX - startX > 1) && (startY==landingY)) || ((landingX - startX > 1) && (landingY - startY > 1)) || 
     ((startX==landingX) && (landingY - startY > 1))|| ((startX-landingX > 1) && (landingY - startY > 1))) { 
    validMove = false; 
    } else { 
    if (piecePresent(e.getX(), (e.getY()))) { 
    if (pieceName.contains("White")) { 
     if (checkWhiteOpponent(e.getX(), e.getY())) { 
     validMove = true; 
     } else { 
     validMove = false; 
     } 
    } else { 
     if (checkBlackOpponent(e.getX(), e.getY())) { 
     validMove = true; 
     } else { 
     validMove = false; 
     } 
    } 
    } else { 
    validMove = true; 
    } 
    } 
    } 
+0

在问题中发布代码,而不是在回答中 –

+0

这应该是对您的问题的编辑。这不是一个答案。 –

+0

对不起,我也是Stack的新手。我也需要熟悉它 –

0

的否则,如果在第4行至7条件不检查landingx的绝对值。既landingx和landingy必须大于0和小于9

要测试的相对位置(移动的大小)的简单条件是不够的: 否则如果(Math.abs(startingx-landingx)> 1 || Math.abs(startx-landingx)> 1 || .... [绝对位置测试])