質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

1239閲覧

結果によって異なるメッセージを表示するダイアログを作りたい

series207

総合スコア49

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2019/11/10 00:38

編集2019/11/10 02:46

#困っていること
プログラムを作っているのですが、10回ボタンが押されたときにそれまでの勝敗状況に応じて異なるメッセージを表示するダイアログを作りたいのですが、どうすればいいかわかりません。

#該当のソースコード

java

1import java.awt.Dimension; 2import java.awt.Font; 3import java.awt.event.ActionEvent; 4import java.awt.event.ActionListener; 5import java.util.Random; 6 7import javax.swing.BoxLayout; 8import javax.swing.ImageIcon; 9import javax.swing.JButton; 10import javax.swing.JFrame; 11import javax.swing.JLabel; 12import javax.swing.JOptionPane; 13import javax.swing.JPanel; 14 15public class A2 { 16 JLabel lb1,lb2,lb3,lb4; 17 JLabel lb5; 18 JLabel lb6; 19 JLabel lb7; 20 JButton b1,b2,b3,b4; 21 JFrame f; 22 private String[] img = {"gu2.gif","choki2.gif","pa2.gif"}; 23 private String[] name = {"グー","チョキ","パー"}; 24 int[] youcount={0,0,0}; 25 int[] comcount={0,0,0}; 26 int[] two ={0,0,0}; 27 int sum=0; 28 String[] youmes = {"勝", 29 "敗", 30 "分"}; 31 32 String [] commes = {"敗" , 33 "勝", 34 "分"}; 35 36 37 public static void main(String[] args) { 38 new A2(); 39 } 40 public A2(){ 41 42 JPanel p1,p2,p3,p4,p5,p6,p7; 43 f=new JFrame("じゃんけん"); 44 f.getContentPane().setLayout(new BoxLayout( 45 f.getContentPane(),BoxLayout.PAGE_AXIS)); 46 f.setSize(800,1050); 47 48 lb1=new JLabel("YOU"); 49 lb1.setFont(new Font( "MS ゴシック" , Font.BOLD, 30)); 50 lb1.setBounds(250, 10, 80, 30); 51 52 lb2=new JLabel("COM"); 53 lb2.setFont(new Font( "MS ゴシック" , Font.BOLD, 30)); 54 lb2.setBounds(460, 10, 80, 30); 55 56 lb3=new JLabel(); 57 lb4=new JLabel(); 58 59 lb5=new JLabel(); 60 lb5.setFont(new Font( "MS ゴシック" , Font.BOLD, 30)); 61 62 63 lb6=new JLabel(); 64 lb6.setFont(new Font( "MS ゴシック" , Font.BOLD, 30)); 65 66 67 lb7=new JLabel("何出すのかな?"); 68 lb7.setFont(new Font( "MS ゴシック" , Font.BOLD, 30)); 69 70 p1=new JPanel(); 71 p2=new JPanel(); 72 p3=new JPanel(); 73 p4=new JPanel(); 74 p5=new JPanel(); 75 p6=new JPanel(); 76 p7=new JPanel(); 77 78 p1.setLayout(null); 79 80 // 81 JButtonListener jbl = new JButtonListener(); 82 for(int i=0; i<3; i++) 83 { 84 JButton b = new JButton(name[i]); 85 b.setPreferredSize(new Dimension(200, 100)); 86 b.setFont(new Font( "MS ゴシック" , Font.BOLD, 30)); 87 p6.add(b); 88 b.addActionListener(jbl); 89 } 90 91 b4=new JButton("リセット"); 92 93 b4.setPreferredSize(new Dimension(150, 50)); 94 b4.setFont(new Font( "MS ゴシック" , Font.BOLD, 20)); 95 96 b4.addActionListener(new Repjankenliset()); 97 98 p1.add(lb1); //YOU 99 p1.add(lb2); //COM 100 101 p2.add(lb3); //自分の画像 102 p2.add(lb4); //comの画像 103 104 p3.add(lb5); 105 p3.add(lb6); 106 107 p4.add(lb6); 108 p5.add(lb7); //勝ち負けメッセージ 109 110 p7.add(b4); 111 112 f.getContentPane().add(p1); 113 f.getContentPane().add(p2); 114 f.getContentPane().add(p3); 115 f.getContentPane().add(p4); 116 f.getContentPane().add(p5); 117 f.getContentPane().add(p6); 118 f.getContentPane().add(p7); 119 120 lb3.setIcon(new ImageIcon(img[0])); 121 lb4.setIcon(new ImageIcon(img[0])); 122 f.setVisible(true); 123 } 124 125 private class JButtonListener implements ActionListener { 126 public void actionPerformed(ActionEvent e) 127 { 128 JButton source = (JButton)e.getSource(); 129 int youhand,comhand,tencount=0; 130 tencount += 1; 131 if (source.getText().equals(name[0])) { 132 youhand = 0; 133 } else if (source.getText().equals(name[1])) { 134 youhand = 1; 135 } else { 136 youhand = 2; 137 } 138 lb3.setIcon(new ImageIcon(img[youhand])); 139 Random rndm = new Random(); 140 comhand = rndm.nextInt(3); 141 lb4.setIcon(new ImageIcon(img[comhand])); 142 judge(youhand,comhand,two,youcount,comcount); 143 enzan(two, youcount, comcount, sum, youmes, commes); 144 if(tencount==10){ 145 if(youcount[0]<comcount[0]){ 146 int r = JOptionPane.showConfirmDialog( 147 f, 148 "あなたの勝ちです。もう一度ゲームをしますか?" 149 JOptionPane.YES_NO_OPTION); //Yes_NO_OPTIONは解決できないか、フィールドではありません。 150//トークン "JOptionPane"に構文エラーがあります。このトークンを削除してください。 151 if (r==1) { 152 System.exit(0); 153 } 154 } else if(youcount[0]==comcount[0]) { 155 int r = JOptionPane.showConfirmDialog( 156 f, 157 "引き分けです。もう一度ゲームをしますか?" 158 JOptionPane.YES_NO_OPTION); 159 if (r==1) { 160 System.exit(0); 161 } 162 } else { 163 int r = JOptionPane.showConfirmDialog( 164 f, 165 "あなたの負けです。もう一度ゲームをしますか?" 166 JOptionPane.YES_NO_OPTION); 167 if (r==1) { 168 System.exit(0); 169 } 170 171 } 172 } 173 } 174 } 175 class Repjankenliset implements ActionListener { 176 public void actionPerformed(ActionEvent e){ 177 lb7.setText("何出すのかな?"); 178 lb5.setText(""); 179 lb6.setText(""); 180 } 181 } 182 183 public void judge(int youhand,int comhand,int two[],int youcount[],int comcount[]){ 184 if(youhand==comhand){ 185 lb7.setText("あいこです。"); 186 two[2] = 1; 187 youcount[2] += 1; 188 comcount[2] += 1; 189 } else if(youhand==0 && comhand==1 || 190 youhand==1 && comhand==2 || 191 youhand==2 && comhand==0){ 192 lb7.setText("あなたの勝ちです。"); 193 two[0] = 1; 194 youcount[0] += 1; 195 comcount[0] += 1; 196 } else { 197 lb7.setText("あなたの負けです。"); 198 two[1] = 1; 199 youcount[1] += 1; 200 comcount[1] += 1; 201 } 202 203 } 204 205 public void enzan(int two[],int youcount[],int comcount[],int sum,String youmes[],String commes[]) 206 { 207 sum = two[0]+two[1]+two[2]; 208 209 if(sum==1) 210 { 211 for(int i=0; i<=2; i++) 212 { 213 if(two[i]==1) 214 { 215 lb5.setText("あなた"+youcount[i]+youmes[i]); 216 lb6.setText("わたし"+comcount[i]+commes[i]); 217 } 218 } 219 } 220 else if(sum==2) 221 { 222 for(int x=0; x<=2; x++) 223 { 224 for(int y=x+1; y<=2; y++) 225 { 226 if(two[x]==1 && two[y]==1) 227 { 228 lb5.setText("あなた"+youcount[x]+youmes[x]+youcount[y]+youmes[y]); 229 lb6.setText("わたし"+comcount[x]+commes[x]+comcount[y]+commes[y]); 230 } 231 } 232 } 233 } 234 else 235 { 236 lb5.setText("あなた"+youcount[0]+youmes[0]+youcount[1]+youmes[1]+youcount[2]+youmes[2]); 237 lb6.setText("わたし"+comcount[1]+commes[1]+comcount[0]+commes[0]+comcount[2]+commes[2]); 238 } 239 } 240} 241 242 243 244 245 246

#プログラム内の変数について
youcount・・・プレイヤーの勝敗分をカウントする.youcount[0]=勝ち youcount[1]=負け youcount[2]=あいこ

comcount・・・コンピュータの勝敗分をカウントする

tencount・・・ボタンが押された回数をカウントする。10回押されたらダイアログを表示する。

#ダイアログ表示部分
144~157行目
この部分をカットして実行するとじゃんけんプログラムをプレイできます。

java

1if(tencount==10){ //ボタンが10回押されたらダイアログを表示する 2 int r = JOptionPane.showConfirmDialog( 3 f, 4 if(youcount[0]<comcount[0]){ 5 "あなたの勝ちです。\nもう1度ゲームをしますか?" 6//Yes_NO_OPTIONは解決できないか、フィールドではありません。 7//トークン "JOptionPane"に構文エラーがあります。このトークンを削除してください。 8 } else if(youcount[0]==comcount[0]){ 9 "引き分けです。\nもう1度ゲームをしますか?" 10 } else { 11 "あなたの負けです。\nもう1度ゲームをしますか?" 12 } 13 JOptionPane.YES_NO_OPTION); 14 if (r==1) { 15 System.exit(0); 16 } 17 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/11/10 00:44

このコードだけを提示されても不明な定義も多いので再現できません。 できればコピペで再現できる形でコードをご提示ください。
guest

回答1

0

ベストアンサー

if(条件1){ ダイアログ1表示 }
else if(条件2){ ダイアログ2表示 }
else { ダイアログ3表示 }

と、すればよろしい

投稿2019/11/10 00:46

編集2019/11/10 00:47
y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

series207

2019/11/10 01:07

回答のようにプログラムを書き換えてみましたが、今度はその部分で出たエラーが解決できません。エラーの該当箇所については、ソースコード内にコメントで記しています。
y_waiwai

2019/11/10 01:21

YES_NO_OPTIONが定義されてないというエラーです。 これはナニモノなんでしょうか
series207

2019/11/10 01:27

yesとnoの2択のダイアログを作りたいのでそれに必要なものかと思います。
series207

2019/11/10 01:31

一応エラーの意味は分かったのでとりあえずこの質問は解決済みとし、あとは自分で調べようと思います。
y_waiwai

2019/11/10 01:33

ああ、 > JOptionPane.showConfirmDiarog スペル間違ってますね
series207

2019/11/10 01:51 編集

ありがとうございます。
y_waiwai

2019/11/10 01:56

> static int showConfirmDialog(Component parent, Object message, String title, int optionType) こういう定義になってるので、提示のコードではtitleが抜けてるかと
series207

2019/11/10 02:08

タイトルを入れてみたらエラーがなくなりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問