2019-11-08 21:43:03 Java

Java

Copy Copied! Full
import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.applet.AudioClip; public class Project2019_1a extends Applet { /*  ここは、プログラムのどこからでも使いたい 変数などを宣言しておくフィールドです。  変数や、オブジェクトの入れものを用意しています。 */ // マウスのx座標の記録用変数 Mx, y座標の記録用変数 Myです。 int Mx = 0, My = 0; // // gを、アプレットに組み込まれている標準グラフィクス描画対象として使います。 // (代入は init()メソッドで行っています。) Graphics g; // // g2を、高度なグラフィクス機能(Graphics2D)を使う場合の描画対象として使います。 // (代入は init()メソッドで行っています。) Graphics2D g2; // // アプレットである自分を、リスナーオブジェクトから呼び出せるようにするために、 // 入れ物 app を用意します(代入は init()メソッドで行っています。)。 Applet app; // // 画像ファイルから読み込む複数の画像を入れるためのオブジェクトです //(今回は配列として用意)。 Image img[]; Image products[]; Image message[]; // // 音声ファイルを入れるためのオブジェクトです(今回は配列として用意)。 AudioClip ac[]; AudioClip sound[]; // // ボタン部品の入れ物 bt1 を用意します。 Button bt1,bt2,bt3,bt4,bt5; //bt2は中身、bt3は真上、bt4は真横、bt5はカウンター // 描画する画像番号を指定するための変数です(ドラッグ動作ごとに0~9を循環させます)。 int m = 0; // ////////////////////////////////////////// // アプレット起動時の初期化処理 ////////////////////////////////////////// @Override public void init() { // アプレット自身(this) を、どこからでも呼び出せるように app に代入しておきます。 // (画像描画の際に、描画を担当する部品としてアプレットを知らせる必要があるためです) app = this; // 画面サイズを希望サイズ(600x600)に変更しています。 app.setSize(600, 600); // // このアプレットが持つ描画面を受け取り、gという名前で呼び出せるようにします。 g = app.getGraphics(); // // Graphics2Dの機能を使う場合は、g2として呼び出せるようにします。 g2 = (Graphics2D) g; // // このアプレットの背景を明るい灰色に着色します。 app.setBackground(new Color(0, 0, 0)); // /*  用意しておいた10枚の画像を順番に画像用配列img[]に読み込み、 プログラム中で利用できるようにしています。  ファイル名は T0.GIF~T9.GIF ですが、for文で数字部分を変えながら ファイル名を指定しています。 */ img = new Image[10]; for (int i = 0; i < 10; i++) { img[i] = app.getImage(app.getCodeBase(), "images/T" + i + ".GIF"); } // 以下の5行は、グラフィクスの読み込みを遅滞なく行わせるための簡易手法です。 // なくても動作しますが、書くと確実に描画が行われます。(参考まで) // ここから Image mi = createImage(500,500); for (int i = 0; i < 10; i++) { Graphics gmi = mi.getGraphics(); gmi.drawImage(img[i], 0, 0, app); } // ここまで products = new Image[3]; //products[0]が中身、products[1]が真上、products[2]が真横 for(int j = 0; j < 3; j++) { products[j] = app.getImage(app.getCodeBase(),"images/C" + j + ".GIF"); } message = new Image[10]; for(int l = 0; l < 10; l++) { message[l] = app.getImage(app.getCodeBase(),"images/M" + l + ".GIF"); } /*  用意しておいた4つの音を順番に音の格納用配列 ac[]に読み込み、 プログラム中で利用できるようにしています。  ファイル名は s0.wav~s3.wav ですが、for文で数字部分を変えながら ファイル名を指定しています。 */ ac = new AudioClip[4]; for (int i = 0; i < 4; i++) { ac[i] = app.getAudioClip(getCodeBase(), "sounds/s" + i + ".wav"); } sound = new AudioClip[6]; for(int p = 0; p < 6; p++) { sound[p] = app.getAudioClip(getCodeBase(), "sounds/m" + p + ".wav"); } // //ボタンの組み込み bt1 = new Button("クリア"); // 画面にボタンを貼り付けます。2コ以上作成すると順番に左から並びます。 this.add(bt1); // ボタンbt1に リスナー(ボタンの場合はアクションリスナー)を貼り付けます。 bt1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { // ボタンを押した際に、画面を消して、paintメソッドを呼んでいます。 // これにより最初の画面を再描画しています。 sound[1].play(); repaint(); // 0番の音を再生させています。 //ac[0].play(); m = 0; } }); bt2 = new Button("中身"); //C0.GIFのやつ this.add(bt2); bt2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { sound[1].play(); g.drawImage(products[0], 150, 300, app); } }); bt3 = new Button("真上"); //C1.GIFのやつ this.add(bt3); bt3.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { sound[1].play(); g.drawImage(products[1], 150, 300, app); } }); bt4 = new Button("真横"); //C2.GIFのやつ this.add(bt4); bt4.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { sound[1].play(); g.drawImage(products[2], 150, 300, app); } }); bt5 = new Button("カウンター"); this.add(bt5); bt5.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { m++; Font f3 = new Font("TimesRoman", Font.BOLD, 50); g.setFont(f3); switch(m) { case 5: sound[1].play(); g.setColor(new Color(255, 224, 32)); g.drawString("食べ過ぎ",1200, 500); break; case 6: g.setColor(new Color(0, 0, 0)); g.drawString("食べ過ぎ",1200, 500); break; case 10: sound[1].play(); g.setColor(new Color(255, 224, 32)); g.drawString("注意!",1200, 500); break; case 11: g.setColor(new Color(0, 0, 0)); g.drawString("注意!",1200, 500); break; case 15: sound[1].play(); g.setColor(new Color(255, 224, 32));; g.drawString("中毒",1200, 500); break; case 16: g.setColor(new Color(0, 0, 0)); g.drawString("中毒",1200, 500); } Font f4 = new Font("TimesRoman", Font.BOLD, 100); g.setFont(f4); sound[1].play(); if(m == 1) { g.setColor(new Color(255, 255, 255)); g.drawString("["+ m +"]", 1000, 500); } else { g.setColor(new Color(0, 0, 0)); int s = m - 1; g.drawString("["+ s +"]", 1000, 500); g.setColor(new Color(255, 255, 255)); g.drawString("["+ m +"]", 1000, 500); } } }); /////////////////////////////////////////////////////////////////////////// // (1)マウスの瞬間動作に反応する「イベントリスナー」MouseListenerの登録 /////////////////////////////////////////////////////////////////////////// this.addMouseListener( new MouseAdapter() { // ①マウスがクリックされたときの処理 public void mouseClicked(MouseEvent e) { System.out.println("(1)クリックされました..."); //マウスの位置に画像を描画しています。 //また、描画のたびに画像番号を切り替えています)。 /* m++; m = (m > 9) ? 0 : m; g.drawImage(img[m], e.getX(), e.getY(), app);*/ sound[1].play(); for(int n = 1; n <= 6; n++) { double r = 0; r = (Math.random() * 10) % 10 ; g.drawImage(message[(int)r],1740,n * 130, app); } } // ②マウスカーソルが画面内に入ったときの処理 /*public void mouseEntered(MouseEvent e) { System.out.println("(2)画面に入りました..."); ac[3].play(); // 3番の音を再生させています。 }*/ // ③マウスカーソルが画面から出たときの処理 /*public void mouseExited(MouseEvent e) { System.out.println("(3)画面から出ました..."); ac[2].play(); // 2番の音を再生させています。 }*/ // ④マウスボタンが押されたときの処理 /*public void mousePressed(MouseEvent e) { System.out.println("(4)ボタンが押されました..."); ac[1].play(); // 1番の音を再生させています。 }*/ // ⑤マウスボタンを放したときの処理 /*public void mouseReleased(MouseEvent e) { System.out.println("(5)ボタンが放されました..."); }*/ }); /////////////////////////////////////////////////////////////////////////// // (2)マウスの連続動作に反応する「イベントリスナー」MouseMotionListenerの登録 /////////////////////////////////////////////////////////////////////////// /*this.addMouseMotionListener( new MouseMotionAdapter() { // ⑥ドラッグしたときの処理 @Override public void mouseDragged(MouseEvent e) { System.out.println("(6)マウスドラッグ中です..."); //マウスの位置に画像を描画しています。 //また、描画のたびに画像番号を切り替えています)。 m++; m = (m > 9) ? 0 : m; g.drawImage(img[m], e.getX(), e.getY(), app); ac[1].play(); // 1番の音を再生させています。 } // ⑦マウスを動かしたときの処理 @Override public void mouseMoved(MouseEvent e) { System.out.println("(7)マウス移動中です..."); } });*/ } ////////////////////////////////////////////////////////////////////////////////////// // 背景として描いておきたい画像や図形は、paintメソッドの中で描いておきましょう。 // マウスのイベント処理の中からpaintメソッドを呼びたいときは、直接は呼ばずに、 // repaint(); という命令で間接的に呼びます。 // ただし、そのときには、それまでの画面は一度消されてから、描き直しが行われます。 public void paint(Graphics g) { //文字フォントを作成します。 Font f = new Font("TimesRoman", Font.BOLD, 30); Font f2 = new Font("TimesRoman", Font.HANGING_BASELINE,30); // フォントを画面に設定します。 g.setFont(f); g.setColor(Color.RED); g.drawString("三角チョコパイ 黒",300, 100); g.setColor(new Color(160, 128, 96)); g.drawString("「サクとろ~り」な食感が楽しめる冬のスイーツです。", 300, 200); g.setColor(Color.WHITE); g.drawLine(1720,0,1720,1000); g.setFont(f2); g.drawString("コメント欄", 1750, 80); g.setColor(new Color(160, 128, 96)); g.fillArc(1000, 600, 200, 200, 200, 200); } }