【大至急】Java リズムゲーム 卒業研究
受付中
回答 0
投稿
- 評価 -18
- クリップ 0
- VIEW 224
【至急】大学の卒業研究でリズムゲームを製作することにしました。
開発環境は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ページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
- メールアドレスの認証
メールアドレスの認証
- 質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
まだ回答がついていません
質問への追記・修正の依頼
mts10806
2019/01/15 16:30
やめましょ。「大至急」とか。回答が余計つかなくなるだけです。
時間がなかろうとあろうとこちらにはその事情は知ったこっちゃありません。
卒業ができようとできなかろうと知ったこっちゃないです。
期限が迫っている段階でコピペで済まそうとした報いです。
mts10806
2019/01/15 16:32
↑「ネットのものを参考に」という人のほとんどはコピペでコードをほとんど理解しないまま使って勝手にトラブっているのでそう解釈しました。
そんなに急ぎでどうしてもというのならお金を払って業者にやってもらってください。
いいですか?あなたのこの内容は質問ではありません。
dit.
2019/01/15 16:43
マルチ( Https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12201934907 )ですし、ご自身で解決するべき案件だと思います。
mts10806
2019/01/15 16:48
↑teratailとSOに振られたからこちらにきた、と…。それはそれで無責任ですね。
tacsheaven
2019/01/15 17:14
まさか今年度の研究ですかねえ……研究ってのは自分で調べて手を動かして行うものであって、誰かに答えをもらおうという時点で研究じゃなくなるのですが。
仮にここで答えを得られてコードは完成したとしても、内容を全く理解していないなら研究発表の席で突っ込まれてボロボロになる未来しかありませんね。
※私の大学時代でもあったなあ……もう20年以上前ですが、卒検の論文、前年度の研究をそのまま継続したと称して出して、中身理解できてないから教授からボロボロに突っ込まれて、リジェクト喰らってたとか……
tacsheaven
2019/01/15 17:17
卒業研究ってのは研究するその過程こそが重要なのであって、成果がなかったとしても過程さえこなしてればある程度は評価されるんですがね。逆に言うと、過程をこなしてなければどんなによい成果でも、研究としては落第点なのですよねえ。
koronatail
2019/01/15 17:31
https://teratail.com/questions/21594
こちらの質問が参考になるんじゃないでしょうか。
・・・というか質問の雰囲気や用語から先輩かもしれませんよリンク先の質問者さん
azuapricot
2019/01/15 17:44
ここで助けを求めるようじゃ「もう1年遊べるドン!」か、教授に土下座して助けてもらうしかないのでは?
『自力でできませんでした』と卒業研究として発表するのもよいかもしれませんね。
ネット上のものを参考にしなければ書けないのになぜこんなリズムゲーム作ろうとしたのか謎ですねぇ
大変焦ってるのはよくわかりますが、teratailに回答の迅速さを求めるのはお門違いです。
教授に泣き付いてください。
2019/01/15 18:30
複数のユーザーから「問題・課題が含まれていない質問」という意見がありました
teratailでは、漠然とした興味から票を募るような質問や、意見の主張をすることを目的とした投稿は推奨していません。
「編集」ボタンから編集を行い、質問の意図や解決したい課題を明確に記述していただくと回答が得られやすくなります。
2019/01/15 19:23
複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という意見がありました
「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。