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

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

ただいまの
回答率

87.78%

java アプレット

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 1,048
コード
public class ap1 extends Panel implements ItemListener, ActionListener{
    
    APP parent;
    
    static int player_PC;    //プレイヤー人数
    static int player_NPC;   //コンピュータ人数
    static int player;       //総プレイヤー人数
     static int mode;         //試合方法(1.点数制 2.勝利数制)
    static int siaisuu;      //試合数
    
    static Judge judge_main = new Judge();
    static Player player_main1[] = new Player[player];
    
    
//--------------------------------------------------------------------------------
    Label lab1= new Label("ジャンケンゲーム");
    Label lab2= new Label("プレイヤー人数選択");
    Label lab3= new Label("コンピュータ人数選択");
    Label lab4= new Label("対戦方法選択");
    Label lab5= new Label("対戦回数選択");
    
    CheckboxGroup PC = new CheckboxGroup();
    Checkbox cb1 = new Checkbox("1人", PC, false);
    Checkbox cb2 = new Checkbox("2人", PC, false);
    ・
   ・
    ・
    Button bt1 = new Button("OK");
    
//--------------------------------------------------------------------------------
    //ap1のコンストラクタ
    public ap1(APP app){
        
        parent = app;
        
        setBackground(Color.pink);  //パネルap1の背景の色を設定
        setBounds(0, 0, 700, 700);  //パネルap1の大きさ設定
        
        
        setLayout(null);
        
        lab1.setBounds(180, 50, 340, 70);
        lab1.setBackground(Color.green);
        lab1.setForeground(Color.blue);
        lab1.setFont(new Font("Serif", Font.PLAIN, 40));
        add(lab1);
        
        lab2.setBounds(100, 180, 165, 50);
        lab2.setFont(new Font("Serif", Font.PLAIN, 16));
        add(lab2);
        
        cb1.setBounds(400, 180, 50, 50);
        add(cb1);
        cb2.setBounds(470, 180, 50, 50);
        add(cb2);
        ・
      ・
     ・
        
        
        
        bt1.setBounds(305, 590, 120, 50);
        bt1.setEnabled(false);           //ボタンの利用可・不可設定(true可、false不可)
        add(bt1);
        bt1.addActionListener(this);
        
        parent.add(this);        
    }
    
//--------------------------------------------------------------------------------
    public void init(){
        
        repaint();
        
    }
    
//--------------------------------------------------------------------------------
    //チェックボックスが選択された後の処理
    public void itemStateChanged(ItemEvent e){
        
        repaint();
        
    }
    
//--------------------------------------------------------------------------------
    public void paint(Graphics g){
        
        for(int i = 0; i < player_PC; i++){
            player_main1[i] = new Player("プレイヤー" + (i+1));
        }
        for(int i = player_PC; i < player; i++){
            player_main1[i] = new Player("コンピュータ" + (i+1-ap1.player_PC));
        }
        
        if((PC.getSelectedCheckbox() == cb1 || PC.getSelectedCheckbox() == cb2)
        && (NPC.getSelectedCheckbox() == cb3 || NPC.getSelectedCheckbox() == cb4 || NPC.getSelectedCheckbox() == cb5  || NPC.getSelectedCheckbox() == cb6)
        && (Mode.getSelectedCheckbox() == cb7 || Mode.getSelectedCheckbox() == cb8)
        && (GameNum.getSelectedCheckbox() == cb9 || GameNum.getSelectedCheckbox() == cb10 || GameNum.getSelectedCheckbox() == cb11 || GameNum.getSelectedCheckbox() == cb12)){
            
            if(PC.getSelectedCheckbox() == cb1 && NPC.getSelectedCheckbox() == cb3){
                g.setColor(Color.red);                         //文字の色設定
                g.setFont(new Font(null, Font.PLAIN, 16));     //文字のサイズ設定
                g.drawString("※ 参加人数が足りません", 130, 530);
                
                bt1.setEnabled(false); //ボタン利用不可
            }
            else if(PC.getSelectedCheckbox() == cb2 && NPC.getSelectedCheckbox() == cb6){
                g.setColor(Color.red);                         //文字の色設定
                g.setFont(new Font(null, Font.PLAIN, 16));     //文字のサイズ設定
                g.drawString("※ 参加可能人数を超えています", 130, 530);
                
                bt1.setEnabled(false); //ボタン利用不可
            }
            else{
                g.setFont(new Font(null, Font.PLAIN, 16));     //文字のサイズ設定
                g.drawString("この条件でいいですか?", 130, 530);
                
                bt1.setEnabled(true); //ボタン利用可
            }
            
                        
            player = player_PC + player_NPC;
            
        }
    }
    
//--------------------------------------------------------------------------------
    //ボタンが押された後の処理
    public void actionPerformed(ActionEvent e){
        
        parent.remove(parent.panel);     //パネルap1を取り除く
        setLayout(null); 
        parent.panel = new ap2(parent);  //パネルap2の生成
    }
}


