6/11 BattlePanel.java | include<stdio.h>のブログ

include<stdio.h>のブログ

ブログの説明を入力します。

import java.awt.BorderLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JPanel;

import model.Player;

public class BattlePanel {
private GameFrame gf;
private Player player;

private JPanel battlePanel; //最終的に全てを貼り付けるパネル
private JPanel boardPanel; //バトルボード、ストックボードを貼り付けるパネル
private JPanel battleBoardPanel; //バトルボードを生成するパネル
private JPanel myStockBoardPanel; //自分のストックボード
private JPanel otherStockBoardPanel;//敵のストックボード
private JPanel menuPanel; //メニューを貼り付けるパネル
private JPanel recordPanel; //履歴を貼り付けるパネル

private JButton battleButton; //ボードに実装するボダン
private JButton reStartButton; //最初からやり直すボタン
private JButton recordButton;

//コンストラクタ
public BattlePanel(GameFrame gf,Player player){
this.gf = gf;
this.player = player;
battlePanel = new JPanel(new BorderLayout());
initialize();

}

//バトルパネルを初期化する
public void initialize(){
battleBoardPanel = makeBattlePanel();
myStockBoardPanel = makeStockPanel(true);
otherStockBoardPanel = makeStockPanel(false);
recordPanel = new JPanel();
recordButton = new JButton("record");
recordButton.addActionListener(new ButtonListener());
recordPanel.add(recordButton);
menuPanel = new JPanel();
reStartButton = new JButton("test");
reStartButton.addActionListener(new ButtonListener());
menuPanel.add(reStartButton);

GridBagLayout layout = new GridBagLayout();
boardPanel = new JPanel();
boardPanel.setLayout(layout);
GridBagConstraints gbc = new GridBagConstraints();

gbc.gridx = 0;
gbc.gridy = 0;
layout.setConstraints(otherStockBoardPanel, gbc);

gbc.gridx = 1;
gbc.gridy = 1;
layout.setConstraints(battleBoardPanel, gbc);

gbc.gridx = 2;
gbc.gridy = 2;
layout.setConstraints(myStockBoardPanel, gbc);

boardPanel.add(otherStockBoardPanel);
boardPanel.add(battleBoardPanel);
boardPanel.add(myStockBoardPanel);

battlePanel.add("Center",boardPanel);
battlePanel.add("West",menuPanel);
battlePanel.add("East",recordPanel);
}

//バトル用のボードを生成する
public JPanel makeBattlePanel(){
JPanel panel = new JPanel(new GridLayout(4,3));
for(int i = 0;i<4;i++){
for(int j = 0;j<3;j++){
battleButton = new JButton(i+","+j);
battleButton.setName(i+","+j);
battleButton.addActionListener(new BattleListener());
panel.add(battleButton);

}
}
return panel;
}

//ストック用のボードを生成する
public JPanel makeStockPanel(boolean b){
JPanel panel = new JPanel(new GridLayout(2,3));
if(b){ //自分のストックボードは正方向で表示する
for(int i = 0;i<2;i++){
for(int j = 0;j<3;j++){
battleButton = new JButton(i+","+j);
battleButton.addActionListener(new myStockListener());
panel.add(battleButton);
}
}
}else{ //敵側のストックボードは逆方向で表示する
for(int i = 1;i>=0;i--){
for(int j = 2;j>=0;j--){
battleButton = new JButton(i+","+j);
battleButton.addActionListener(new otherStockListener());
panel.add(battleButton);
}
}
}
return panel;
}

public class BattleListener implements ActionListener{

@Override
public void actionPerformed(ActionEvent e) {
// TODO 自動生成されたメソッド・スタブ
//gf.changePanel("record");
String[] s = e.getActionCommand().split(",");
int i = Integer.valueOf(s[0]);
int j = Integer.valueOf(s[1]);

//クリックされた座標にあるコマの名前を表示
System.out.println(player.getArea(i,j));
//クリックされた座標にあるコマの着手可能範囲を捜査
int[][] tmp = player.takeHand(i, j);
if(tmp == null){
System.out.println("そこに着手可能なコマはありません");
}
}

}

public class myStockListener implements ActionListener{

@Override
public void actionPerformed(ActionEvent e) {
// TODO 自動生成されたメソッド・スタブ
System.out.println("myStock");
}

}
public class otherStockListener implements ActionListener{

@Override
public void actionPerformed(ActionEvent e) {
// TODO 自動生成されたメソッド・スタブ
System.out.println("otherStock");
}

}

//ラベル付きボタン用アクションリスナー
public class ButtonListener implements ActionListener{

@Override
public void actionPerformed(ActionEvent e) {
// TODO 自動生成されたメソッド・スタブ
if(e.getActionCommand().equals("test")){
gf.changePanel("title");
}else if(e.getActionCommand().equals("record")){
gf.changePanel("record");
}
}

}


//バトルパネルを返す
JPanel getPanel(){
return battlePanel;
}

}