Java 网络斗地主
项目要求:
运用多线程知识构建一个多客户端的斗地主程序,斗地主功能完善,利用Socket实现客户端和服务器端的信息交互。
未完成 进展:
客户端:
MainJFrame类
public class MainFrame extends JFrame{
public MyPanel myPanel;
public String uname;
public Socket socket;
public SendThread sendThread;
public MainFrame(String uname, Socket socket){
this.uname = uname;
this.socket = socket;
//设置窗口属性
this.setSize(1200,700);
this.setVisible(true);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//添加Mypanel
myPanel = new MyPanel();
myPanel.setBounds(0,0,1200,700);
this.add(myPanel);
//启动发消息的线程
sendThread = new SendThread(socket,uname);
sendThread.start();
}
}
MyPanel类
public class MyPanel extends JPanel {
@Override
protected void paintComponent(Graphics g) {
Image image = new ImageIcon("images/bg/bg1.png").getImage();
g.drawImage(image,0,0,this.getWidth(),this.getHeight(),null);
}
}
Login类
public class Login extends JFrame {
private JLabel uanmeJLabel;
private JTextField unameJTextField;
private JButton btnJButton;
public Login(){
this.uanmeJLabel = new JLabel("登录名:");
this.unameJTextField = new JTextField();
this.btnJButton = new JButton("登录");
this.setSize(500,200);
this.setVisible(true);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLayout(new GridLayout(1,3));
this.add(uanmeJLabel);
this.add(unameJTextField);
this.add(btnJButton);
//创建我们的监听器对象 绑定到按钮上
MyEvent myEvent = new MyEvent();
this.btnJButton.addActionListener(myEvent);
}
//创建事件监听器
class MyEvent implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
//获取用户名
String uname = unameJTextField.getText();
//创建一个socket连接服务器
try {
Socket socket = new Socket("127.0.0.1",6666);
//跳转到主窗口
new MainFrame(uname,socket);
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}
SendThread类
public class SendThread extends Thread {
private Socket socket;
private String msg;
public String g