こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

音声ファイルの入れ方

下記ようなじゃんけんゲームでボタンを押した際にwav拡張子の音声ファイルを再生したいのですがどのようにすればよいでしょうか

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import javax.sound.sampled.*;

public class janken extends Applet
implements Runnable, ActionListener {
private static final int EXTERNAL_BUFFER_SIZE = 128000;

Image image[] = new Image[3];
Thread t;
int index1 = 0;
int index2 = 0;
String msg = "";
String msg1 = "";

boolean state = false;
Button b1 = new Button("ぐー");
Button b2 = new Button("ちょき");
Button b3 = new Button("ぱー");

public void init(){
for(int i = 0; i<=2; i++){
image[i] = getImage(getDocumentBase(),"hanabi" + (i+1) + ".JPG");
}
add(b1);
add(b2);
add(b3);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
msg1 = "結果は・・";
}

public void paint(Graphics g){
g.drawImage(image[index1],350,30,this);
g.drawImage(image[index2],745,30,this);
g.drawString("わたし",420,300);
g.drawString("あなた",820,300);
g.drawString(msg,630,320);
g.drawString(msg1,550,320);
}
 public void start(){
 state = true;
 t = new Thread(this);
t.start();


}

public void run(){
while(state){
index1++;
if(index1 == 3){
index1 = 0;
}
index2++;
if(index2 == 3){
index2 = 0;
}
repaint();
try {
Thread.sleep(60);
}catch(InterruptedException e) { }
}
}

public void actionPerformed(ActionEvent e){
if(state == false) {
start();
return;
}
state = false;
if(e.getSource() == b1) {
msg = "ぐー";
index2 = 0;
}

else if(e.getSource() == b2){
msg = "ちょき";
index2 = 1;
}

else if(e.getSource() == b3){
msg = "ぱー";
index2 = 2;
}
check();
repaint();
}


public void check() {
if(index1 == index2) msg ="あいこ";
else if (index1 == 0) {
if(index2 == 2) msg="あなたの勝ち";
else msg ="あなたの負け";
}

else if(index1 == 1) {
if(index2 == 0) msg="あなたの勝ち";
else msg="あなたの負け";
}

else if(index1 == 2) {
if(index2 == 1) msg="あなたの勝ち";
else msg="あなたの負け";
}
}
}

投稿日時 - 2009-12-06 13:59:48

QNo.5502253

困ってます

このQ&Aは役に立ちましたか?

4人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

変数 AudioClip ac1, ac2, ac3;を定義する。
init()内で
 ac1 = getAudioClip(getDocumentBase(),"グーのwavファイル名");
 ac2 = getAudioClip(getDocumentBase(),"チョキのwavファイル名");
 ac3 = getAudioClip(getDocumentBase(),"パーのwavファイル名");
actionPerformed()内で、各ボタンが特定後、対応するacXをpaly()
 例: ac1.play();
詳しくは、Applet.getAudioClip()のAPIドキュメント参照。
 

投稿日時 - 2009-12-08 10:50:17

補足

回答ありがとうございます。参考にさせていただき以下のようにやってみたのですが、エラーが返ってきます。APIドキュメントも見てみたのですがどうしてもわかりません。もしよろしければどこがおかしいのか教えていただけませんか。
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import java.applet.AudioClip;

public class janken extends Applet
implements Runnable, ActionListener {
private static final int EXTERNAL_BUFFER_SIZE = 128000;

Image image[] = new Image[3];
Thread t;
int index1 = 0;
int index2 = 0;
String msg = "";
String msg1 = "";


boolean state = false;
Button b1 = new Button("ぐー");
Button b2 = new Button("ちょき");
Button b3 = new Button("ぱー");

public void init(){
for(int i = 0; i<=2; i++){
image[i] = getImage(getDocumentBase(),"hanabi" + (i+1) + ".JPG");
}
add(b1);
add(b2);
add(b3);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
msg1 = "結果は・・";
ac1 = getAudioClip(getDocumentBase(),"janken.wav");
}

public void paint(Graphics g){
g.drawImage(image[index1],350,30,this);
g.drawImage(image[index2],745,30,this);
g.drawString("わたし",420,300);
g.drawString("あなた",820,300);
g.drawString(msg,630,320);
g.drawString(msg1,550,320);
}

public void start(){
state = true;
t = new Thread(this);
t.start();


}

public void run(){
while(state){
index1++;
if(index1 == 3){
index1 = 0;
}
index2++;
if(index2 == 3){
index2 = 0;
}
repaint();
try {
Thread.sleep(60);
}catch(InterruptedException e) { }
}
}

public void actionPerformed(ActionEvent e){
if(state == false) {
ac1.play();
start();
return;


}
state = false;
if(e.getSource() == b1) {
msg = "ぐー";
index2 = 0;
}

else if(e.getSource() == b2){
msg = "ちょき";
index2 = 1;
}

else if(e.getSource() == b3){
msg = "ぱー";
index2 = 2;
}
check();
repaint();
}


public void check() {
if(index1 == index2) msg ="あいこ";


else if (index1 == 0) {
if(index2 == 2) msg="あなたの勝ち";
else msg ="あなたの負け";
}

else if(index1 == 1) {
if(index2 == 0) msg="あなたの勝ち";
else msg="あなたの負け";
}

else if(index1 == 2) {
if(index2 == 1) msg="あなたの勝ち";
else msg="あなたの負け";
}

}
}

投稿日時 - 2009-12-08 14:50:20

あなたにオススメの質問