現在、ゲームを作っているのですが、NullPointerExceptionがクラスの配列で発生してしまいます。ソースは
lang
1import java.awt.event.*; 2 3import src.yukkuri.lib.*; 4import src.yukkuri.lib.Game.*; 5 6enum Battle 7{ 8 SETUP, // 敵出現のメッセージ 9 MAIN, // コマンド選択中 10 P_ACTION, // プレイヤーの行動 11 M_ACTION, // モンスターの行動 12 RESET, // MAINへのリターン 13 RESULT; // アイテム入手、経験値、お金入手 14} 15 16public class debug2 extends BaseGame 17{ 18 static boolean debug = true; 19 20 static MapImageChip m_mic; 21/* newSprite m_player; 22 newSprite player_up; // angle:1 23 newSprite player_right; // angle:2 24 newSprite player_left; // angle:3 25 newSprite player_down; // angle:4*/ 26 newSprite[] m_player = new newSprite[ 5 ]; // 上右下左現在 27 int angle = 4; 28 boolean upMenu = false; 29 boolean upMove = true; 30 31 GameLib gl; 32 Sprite boss_one; 33 int boss_one_hpmax = 1000; 34 int boss_one_hpmin = 1000; 35 36 Sprite boss_two; 37 int boss_two_hpmax = 10000; 38 int boss_two_hpmin = 10000; 39 String message = ""; 40 41 static int l = 0; 42 43 player p1; 44 45 public static void main( String[] args ) 46 { 47 new debug2(); 48 } 49 50 public debug2() 51 { 52 super( "てすとげーむ", 1920, 1088, false ); 53 } 54 55 @Override public void Create() 56 { 57 gl = new GameLib(); 58 59 setBackground( 0x000000 ); 60 try{ 61 // マップ用 62/* player_up = new newSprite( ".\image\char_p_hero01.amg", 0, 9, 48, 64 ); 63 player_right = new newSprite( ".\image\char_p_hero01.amg", 0, 73, 48, 64 ); 64 player_down = new newSprite( ".\image\char_p_hero01.amg", 0, 137, 48, 64 ); 65 player_left = new newSprite( ".\image\char_p_hero01.amg", 0, 201, 48, 64 ); 66 m_player = new newSprite( ".\image\char_p_hero01.amg", 0, 137, 48, 64 );*/ 67 for( int l = 3; l > -1; l-- ){ 68 System.out.println( l ); 69 m_player[ l ] = new newSprite( ".\image\char_p_hero01.amg", 0, 9 + l * 64, 48, 64 ); 70 } 71 m_player[ 0 ] = new newSprite( ".\image\char_p_hero01.amg", 0, 9 + 0 * 64, 48, 64 ); 72 System.out.println( "抜けたよ" ); 73 m_player[ 4 ] = m_player[ 2 ]; // 初期状態を下向きに設定 74 m_mic = new MapImageChip( ".\image\chip02d_dungeon.amg", 64, 64 ); 75 76 // 戦闘用 77 boss_one = new Sprite( ".\image\human232_l.amg", 0, 0, 695, 486 ); 78 boss_two = new Sprite( ".\image\monster171_l.amg", 0, 0, 683, 504 ); 79 p1 = new player( ".\bgm.se\nc98796.wav", 0 ); 80 }catch( java.io.IOException ie ){ ie.printStackTrace(); } 81 82 m_mic.m_map = new int[]{ 83 // 5 10 15 20 25 30 84 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 85 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 86 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 87 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 88 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, // 5 89 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 90 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 91 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 92 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 93 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, // 13 94 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 95 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 96 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 97 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 98 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, // 15 99 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 100 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 101 }; 102 } 103 104 @Override public void Key_Press( int code ) 105 { 106 if( debug ){ System.out.println( "キー" + code + "が押されたよ!" ); } 107 if( code == KeyEvent.VK_D ){ 108 if( debug ){ 109 System.out.println( "デバッグをオフにしました" ); 110 debug = false; 111 }else{ 112 System.out.println( "デバッグをオンにしました" ); 113 debug = true; 114 } 115 } 116 if( code == KeyEvent.VK_X ){ 117 if( upMenu ){ 118 upMenu = false; upMove = true; 119 }else{ 120 upMenu = true; upMove = false; 121 } 122 }if( code == KeyEvent.VK_ENTER )boss_one_hpmin -= 10; 123 if( upMove ){ 124 m_player[ 4 ].move( code ); 125 if( code == KeyEvent.VK_UP ) angle = 1; 126 if( code == KeyEvent.VK_RIGHT ) angle = 2; 127 if( code == KeyEvent.VK_LEFT ) angle = 3; 128 if( code == KeyEvent.VK_DOWN ) angle = 4; 129 } 130 if( debug ) System.out.println( "X:" + m_player[ 4 ].m_x + " Y:" + m_player[ 4 ].m_y ); 131 repaint(); 132 } 133 134 @Override public void Paint() 135 { 136/* setColor( 0xffff255 ); 137 if( boss_one_hpmin < 1 ){ 138 if( l == 0 ){ 139 System.out.println( "音楽再生" ); 140 p1.playMusic(); 141 l++; 142 } 143 message = "この程度で負けると思うなよ!敵が復活してしまった!"; 144 draw( boss_two, 625, 65 ); 145 fillRect( 10, 20, 19 * gl.per( boss_two_hpmax, boss_two_hpmin ), 25 ); 146 }else{ 147 message = "ボスが現れた!"; 148 draw( boss_one, 625, 65 ); 149 fillRect( 10, 20, 19 * gl.per( boss_one_hpmax, boss_one_hpmin ), 25 ); 150 } 151 setColor( 0xffffff ); 152 draw( 0, 600, 1920, 600 ); 153 drawRect( 10, 20, 1900, 25 ); 154 setFont( 60 ); 155 draw( message, 50, 700 ); 156 String[] command = { "攻撃", "防御", "移動", "魔法", "アイテム", "逃げる" }; 157 for( int l = 0; l < 6; l++ ){ 158 draw( command[ l ], 1600, 700 + 60 * l ); 159 }*/ 160 m_mic.putMapCip( this, 0, 0, 30, 17 ); 161 162 if( angle == 1 ) draw( m_player[ 0 ], m_player[ 4 ].m_x, m_player[ 4 ].m_y ); 163 if( angle == 2 ) draw( m_player[ 1 ], m_player[ 4 ].m_x, m_player[ 4 ].m_y ); 164 if( angle == 3 ) draw( m_player[ 2 ], m_player[ 4 ].m_x, m_player[ 4 ].m_y ); 165 if( angle == 4 ) draw( m_player[ 3 ], m_player[ 4 ].m_x, m_player[ 4 ].m_y ); 166 if( upMenu ){ 167 setColor( 0x33000000, true ); 168 fillRect( 0, 0, 600, 1080 ); 169 } 170 } 171} 172 173class newSprite extends Sprite 174{ 175 public newSprite( String fname, int x, int y, int w, int h ) throws java.io.IOException 176 { 177 super( fname, x, y, w, h ); 178 } 179 180 public void move( int code ) 181 { 182 if( code == KeyEvent.VK_RIGHT ){ 183 m_x += 48; 184 }if( code == KeyEvent.VK_LEFT ){ 185 m_x -= 48; 186 }if( code == KeyEvent.VK_UP ){ 187 m_y -= 32; 188 }if( code == KeyEvent.VK_DOWN ){ 189 m_y += 32; 190 } 191 } 192}
この中の、エラー個所は
lang
1for( int l = 3; l > -1; l-- ){ 2 System.out.println( l ); 3 m_player[ l ] = new newSprite( ".\image\char_p_hero01.amg", 0, 9 + l * 64, 48, 64 ); 4 }
です。よろしくお願いします。
追記
スタックトレース
Exception in thread "main" java.lang.NullPointerException at debug2.Create(debug2.java:69) at src.yukkuri.lib.Game.BaseGame.<init>(BaseGame.java:29) at debug2.<init>(debug2.java:52) at debug2.main(debug2.java:47)
javaのバージョンは7です。
回答1件
あなたの回答
tips
プレビュー