クラス図の分け方が分かりません
受付中
回答 1
投稿
- 評価
- クリップ 1
- VIEW 1,185
import java.awt.*;
import java.awt.event.*;
import java.awt.Font;
import java.util.Random;
public class MainFrame extends GameFrame implements KeyListener,MetronomeInterface{
Bgm b1,b2,b3;
Image img,img1,img2,img3,img4,img5,img6,img7;
EnemyZako[] ez = new EnemyZako[50];
Bullet [] tm = new Bullet[1000];
ZBullet [] ztm = new ZBullet[1000];
TBBullet[] tbm = new TBBullet[1000];
Haikei[] h = new Haikei[5];
Player p;
Boss bo;
Bullet b;
int gameMode;//0オープニング 1本編
int to;
int tama;
int ztama;
int baku;
int ta=0;
int bta=0;
int count;
int count2 = 0;
int life = 3;
boolean tu = false;
Metronome mt = new Metronome(0,1000,this);
Metronome2 mo = new Metronome2(0,1000,this);
public MainFrame(){
super("Ex999");
Random rnd = new Random();
img = getToolkit().getImage("Image/c3.png");
for(int z=0;z<ez.length;z++){
int ran = rnd.nextInt(600);
int ran1 = rnd.nextInt(80) - 100;
int ran2 = rnd.nextInt(300) + 20;
ez[z] = new EnemyZako(img,ran,ran1,30,28,ran2);
}
img6 = getToolkit().getImage("Image/自機.gif");
p = new Player(img6,400,500,18,32,50,ez,this);
img7 = getToolkit().getImage("Image/弾.PNG");
for(int i=0;i<tm.length;i++){
tm[i] = new Bullet(img7,-100,-100,15,20,50,ez,this);
}
img4 = getToolkit().getImage("Image/s.PNG");
for(int m=0;m<ztm.length;m++){
ztm[m] = new ZBullet(img4,-100,-100,20,19,50,ez,this);
}
img4 = getToolkit().getImage("Image/s.PNG");
for(int l=0;l<tbm.length;l++){
tbm[l] = new TBBullet(img4,-100,-100,20,19,50,ez,this);
}
img2 = getToolkit().getImage("Image/haikei.gif");
h[0] = new Haikei(img2,0,0,800,600,50);
h[1] = new Haikei(img2,0,-600,800,600,50);
h[2] = new Haikei(img2,0,-1200,800,600,50);
h[3] = new Haikei(img2,0,-1800,800,600,50);
h[4] = new Haikei(img2,0,-2400,800,600,50);
img5 = getToolkit().getImage("Image/tb.PNG");//中ボス
bo = new Boss(img5,300,40,128,200,10);
img3 = getToolkit().getImage("Image/GameOver.gif");
addKeyListener(this);
p.start();
for(Haikei he:h)he.start();
for(Bullet ze:tm)ze.start();
gameMode = 0;//オープニング
start();
}
public void paint(Graphics g){
if(gameMode==0){//オープニング
g.setColor(Color.black);
g.fillRect(0,0,800,600);
g.setColor(Color.white);
Font font = new Font("Dialog",Font.BOLD,30);
g.setFont(font);
g.drawString("マリオの逆襲",300,200);
g.drawString("ENTER START",285,380);
}else if(gameMode==1){//本編
for(int d=0;d<h.length;d++)h[d].draw(g);
g.setColor(Color.white);
g.setFont(new Font("Monospaced" , Font.PLAIN, 13));
g.drawString("TIME:"+count,740,50);
g.setColor(Color.white);
g.drawString("残機:"+life,8,50);
if(tu == true)bo.draw(g);
for(int z=0;z<ez.length;z++)ez[z].draw(g);
p.draw(g);
for(int i=0;i<tm.length;i++)tm[i].draw(g);
for(int i=0;i<ztm.length;i++)ztm[i].draw(g);
for(int i=0;i<tbm.length;i++)tbm[i].draw(g);
}else if(gameMode==2){//ゲームオーバー
g.fillRect(0,0,800,600);
g.setColor(Color.white);
Font font = new Font("Dialog",Font.BOLD,80);
g.setFont(font);
g.drawString("Game Over",190,250);
}
}
public void call(){
if(gameMode==1){
count--;
if((count % 2 ==0)&&(count!= 0)){
kougeki();
}
if(count<1){
bo.start();
tu = true;
mt.cancel();
repaint();
}
}
}
public void call2(){
if(count == 0){
//zako();
count2++;
if((count2 % 1 ==0)&&(count2!= 0)){
kougeki2();
}
}
}
/*public void zako(){
Random rnd = new Random();
img = getToolkit().getImage("Image/c3.png");
for(int z=0;z<ez.length;z++){
int ran = rnd.nextInt(600);
int ran1 = rnd.nextInt(80) - 100;
int ran2 = rnd.nextInt(300) + 20;
ez[z] = new EnemyZako(img,ran,ran1,30,28,ran2);
repaint();
}
}*/
public void kougeki(){
for(int i=0;i<ez.length;i++){
if(ez[i].rectangle.y%20==0){
ztm[ta].flg=true;
ztm[ta].rectangle.x = ez[i].rectangle.x;
ztm[ta].rectangle.y = ez[i].rectangle.y;
ztm[ta].start();
ta+=1;
if(ta>=ztm.length){
ta=0;
}
}
}
}
public void kougeki2(){
tbm[bta].flg=true;
tbm[bta].rectangle.x = bo.rectangle.x;
tbm[bta].rectangle.y = bo.rectangle.y;
tbm[bta].start();
bta+=1;
if(bta>=tbm.length){
bta=0;
}
}
/**
*キーを押しているときの処理を記述
*/
public void keyPressed(KeyEvent z) {
if(z.getKeyCode()==KeyEvent.VK_ENTER){
if(gameMode==0){
gameMode = 1;
count = 40;
for(EnemyZako we:ez)we.start();
}
}
if(gameMode==1){
if(z.getKeyCode()==KeyEvent.VK_UP){
p.isUp=true;
}
if(z.getKeyCode()==KeyEvent.VK_DOWN){
p.isDown=true;
}
if(z.getKeyCode()==KeyEvent.VK_LEFT){
p.isLeft=true;
}
if(z.getKeyCode()==KeyEvent.VK_RIGHT){
p.isRight=true;
}
if(z.getKeyCode()==KeyEvent.VK_SPACE){
tm[tama].isUp=true;
tm[tama].flg=true;
tm[tama].rectangle.x = p.rectangle.x+15;
tm[tama].rectangle.y = p.rectangle.y+5;
tama+=1;
if(tama>=tm.length){
tama=0;
}
}
}
if(z.getKeyCode()==KeyEvent.VK_ESCAPE&&gameMode==2){
System.exit(0);
}
if(z.getKeyCode()==KeyEvent.VK_CONTROL&&gameMode==2){
gameMode=0;
}
}
/**
*キーを離したときの処理を記述
*/
public void keyReleased(KeyEvent z){
if(z.getKeyCode()==KeyEvent.VK_UP){
p.isUp=false;
}
if(z.getKeyCode()==KeyEvent.VK_DOWN){
p.isDown=false;
}
if(z.getKeyCode()==KeyEvent.VK_LEFT){
p.isLeft=false;
}
if(z.getKeyCode()==KeyEvent.VK_RIGHT){
p.isRight=false;
}
}
/**
*キーをタイプしたときの処理を記述
*/
public void keyTyped(KeyEvent z){
}
//分けた図を書いてください>_<
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
+3
正直に言います。あなたはプログラマに向いていません。もし職業にしようとしているのなら他の職業をオススメします。挫折するだけですよ。
まずは自分で考えましょう。そして、何が分からないのかを明確にしましょう。それがプログラマの本質にも当てはまります。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.10%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
s.t.
2017/06/06 15:53
まずは自分で書いてみてください。
A-pZ
2017/06/06 16:49
コードはコードブロックで囲いましょう。
m.ts10806
2017/06/06 16:50
>>「分けた図を書いてください>_<」 丸投げはご法度ですよ。
2017/06/07 17:53
複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という意見がありました
「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。