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

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

ただいまの
回答率

91.36%

  • Java

    10492questions

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

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

解決済

回答 1

投稿 2017/12/02 02:13

  • 評価
  • クリップ 0
  • VIEW 47

sitappa1981

score 50

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

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


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

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Ex_08_1 extends JFrame {
       final int windowWidth = 800;
       final int windowHeight = 500;

    public static void main(String[] args){
       new Ex_08_1();
   }

   public Ex_08_1() {
       Dimension dimOfScreen = Toolkit.getDefaultToolkit().getScreenSize();

       setBounds(dimOfScreen.width/2 - windowWidth/2, dimOfScreen.height/2 - windowHeight/2, windowWidth, windowHeight);
       setResizable(false);
       setTitle("Software Development II");
       setDefaultCloseOperation(EXIT_ON_CLOSE);

       MyJPanel panel= new MyJPanel();
       Container c = getContentPane();
       c.add(panel);
       setVisible(true);
   }

   public class MyJPanel extends JPanel implements ActionListener, MouseListener, MouseMotionListener {
       /* 全体の設定に関する変数 */
       Dimension dimOfPanel;
       Timer timer;
       ImageIcon iconMe, iconEnemy;
       Image imgMe, imgEnemy;

       /* 自機に関する変数 */
       int myHeight, myWidth;
       int myX;
       int myMissileX, myMissileY;
       boolean isMyMissileActive;

       /* 敵機に関する変数 */
       int numOfEnemy = 12;
       int numOfAlive = numOfEnemy;
       int enemyWidth, enemyHeight;
       int[] enemyX = new int[numOfEnemy];
       int[] enemyY = new int[numOfEnemy];
       int[] enemyMove = new int[numOfEnemy];
       int[] enemyMissileX = new int[numOfEnemy];
       int[] enemyMissileY = new int[numOfEnemy];
       int[] enemyMissileSpeed = new int[numOfEnemy];
       boolean[] isEnemyAlive = new boolean[numOfEnemy];
       boolean[] isEnemyMissileActive = new boolean[numOfEnemy];

   }


    /* コンストラクタ(ゲーム開始時の初期化)*/
    public MyJPanel() {
        // 全体の設定
        setBackground(Color.black);
        addMouseListener(this);
        addMouseMotionListener(this);
        timer = new Timer(50, this);
        timer.start();

        // 画像の取り込み
        imgMe = getImg("jiki.jpg");
        myWidth = imgMe.getWidth(this);
        myHeight = imgMe.getHeight(this);

        imgEnemy = getImg("teki.jpg");
        enemyWidth = imgEnemy.getWidth(this);
        enemyHeight = imgEnemy.getHeight(this);

        // 自機と敵機の初期化
        initMyPlane();
        initEnemyPlane();
    }


        // 自機の初期化
        public void initMyPlane() {
            myX = windowWidth / 2;
            myY = windowHeight - 100;
            isMyMissileActive = false;
        }

        // 敵機の初期化
           public void initEnemyPlane() {
               for (int i=0; i<7; i++) {
                   enemyX[i] = 70*i;
                   enemyY[i] = 50;
               }

               for (int i=7; i<numOfEnemy; i++) {
                   enemyX[i] = 70*(i-6);
                   enemyY[i] = 100;
               }

           for (int i=0; i<numOfEnemy; i++) {
               isEnemyAlive[i] = true;
               enemyMove[i] = 1;
               }

            for (int i=0; i<numOfEnemy; i++) {
                   isEnemyMissileActive[i] = true;
                   enemyMissileX[i] = enemyX[i] + enemyWidth/2;
                   enemyMissileY[i] = enemyY[i];
                   enemyMissileSpeed[i] = 10 + (i%6);
            }
        }

          /* 画像ファイルから Image クラスへの変換 */
        public Image getImg(String filename) {
               ImageIcon icon = new ImageIcon(filename);
               Image img = icon.getImage();

            return img;
        }

       /* パネル上の描画 */
       public void paintComponent(Graphics g) {
           dimOfPanel = getSize();
           super.paintComponent(g);

        // 自機の描画
        if (myX+myWidth > dimOfPanel.width) {
           myX = dimOfPanel.width - myWidth;
        }
        g.drawImage(imgMe, myX, myY, this);

           // 自機のミサイルの描画
           if (isMyMissileActive) {
               // ミサイルの配置
               myMissileY -= 15;
               g.setColor(Color.white);
               g.fillRect(myMissileX, myMissileY, 2, 5);

               // 自機のミサイルの敵機各機への当たり判定
               for (int i=0; i<numOfEnemy; i++) {
                   if (isEnemyAlive[i]) {
                       if ((myMissileX >= enemyX[i]) && (myMissileX <= enemyX[i]+enemyWidth) && (myMissileY >= enemyY[i]) && (myMissileY <= enemyY[i]+enemyHeight)) {
                           isEnemyAlive[i] = false;
                           isMyMissileActive = false;
                           numOfAlive--;
                       }
                   }
               }
               // ミサイルがウィンドウ外に出たときのミサイルの再初期化
               if (myMissileY < 0) isMyMissileActive = false;
           }

           // 敵機の描画
           for (int i=0; i<numOfEnemy; i++) {
               if (isEnemyAlive[i]) {
                   if (enemyX[i] > dimOfPanel.width - enemyWidth) {
                       enemyMove[i] = -1;
                   } else if (enemyX[i] < 0) {
                       enemyMove[i] = 1;
                   }
                   enemyX[i] += enemyMove[i]*10;
                   g.drawImage(imgEnemy, enemyX[i],
                             enemyY[i], this);
               }
           }

        // 敵機のミサイルの描画
        for (int i=0; i<numOfEnemy; i++) {
            // ミサイルの配置
            if (isEnemyMissileActive[i]) {
                   enemyMissileY[i] += enemyMissileSpeed[i];
                   g.setColor(Color.red);
                   g.fillRect(enemyMissileX[i], enemyMissileY[i], 2, 5);
               }

            // 敵機のミサイルの自機への当たり判定
            if ((enemyMissileX[i] >= myX) && (enemyMissileX[i] <= myX+myWidth) && (enemyMissileY[i]+5 >= myY) && (enemyMissileY[i]+5 <= myY+myHeight)) {
                System.exit(0);
            }

            // ミサイルがウィンドウ外に出たときのミサイルの再初期化
               if (enemyMissileY[i] > dimOfPanel.height) {
                   if (isEnemyAlive[i]) {
                         enemyMissileX[i] = enemyX[i] + enemyWidth/2;
                       enemyMissileY[i] = enemyY[i] + enemyHeight;
                   } else {
                       isEnemyMissileActive[i] = false;
                   }
               }
        }
           // 敵機を全機撃墜した時の終了処理
           if (numOfAlive == 0) {
               System.exit(0);
           }
       }

       /* 一定時間ごとの処理(ActionListener に対する処理)*/
       public void actionPerformed(ActionEvent e) {
           repaint();
       }

       /* MouseListener に対する処理 */
       public void mouseClicked(MouseEvent e) {
       }

       public void mousePressed(MouseEvent e) {
           if (!isMyMissileActive) {
               myMissileX = myX + myWidth/2;
               myMissileY = myY;
               isMyMissileActive = true;
           }
       }

       public void mouseReleased(MouseEvent e) {
       }

       public void mouseExited(MouseEvent e) {
       }

       public void mouseEntered(MouseEvent e) {
       }

       /* MouseMotionListener に対する処理 */
       public void mouseMoved(MouseEvent e) {
           myX = e.getX();
       }

       public void mouseDragged(MouseEvent e) {
       }



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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+2

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

   public class MyJPanel extends JPanel implements ActionListener, MouseListener, MouseMotionListener {
       ...
       ...
       ...

   }

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

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

投稿 2017/12/02 02:48

編集 2017/12/02 02:49

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/02 02:54

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

    キャンセル

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

ただいまの回答率

91.36%

関連した質問

  • 解決済

    Java LabelにImageiconを大きく表示させる

    前提・実現したいこと   Java LabelにImageiconを代入し、表示させたいのですが、アイコンのサイズとして表示されます。 なので、少し拡大をして表示させるにはどの

  • 解決済

    きれいに描画する方法

    花びらが落ちていく、というようなプログラムを作っています。 コード public class Applet3D extends Applet implements Runna

  • 解決済

    色のついたPanelの上にLabelの配置

    public class Picross extends JFrame implements ActionListener { int[][] questiona

  • 解決済

    Javaクラス使い方

    ###前提・実現したいこと JavaクラスのTest1,Test2があったとしてTest1のJPanelにTeat2で作ったグラフなどを描画したいのですがJavaクラスの使い方、

  • 解決済

    クラス型配列のフィールドにアクセスしたいです。

    前提・実現したいこと サイコロが同じかどうかをチェックするプログラムです。 サイコロがn個与えられ、サイコロ各面に任意の数字が割り振られます。 サイコロDiceは_d[6]を

  • 解決済

    クラスリストの比較でcontainsが動作してくれない

    containsを用いて2つのクラスリストを比較したいのですが、うまく動作してくれません。 class Order{ public int id; publi

  • 解決済

    java eclipseについて

    java eclipseでスライドパズルを作成しています。 9枚の画像で作成しており、現在は9枚の画像を実行するたびにランダムで表示するところまでいきました。 その後ですが9枚

  • 解決済

    AnimationTimer()による画面の分岐

    前提・実現したいこと AnimationTimer()でサイクルをループさせたい 1.1つ目のボタンの表示 2.ボタン1(画像)が5回押されたら3に移行 (ボタン1が押され

同じタグがついた質問を見る

  • Java

    10492questions

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