コード
public class ap2 extends Panel implements ActionListener{
    
    APP parent2;
    
//---------------------------------------------------------------------------
    Label lab1 = new Label("出す手を決めてください");
    Label lab2 = new Label("0(グー)、1(チョキ)、2(パー)を入力してください");
    Label lab3 = new Label("待機中");
    Label lab4 = new Label("もう一度選択してください");
    Label lab5 = new Label("待機中");
    Label lab6 = new Label("もう一度選択してください");
    
    TextField tf1 = new TextField(5);
    TextField tf2 = new TextField(5);
    static String str[] = new String[ap1.player_PC];    //テキストフィールドに書かれた文字(1,2,3)を配列化
    static int str_int[] = new int[ap1.player_PC];      //str[]をint型に変更(PCの出す手の配列)
    
    static int hand_NPC[] = new int[ap1.player_NPC];    //NPCの出す手の配列
    
    Button bt1 = new Button("決定.");
    Button bt2 = new Button("決定,");
    Button bt3 = new Button("ジャンケン ポン");

//---------------------------------------------------------------------------
    //ap2のコンストラクタ
    public ap2(APP app){
        
        parent2 = app;
        
        setBackground(Color.pink);
        setBounds(0, 0, 700, 700);
        
        
        setLayout(null);
        
        lab1.setBounds(240, 30, 300, 35);
        lab1.setFont(new Font("Serif", Font.PLAIN, 20));
        add(lab1);
        ・
        ・        
        ・    
        
        bt3.setBounds(285, 350, 130, 50);
        bt3.setEnabled(false);           //ボタンの利用可・不可設定(true可、false不可)
        add(bt3);
        bt3.addActionListener(this);
        
        
        parent2.add(this);
        
    }
    
//---------------------------------------------------------------------------
    //最初に処理されるメソッド
    public void init(){
        
        repaint();
        
    }
    
//---------------------------------------------------------------------------
    public void paint(Graphics g){
        
        for(int i = 0; i < ap1.player_PC; i++){
            g.setFont(new Font(null, Font.PLAIN, 14));
            g.drawString(ap1.player_main1[i].getName(), 80+150*i, 140);
        }
        for(int i = ap1.player_PC; i < ap1.player; i++){
            g.setFont(new Font(null, Font.PLAIN, 14));
            g.drawString(ap1.player_main1[i].getName(), 80+150*i, 140);
            
            
            g.setFont(new Font("Serif", Font.PLAIN, 12));
            g.drawString("待機中", 100+150*i, 304);
        }
        
    }
    
//----------------------------------------------------------------------------
    //ボタンが押された後の処理
    public void actionPerformed(ActionEvent e){
        
        //"決定."が押された時の処理
        if("決定.".equals(e.getActionCommand())){
            ・・・            
        }
        //"決定,"が押された時の処理
        else if("決定,".equals(e.getActionCommand())){
           ・・・            
        }
        //"ジャンケン ポン"が押された時の処理
        else if("ジャンケン ポン".equals(e.getActionCommand())){
            ・・・
            }
            
            parent2.remove(parent2.panel);     //パネルap2を取り除く
            setLayout(null);
            parent2.panel = new ap3(parent2);  //パネルap3の生成
            
        }
    
    }


}

アプレットでじゃんけんゲームを作っています。
上のプログラムが途中ですがそれになります。
今エラーは出ていないのですが、
ap1クラスのpaintメソッドでPlayerクラスのインスタンス?を作っていて、ap2クラスのpaintメソッドでプレイヤー1、プレイヤー2、コンピュータ1・・・のように名前を表示させようとしているのですがこのプログラムは表示できませんでした。
どこに間違いがあるのか教えていただきたいです。
よろしくお願いします。
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

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

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

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

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

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

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

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

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • rysh

    2015/11/08 13:10

    間違いを見つけるためにはこちらの環境で動作させてみようとしましたが、動かせませんでした。
    提示するコードは省略せずに載せたほうがいいです。
    ファイル数が多いのであればgithubなどにアップしてリンクを貼るといいと思います。

    キャンセル

回答 1

check解決した方法

0

すみません。
解決できました!

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 87.78%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

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