我正在做一个包含创建战舰游戏的项目。 我有以下课程:
Battleship
(主要课程)Player
,Game
,Board
,Visualisation
(我有gridLayout
JButtons
的GUI类,用户按下JButton
想要插入船只的地方。首先,创建一个新的Game
,其中包含一些参数,例如电路板的大小。然后在课程Game
内我做了一个新的Visualisation
。在本课程中,我完成了actionListener
和actionPerformed
。
我的问题是我如何传递信息,例如,我已按下JButton
(将gridLayout
的那个单元格中的船只插入到Game
类} {}}} ?这就是我所拥有的:
Class Game
private Player _user;
private Player _computer;
然后我想检查_user
的董事会是否有可以插入船的位置。 _user.MethodOfClassPlayer();
Class Player
private int id;
private String name;
private Board _boardPlayer
Class Board
private int size;
private int[][] _board = null ;
功能actionPerformed
public void actionPerformed(ActionEvent e) {
for ( int i = 0; i < tUsuariCPU.length; i++ ){
for ( int j = 0; j < tUsuariCPU[i].length; j++ ){
if ( e.getSource() == tUsuariCPU[i][j] ){
buttonPressedUser(i,j);
JButton temp = (JButton) e.getSource() ;
temp.setBackground(java.awt.Color.ORANGE);
}
我想将JButton的信息传递给Game类,以了解该玩家的位置是否可用于放置该船。如果它可用,那么我将绘制JButton 我希望你能理解我。
答案 0 :(得分:3)
考虑到其他答案,您可能需要使用import random
numbers = [0,1,2,3,4,5,6,7,8,9]
random.shuffle(numbers)
def sayi(s):
s[0:4]
return s
print sayi(numbers)
和Observers
。 Observable是一个可由一个或几个观察者观察的类。观察者可以观察几个Observables。
示例:
Observable
以下是如何在一个示例主函数中将它们连接起来
public class Visualisation extends JFrame {
private Integer num;
private A myInnerClass;
public Visualisation(Observer o) {
num = 8;
myInnerClass = new A();
myInnerClass.setObserver(o);
}
public onButtonPressed(Event e) {
myInnerClass.notifyMyObservers();
}
public class A extends Observable {
public A() {
}
public void notifyMyObservers() {
this.setChanged();
this.notifyObservers(num); // the parameter can be any object
}
}
}
public class B implements Observer {
public B() {
}
public void update(Observable observed, Object arg) {
if (observed instance of A) {
if (arg instance of Integer) {
// ...
}
}
}
}
答案 1 :(得分:0)
您可以使用如下对话框类:
public class Visualisation extends JDialog {
private Board board;
public Game(Frame owner, boolean modal) {
super(owner, modal);
// add a Listener to your button to dispose the dialog after you save your data in board
JButton yourButton = new JButton();
yourButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
board = ....;
dispose();
}
});
}
public Board show(){
setVisible(true);
return Board ;
}
}
并在游戏类中使用:
Visualisation visualisationDialog = new Visualisation(null, true);
Board board = visualisationDialog .show();
//do whatever you want with the board from here now