人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

javaで次のプログラムを作成してください。

アプレット上に5個のボタンを並べて配置し、ボタンを押すとそれぞれのボタンの下方に塗りつぶされた円が表示されるプログラムを作成せよ。

表示される円の縦方向座標(y座標)は一定の位置でよい。

各円はオブジェクトとして扱い、x座標とy座標をインスタンス変数として持つこと。

ボタンが押されるたびに得点が増えるものとする。

得点(score)は円のオブジェクトを扱うクラスのクラス変数として扱うこと。

(Aクラス)ボタンが押されるたびに得点は1?3の範囲でランダムに増加する。

(Bクラス)ボタンが押されるたびに得点は1ずつ増加する。

なお、得点が入るのはボタンに対応した円が新たに作成される時だけとする。

●質問者: surprise1985
●カテゴリ:コンピュータ インターネット
✍キーワード:Aクラス Bクラス Java Score アプレット
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● yo-kun
●60ポイント

どこかで見た気がするのですが…(^^;

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

abstract class Circle
{
 private int x ;
 private int y ;
 private int r ;
 static int score = 0 ;
 
 public Circle(int x, int y, int r)
 {
 this.x = x ;
 this.y = y ;
 this.r = r ;
 }
 
 public int getX()
 {
 return x ;
 }
 
 public int getY()
 {
 return y ;
 }
 
 public int getR()
 {
 return r ;
 }
 
 public static int getScore()
 {
 return score ;
 }
}

class CircleA extends Circle
{
 public CircleA(int x, int y, int r) 
 {
 super(x, y, r) ;
 score += (int)(3*Math.random()) + 1 ;
 }
}

class CircleB extends Circle
{
 public CircleB(int x, int y, int r)
 {
 super(x, y, r) ;
 ++score ;
 }
}


public class TestApplet extends Applet implements ActionListener {
 private static final long serialVersionUID = 1L;
 private static final int BUTTON_NUM = 5 ;
 private Button[] buttons ;
 private Circle[] circles ;

 public void init()
 {
 buttons = new Button[BUTTON_NUM] ;
 circles = new Circle[BUTTON_NUM] ;
 for ( int i = 0 ; i < BUTTON_NUM ; ++i ){
 circles[i] = null ;
 buttons[i] = new Button("button"+ (i+1));
 buttons[i].addActionListener(this);
 add(buttons[i]);
 }
 }
 
 public void actionPerformed(ActionEvent e)
 {
 for ( int i = 0 ; i < BUTTON_NUM ; ++i ) {
 if ( e.getSource() == buttons[i] &amp;&amp; circles[i] == null ) 
 {
 int r = buttons[i].getWidth()/2 ;
 circles[i] = new CircleA(buttons[i].getX() + r,
 buttons[i].getY() + buttons[i].getHeight() + r, r);
 break ;
 }
 }
 repaint();
 }

 public void paint(Graphics g)
 {
 for(int i = 0 ; i < BUTTON_NUM ; ++i)
 {
 if (circles[i] != null) {
 int x = circles[i].getX() ;
 int y = circles[i].getY() ;
 int r = circles[i].getR() ;
 g.fillOval(x-r, y-r, 2*r, 2*r) ;
 }
 }
 String score = "score"+Circle.getScore();
 g.drawString(score, 0, getHeight());
 }
}

注意:

全てAクラスで作っています。

全てBクラスで作成する場合はactionPerformed内でnewするCirleAをCircleBに変えてください。

scoreはとりあえず左下に表示しておきます。

urlはダミーです

http://q.hatena.ne.jp/

◎質問者からの返答

ありがとうございました!また機会がありましたらその時はよろしくお願いします(^0^)

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