コード 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・・・のように名前を表示させようとしているのですがこのプログラムは表示できませんでした。
どこに間違いがあるのか教えていただきたいです。
よろしくお願いします。
間違いを見つけるためにはこちらの環境で動作させてみようとしましたが、動かせませんでした。
提示するコードは省略せずに載せたほうがいいです。
ファイル数が多いのであればgithubなどにアップしてリンクを貼るといいと思います。
回答1件
あなたの回答
tips
プレビュー