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

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

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

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

解決済

GUIでのwhileの不具合

kumathi
kumathi

総合スコア7

Java

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

2回答

0評価

1クリップ

375閲覧

投稿2022/05/28 18:37

編集2022/05/29 10:37

質問失礼します。今どちらかじゃんけんで三勝したらグリコの配点で勝敗を決めるゲームを作っています。しかし下記のコードを書いてみたところwhileを入れた瞬間急に動かなくなったり、明らかに乱数ではないもの(コンピューターの手)が出てしまったりと不具合が起きてしまいます。自分なりに原因を考えてみたところ全く分からない状況です。どなたかご教授いただけないでしょうか。

import javax.swing.JFrame; public class GameMain { public static void main(String[] args) { // TODO Auto-generated method stub //ウィンドウ設定 JFrame frame = new JFrame("Guriko"); frame.setSize(640, 480); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setResizable(false); Panel.createPanel(frame); //ウィンドウ表示 frame.setVisible(true); } }
import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class Panel { public static JLabel headerLabel; public static JLabel contentsLabel; public static void createPanel(JFrame frame) { //ヘッダーパネル Dimension headerPanelDimension = new Dimension(640, 50); JPanel headerPanel = setPanel(Color.BLACK, headerPanelDimension); headerLabel = new JLabel("Let's play Guriko"); headerLabel = setFont(Color.WHITE,headerLabel,24); headerPanel.add(headerLabel); frame.add(headerPanel,BorderLayout.NORTH); //コンテンツパネル Dimension contentsPanelDimension = new Dimension(640, 380); JPanel contentsPanel = setPanel(Color.WHITE,contentsPanelDimension); contentsLabel = new JLabel("Rock-Scissors-Paper..."); contentsLabel = setFont(Color.BLACK,contentsLabel,54); contentsPanel.add(contentsLabel); frame.add(contentsPanel,BorderLayout.CENTER); //フッタパネル Dimension footerPanelDimension = new Dimension(640, 50); JPanel footerPanel = setPanel(Color.BLACK,footerPanelDimension); Player.createButton(footerPanel); frame.add(footerPanel,BorderLayout.SOUTH); } public static JPanel setPanel(Color color, Dimension PanelDimension) { JPanel panel = new JPanel(); panel.setPreferredSize(PanelDimension); panel.setLayout(new BorderLayout()); panel.setBackground(color); return(panel); } public static JLabel setFont(Color clr,JLabel label,int strSize) { label.setForeground(clr); Font labelFont = new Font("MS ゴシック",Font.PLAIN,strSize); label.setFont(labelFont); label.setHorizontalAlignment(JLabel.CENTER); label.setVerticalAlignment(JLabel.CENTER); return(label); } }
import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Random; import javax.swing.JButton; import javax.swing.JPanel; public class Player implements ActionListener { int win, lose, points1,points2; public static void createButton(JPanel footerPanel) { //ボタンを表示 JButton btnGu = new JButton("Rock"); btnGu = setButton(btnGu); footerPanel.add(btnGu, BorderLayout.WEST); JButton btnChoki = new JButton("Scissors"); btnChoki = setButton(btnChoki); footerPanel.add(btnChoki, BorderLayout.CENTER); JButton btnPa = new JButton("Paper"); btnPa = setButton(btnPa); footerPanel.add(btnPa, BorderLayout.EAST); } public static JButton setButton(JButton button) { int buttonSizeX = (640 - 20)/3; Dimension buttonDimesion = new Dimension(buttonSizeX, 50); button.setPreferredSize(buttonDimesion); Font buttonFont = new Font("MS ゴシック",Font.PLAIN,24); button.setFont(buttonFont); Player player = new Player(); button.addActionListener(player); return(button); } public void actionPerformed(ActionEvent e) { win = 0; lose = 0; while (win < 3 && lose < 3) { String command = e.getActionCommand(); int playerHand = 0; if (command.equals("Rock")) playerHand = 0; else if (command.equals("Scissors")) playerHand = 1; else if (command.equals("Paper")) playerHand = 2; Random random = new Random(); int computerHand = random.nextInt(3); if (computerHand == 0) Panel.contentsLabel.setText("Rock"); else if (computerHand == 1) Panel.contentsLabel.setText("Scissors"); else if (computerHand == 2) Panel.contentsLabel.setText("Paper"); if(playerHand==0 && computerHand==1) { Panel.headerLabel.setText("Win"); win++; } else if(playerHand==1 && computerHand==2 || playerHand==2 && computerHand==0) { Panel.headerLabel.setText("Win"); win++; } else if(playerHand==0 && computerHand==2 || playerHand==2 && computerHand==1) { Panel.headerLabel.setText("Lose"); lose++; } else if(playerHand==1 && computerHand==0) { Panel.headerLabel.setText("Lose"); lose++; } else if(playerHand==computerHand) { Panel.headerLabel.setText("Drew"); } } } }

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Java

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