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

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

ただいまの
回答率

87.77%

【大至急】Java リズムゲーム 卒業研究

受付中

回答 1

投稿

  • 評価
  • クリップ 2
  • VIEW 1,841

score 10

【至急】大学の卒業研究でリズムゲームを製作することにしました。

開発環境はEclipse、言語はJavaです。
プログラムはネット上のものを参考にしていたのですが、上手く動きません。 

時間がないため、丁寧に教えて頂ける方がいましたら、回答をお願い致します。

JPanel上にCanvasでの描画を試みているのですが、
ノーツ(リズムゲームでいう、上から下へと降ってくる丸い玉)を(y座標を)1ずつ下へずらす方法が分りません。

①Timerを用いて、落ちてきたときの位置を秒数で調整したい
②クリック(タッチ)をすると消えるようにしたい
③クリック時の判定(点数、good等)を結果画面(以下のプログラムには記述無し)に表示したい
製作物としては「リズムゲーム」そのものができれば、とりあえず道が開けます。

1~3の優先順位で教えて頂きたいです。
以下にプログラムを載せます。期限が迫っておりこのままでは卒業も危ういので大変焦っています。
何卒、ご享受よろしくお願い致します。

import java.awt.Canvas;
 import java.awt.Color;
 import java.awt.Graphics;
 import java.awt.Point;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 import java.awt.event.MouseListener;
 import java.util.Vector;

 import javax.swing.JLabel;

 class Canvas1 extends Canvas implements MouseListener{
 JLabel lb = null;
 int i=0;
 //ノーツの座標
int nbx=100, nby=0;//左
int nrx=400, nry=0;//右
//判定円の座標
int bx=100, by=570;//左
int rx=400, ry=570;//右
//円の半径
int Nb=90, Nr=90;//ノーツの左右
Vector blue = new Vector();
 Vector red = new Vector();

 public void paint(Graphics g){
 //レーン
g.setColor(Color.WHITE);
 for(i=0; i<200; i++) {//左レーン
g.drawLine(0+i, 0, 0+i, 700);
 }
 for(i=0; i<200; i++) {//右レーン
g.drawLine(300+i, 0, 300+i, 700);
 }
 //ノーツ
g.setColor(new Color(120, 255, 255));//水色
g.fillOval(nbx-90, i*240, Nb*2, Nb*2);//左円
g.setColor(new Color(255, 190, 255));//桃色
g.fillOval(nrx-90, i*240, Nr*2, Nr*2);//右円

//判定用の外円(drawOval=楕円・円)
g.setColor(Color.BLUE);
 g.drawOval(bx-90, by-90, 90*2, 90*2);//左円
g.setColor(Color.RED);
 g.drawOval(rx-90, ry-90, 90*2, 90*2);//右円
//判定用の内1円
g.setColor(Color.BLUE);
 g.drawOval(bx-50, by-50, 50*2, 50*2);
 g.setColor(Color.RED);
 g.drawOval(rx-50, ry-50, 50*2, 50*2);
 //判定用の内2円
g.setColor(Color.BLUE);
 g.drawOval(bx-20, by-20, 20*2, 20*2);
 g.setColor(Color.RED);
 g.drawOval(rx-20, ry-20, 20*2, 20*2);

 //1点タッチのプログラム(タッチされたら黄色の円を表示したい)
this.addMouseListener(new MouseAdapter() {
 public void mousePressed(MouseEvent e) {
 Point point = e.getPoint();
 if(10<=point.x && point.x<=190 && 480<=point.y && point.y<=660) {
 System.out.println("x:" + point.x + ",y:" + point.y);
 }
 else if(310<=point.x && point.x<=490 && 480<=point.y && point.y<=660) {
 System.out.println("x:" + point.x + ",y:" + point.y);
 }
 }
 });
 //判定円とノーツの中心点の接触を判定
// boolean hit = (((bx-nbx)*(bx-nbx))+((by-nby)*(by-nby)))<=((90+90)*(90+90));
 // System.out.println(hit);
 // boolean hit2 = (((rx-nrx)*(rx-nrx))+((ry-nry)*(ry-nry)))<=((50+90)*(50+90));
 // System.out.println(hit2);
 }//paintの終わり


@Override
 public void mouseClicked(MouseEvent e) {
 // TODO 自動生成されたメソッド・スタブ

}
 @Override
 public void mousePressed(MouseEvent e) {
 // TODO 自動生成されたメソッド・スタブ

}
 @Override
 public void mouseReleased(MouseEvent e) {
 // TODO 自動生成されたメソッド・スタブ

}
 @Override
 public void mouseEntered(MouseEvent e) {
 // TODO 自動生成されたメソッド・スタブ

}
 @Override
 public void mouseExited(MouseEvent e) {
 // TODO 自動生成されたメソッド・スタブ

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    2019/01/15 18:30

    複数のユーザーから「問題・課題が含まれていない質問」という意見がありました
    teratailでは、漠然とした興味から票を募るような質問や、意見の主張をすることを目的とした投稿は推奨していません。
    「編集」ボタンから編集を行い、質問の意図や解決したい課題を明確に記述していただくと回答が得られやすくなります。

  • _uni_

    2019/01/15 21:20

    皆様からのご意見、すべてに目を通させて頂きました。
    知恵袋で質問し、「ここなら(教えてくれる人が)居るのでは?」と言われ、たった今(今日)、サイトの説明も読まず安易に来てしまいました。また、こちらのサイトが「問題・課題が書かれていない」「質問の丸投げをするところではない」ということを重々理解致しました。
    大学の卒業研究については個人的事情はあるものの、(自分にとって)難しすぎる題にしてしまったことを後悔しております。研究そのものの意味も、やるべき順序も把握してなお、ほかの方に答えだけを求める記述をして大変申し訳ありませんでした。
    別のページを紹介してくださった方、ありがとうございます。参考にさせて頂き、先生に相談し、自分が今やれること、やるべきことを考え直して取り組みます。ご意見ありがとうございました。
    逃げるようで大変嫌ですが、しばらくしてからこの質問を削除させて頂きます。
    本当にありがとうございました。

    キャンセル

  • 退会済みユーザー

    2019/01/17 16:40

    複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という意見がありました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

回答 1

+3

いろいろと叩かれている様なので助け舟とまではいきませんが、
ゲームをつりたいようですので案を出しましょう。

DXライブラリというcで書かれたライブラリが存在します。
これはwindowsでしか動きません。対応言語はcとc++です。

しかし、かなり簡単にゲームを作れます。
VS2017に導入して、適当に3Dゲームでも制作すれば赤点は回避されるでしょう。
導入方法等は自分でお調べください。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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

  • ただいまの回答率 87.77%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

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