gpt4 book ai didi

java - 在多个类之间共享对象

转载 作者:行者123 更新时间:2023-11-29 03:34:40 25 4
gpt4 key购买 nike

我正在实现一个 Blackjack 游戏,我正在尝试允许多个类(分别是 ChatGUI 和 GameGUI)使用我的“Client”类,它实际上是服务器的入口。

我已经尝试使用 Client 类作为每个构造函数的参数创建这些类,但似乎我的 Client 类无法将信息发送回其他类 - ChatGUI/GameGUI。

我已经有了一个可以处理多个客户端连接的工作服务器! (久经考验)。

public class BlackJack{
private Client client;
private ChatGUI chatgui;
private GameGUI gamegui;

public BlackJack(){
// Setup Client class, which will be passed to all other classes
client = new Client(server, port, username, chatgui, gamegui);

// Setup other classes, which will be given Client class
chatgui = new ChatGUI(client);
gamegui = new GameGUI(client);

}
}

public class Client{
private ChatGUI chatgui;
private GameGUI gamegui;

Client(String server, int port, String username, ChatGUI cg, GameGUI gamegui){
// catch these arguments and assign them to variables
}

void display(String msg){
// Method to display incoming messages to the chat screen
// Using ChatGUI method (*** not working? ***)
chatgui.append(msg + "\n");
}
}

public class ChatGUI{
private JTextArea textarea;
private Client client;

public ChatGUI(Client c){
client = c;
}

// ChatGUI can use client methods
void sendMessage(String msg){
client.sendChat(msg);
}

void append(String msg){
textarea.append(msg);
}

public class GameGUI{
private Client client;

public GameGUI(Client c){
client = c;
}

// GameGUI can use client methods
void playGame(){
client.playGame();
}
}

请注意,此代码是为更多的伪代码引用而编写的 - 不想粘贴数百行。

任何帮助将不胜感激!非常感谢阅读。

最佳答案

假设我正确地理解了您的问题,我认为以稍微不同的方式构建您的类对您是有益的...

每个 BlackJack 对象都有一个客户端,例如

public class BlackJack{
private Client client;

public BlackJack(){
// Setup Client class, which will be passed to all other classes
client = new Client(server, port, username);

}

然后每个客户端对象都有一个 GUI 类的实例,例如

public class Client{
private ChatGUI chatgui;
private GameGUI gamegui;

Client(String server, int port, String username){
chatgui = new ChatGUI(this);
gamegui = new GameGUI(this);
}

//handle messages from server
void onMessageRecieved(String msg){
if(/* the message pertains to the game gui */ )
gamegui.newMessage(msg);
else if( /* the message pertains to the chat gui */ )
chatgui.newMessage(msg);
}

//here you can add functions for the gui classes to call
public void sendChat(String chat){

}
}

那么你的 gui 类可能看起来像...

public class ChatGUI{
private JTextArea textarea;
private Client client;

public ChatGUI(Client c){
client = c;
}

//receive message/command from server
public void newMessage(String msg){
//perform the desired action based on the command
}

public void sendChat(String msg){
client.sendChat(msg);
}
}

public class GameGUI{
private Client client;

public GameGUI(Client c){
client = c;
}

//receive message/command from server
public void newMessage(String msg){
//perform the desired action based on the command
}
}

关于java - 在多个类之间共享对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16196194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com