質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

1798閲覧

Javaのエンコードに失敗してしまいます。

sitappa1981

総合スコア66

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2017/12/01 17:13

質問させてください。
Javaの勉強を行っているのですが、エンコードに失敗してしまいます。
エラー内容が

Ex_08_1.java:57 エラー:無効なメソッド宣言です。戻り値の型が必要です。 public MyJPanel(){ エラー1個

との事ですので、単純な見落としの可能性があるのですが、どうしてもエラーの修正が出来ませんでしたので、どなたか解決法を教えていただけませんでしょうか?

Java

1import java.awt.*; 2import java.awt.event.*; 3import javax.swing.*; 4 5public class Ex_08_1 extends JFrame { 6 final int windowWidth = 800; 7 final int windowHeight = 500; 8 9 public static void main(String[] args){ 10 new Ex_08_1(); 11 } 12 13 public Ex_08_1() { 14 Dimension dimOfScreen = Toolkit.getDefaultToolkit().getScreenSize(); 15 16 setBounds(dimOfScreen.width/2 - windowWidth/2, dimOfScreen.height/2 - windowHeight/2, windowWidth, windowHeight); 17 setResizable(false); 18 setTitle("Software Development II"); 19 setDefaultCloseOperation(EXIT_ON_CLOSE); 20 21 MyJPanel panel= new MyJPanel(); 22 Container c = getContentPane(); 23 c.add(panel); 24 setVisible(true); 25 } 26 27 public class MyJPanel extends JPanel implements ActionListener, MouseListener, MouseMotionListener { 28 /* 全体の設定に関する変数 */ 29 Dimension dimOfPanel; 30 Timer timer; 31 ImageIcon iconMe, iconEnemy; 32 Image imgMe, imgEnemy; 33 34 /* 自機に関する変数 */ 35 int myHeight, myWidth; 36 int myX; 37 int myMissileX, myMissileY; 38 boolean isMyMissileActive; 39 40 /* 敵機に関する変数 */ 41 int numOfEnemy = 12; 42 int numOfAlive = numOfEnemy; 43 int enemyWidth, enemyHeight; 44 int[] enemyX = new int[numOfEnemy]; 45 int[] enemyY = new int[numOfEnemy]; 46 int[] enemyMove = new int[numOfEnemy]; 47 int[] enemyMissileX = new int[numOfEnemy]; 48 int[] enemyMissileY = new int[numOfEnemy]; 49 int[] enemyMissileSpeed = new int[numOfEnemy]; 50 boolean[] isEnemyAlive = new boolean[numOfEnemy]; 51 boolean[] isEnemyMissileActive = new boolean[numOfEnemy]; 52 53 } 54 55 56 /* コンストラクタ(ゲーム開始時の初期化)*/ 57 public MyJPanel() { 58 // 全体の設定 59 setBackground(Color.black); 60 addMouseListener(this); 61 addMouseMotionListener(this); 62 timer = new Timer(50, this); 63 timer.start(); 64 65 // 画像の取り込み 66 imgMe = getImg("jiki.jpg"); 67 myWidth = imgMe.getWidth(this); 68 myHeight = imgMe.getHeight(this); 69 70 imgEnemy = getImg("teki.jpg"); 71 enemyWidth = imgEnemy.getWidth(this); 72 enemyHeight = imgEnemy.getHeight(this); 73 74 // 自機と敵機の初期化 75 initMyPlane(); 76 initEnemyPlane(); 77 } 78 79 80 // 自機の初期化 81 public void initMyPlane() { 82 myX = windowWidth / 2; 83 myY = windowHeight - 100; 84 isMyMissileActive = false; 85 } 86 87 // 敵機の初期化 88 public void initEnemyPlane() { 89 for (int i=0; i<7; i++) { 90 enemyX[i] = 70*i; 91 enemyY[i] = 50; 92 } 93 94 for (int i=7; i<numOfEnemy; i++) { 95 enemyX[i] = 70*(i-6); 96 enemyY[i] = 100; 97 } 98 99 for (int i=0; i<numOfEnemy; i++) { 100 isEnemyAlive[i] = true; 101 enemyMove[i] = 1; 102 } 103 104 for (int i=0; i<numOfEnemy; i++) { 105 isEnemyMissileActive[i] = true; 106 enemyMissileX[i] = enemyX[i] + enemyWidth/2; 107 enemyMissileY[i] = enemyY[i]; 108 enemyMissileSpeed[i] = 10 + (i%6); 109 } 110 } 111 112 /* 画像ファイルから Image クラスへの変換 */ 113 public Image getImg(String filename) { 114 ImageIcon icon = new ImageIcon(filename); 115 Image img = icon.getImage(); 116 117 return img; 118 } 119 120 /* パネル上の描画 */ 121 public void paintComponent(Graphics g) { 122 dimOfPanel = getSize(); 123 super.paintComponent(g); 124 125 // 自機の描画 126 if (myX+myWidth > dimOfPanel.width) { 127 myX = dimOfPanel.width - myWidth; 128 } 129 g.drawImage(imgMe, myX, myY, this); 130 131 // 自機のミサイルの描画 132 if (isMyMissileActive) { 133 // ミサイルの配置 134 myMissileY -= 15; 135 g.setColor(Color.white); 136 g.fillRect(myMissileX, myMissileY, 2, 5); 137 138 // 自機のミサイルの敵機各機への当たり判定 139 for (int i=0; i<numOfEnemy; i++) { 140 if (isEnemyAlive[i]) { 141 if ((myMissileX >= enemyX[i]) && (myMissileX <= enemyX[i]+enemyWidth) && (myMissileY >= enemyY[i]) && (myMissileY <= enemyY[i]+enemyHeight)) { 142 isEnemyAlive[i] = false; 143 isMyMissileActive = false; 144 numOfAlive--; 145 } 146 } 147 } 148 // ミサイルがウィンドウ外に出たときのミサイルの再初期化 149 if (myMissileY < 0) isMyMissileActive = false; 150 } 151 152 // 敵機の描画 153 for (int i=0; i<numOfEnemy; i++) { 154 if (isEnemyAlive[i]) { 155 if (enemyX[i] > dimOfPanel.width - enemyWidth) { 156 enemyMove[i] = -1; 157 } else if (enemyX[i] < 0) { 158 enemyMove[i] = 1; 159 } 160 enemyX[i] += enemyMove[i]*10; 161 g.drawImage(imgEnemy, enemyX[i], 162 enemyY[i], this); 163 } 164 } 165 166 // 敵機のミサイルの描画 167 for (int i=0; i<numOfEnemy; i++) { 168 // ミサイルの配置 169 if (isEnemyMissileActive[i]) { 170 enemyMissileY[i] += enemyMissileSpeed[i]; 171 g.setColor(Color.red); 172 g.fillRect(enemyMissileX[i], enemyMissileY[i], 2, 5); 173 } 174 175 // 敵機のミサイルの自機への当たり判定 176 if ((enemyMissileX[i] >= myX) && (enemyMissileX[i] <= myX+myWidth) && (enemyMissileY[i]+5 >= myY) && (enemyMissileY[i]+5 <= myY+myHeight)) { 177 System.exit(0); 178 } 179 180 // ミサイルがウィンドウ外に出たときのミサイルの再初期化 181 if (enemyMissileY[i] > dimOfPanel.height) { 182 if (isEnemyAlive[i]) { 183 enemyMissileX[i] = enemyX[i] + enemyWidth/2; 184 enemyMissileY[i] = enemyY[i] + enemyHeight; 185 } else { 186 isEnemyMissileActive[i] = false; 187 } 188 } 189 } 190 // 敵機を全機撃墜した時の終了処理 191 if (numOfAlive == 0) { 192 System.exit(0); 193 } 194 } 195 196 /* 一定時間ごとの処理(ActionListener に対する処理)*/ 197 public void actionPerformed(ActionEvent e) { 198 repaint(); 199 } 200 201 /* MouseListener に対する処理 */ 202 public void mouseClicked(MouseEvent e) { 203 } 204 205 public void mousePressed(MouseEvent e) { 206 if (!isMyMissileActive) { 207 myMissileX = myX + myWidth/2; 208 myMissileY = myY; 209 isMyMissileActive = true; 210 } 211 } 212 213 public void mouseReleased(MouseEvent e) { 214 } 215 216 public void mouseExited(MouseEvent e) { 217 } 218 219 public void mouseEntered(MouseEvent e) { 220 } 221 222 /* MouseMotionListener に対する処理 */ 223 public void mouseMoved(MouseEvent e) { 224 myX = e.getX(); 225 } 226 227 public void mouseDragged(MouseEvent e) { 228 } 229 230 231 232}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

クラスを閉じてしまっているようです。括弧の対応を見なおしてください。

Java

1 public class MyJPanel extends JPanel implements ActionListener, MouseListener, MouseMotionListener { 2 ... 3 ... 4 ...

}

/* コンストラクタ(ゲーム開始時の初期化)*/
public MyJPanel() {

あと、失敗しているのはエンコードではなくコンパイルでは?

投稿2017/12/01 17:48

編集2017/12/01 17:49
LouiS0616

総合スコア35658

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sitappa1981

2017/12/01 17:54

LouiS0616様へ アドバイスありがとうございます!! {}の終わりを見直して、無事解決することが出来ました!! それと仰るように、エンコードではなくコンパイルですね、失礼しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問