试图将java if/else转换为循环的数组
作为大学学习的一部分,我正在构建一个Java游戏,并试图将大量if/else语句转换为循环
当前的非工作代码为:
public void kickBall() {
if(ballDirection == 1) {
for (int y = 0; y < 15; y++)
{
gamePosition[ballPositionX][ballPositionY].setIcon(bg_icon);
gamePosition[ballPositionX][++ballPositionY].setIcon(ball_icon);
if(y == baby2PositionY) {
gamePosition[ballPositionX][ballPositionY].setIcon(baby2_icon);
ballDirection = 2;
}
}
Eclipse控制台日志:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 16
at CBabyBallBounce.kickBall(CBabyBallBounce.java:613)
at CBabyBallBounce$14.actionPerformed(CBabyBallBounce.java:516)
at javax.swing.Timer.fireActionPerformed(Unknown Source)
at javax.swing.Timer$DoPostEvent.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
第613行是第二个游戏位置线,第516行是方法调用,但我很难理解问题是什么,我将如何纠正它
以前的代码(如果有用的话)
if (ballPositionY == 1 && ballDirection == 1) {
gamePosition[ballPositionX][ballPositionY].setIcon(bg_icon);
gamePosition[ballPositionX][++ballPositionY].setIcon(ball_icon);
}
else if(ballPositionY == 2 && ballDirection == 1) {
gamePosition[ballPositionX][ballPositionY].setIcon(bg_icon);
gamePosition[ballPositionX][++ballPositionY].setIcon(ball_icon);
}
etc..
游戏位置代码-这在13x16网格布局JPanel中:
private JButton gamePosition[][] = new JButton[13][16];
.....
for (int i=0; i<13; i++)
for (int j=0; j<16; j++)
{
JButton game_display = new JButton(bg_icon);
game_display.setContentAreaFilled(false);
game_display.setBorder(null);
game_display.setFocusable(false);
gamePosition[i][j] = game_display;
gamePosition[i][j].setFocusable(false);
if(j==8)
{
gamePosition[i][j].setIcon(wall_icon);
}
}
谢谢
# 1 楼答案
代码中有两个问题:
null
李>按如下方式操作: