五子棋(服务器).doc_第1页
五子棋(服务器).doc_第2页
五子棋(服务器).doc_第3页
五子棋(服务器).doc_第4页
五子棋(服务器).doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

import java.awt.BorderLayout;import java.awt.Color;import java.awt.Graphics;import java.awt.Image;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.image.BufferedImage;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import .ServerSocket;import .Socket;import java.util.Hashtable;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.UIManager;public class FIR_server extends JPanel implements MouseListener, ActionListener private JFrame frame;private JMenu menu1;private JMenuBar menubar;private String bgpath = src/pic/天空.jpg; /修改图片地址private ImageIcon imageicon;private Image image;private BufferedImage bufferedimage;private JMenuItem menuitem1_1;private Image image_white;private Image image_black;private int xx;private int yy;private Graphics g_bufferedimage;private ServerSocket server;private Socket connection;private BufferedReader reader;private BufferedWriter writer;private Image image_client;private int ring;private int row;private int col;private int cnt;private Image image_server;private JLabel label;private boolean over;private boolean win;private JMenuItem menuitem1_2;private JLabel label_ip;private JTextField textfield_prot;private JPanel menupanel;private JButton button_create;private JLabel label_port;public FIR_server() frame = new JFrame(五子棋-服务器);menubar = new JMenuBar();menubar.setLayout(new BorderLayout();menu1 = new JMenu(开局);menuitem1_1 = new JMenuItem(重新开始);menuitem1_2 = new JMenuItem(放弃此局);imageicon = new ImageIcon(bgpath);image = imageicon.getImage();label = new JLabel(等待您的选择.);menupanel = new JPanel();label_ip = new JLabel(客户端IP: );label_port = new JLabel(端口号:);textfield_prot = new JTextField(8888);textfield_prot.setColumns(4);button_create = new JButton(创建);reset_image();image_white = new ImageIcon(this.getClass().getResource(/pic/white.gif).getImage(); /修改图片地址image_black = new ImageIcon(this.getClass().getResource(/pic/black.gif).getImage(); /修改图片地址menu1.add(menuitem1_1);menu1.add(menuitem1_2);menupanel.add(label_ip);menupanel.add(label_port);menupanel.add(textfield_prot);menupanel.add(button_create);menubar.add(menu1, BorderLayout.WEST);menubar.add(menupanel);menubar.add(label, BorderLayout.EAST);frame.setJMenuBar(menubar);menuitem1_1.addActionListener(this);menuitem1_2.addActionListener(this);button_create.addActionListener(this);this.addMouseListener(this);frame.add(this);frame.setBounds(100, 100, 480, 530);frame.setDefaultCloseOperation(3);frame.setAlwaysOnTop(true);frame.setResizable(false);frame.setVisible(true);public void createserver() try server = new ServerSocket(Integer.parseInt(textfield_prot.getText();connection = server.accept();button_create.setEnabled(false);textfield_prot.setEditable(false); catch (Exception e) System.out.println(创建服务器失败);try label_ip.setText(客户端IP:+ connection.getInetAddress().getHostAddress();reader = new BufferedReader(new InputStreamReader(connection.getInputStream();writer = new BufferedWriter(new OutputStreamWriter(connection.getOutputStream(); catch (Exception e) System.out.println(断开连接);reset();while (true) try String message = reader.readLine();if (message = null) System.out.println(客户端已关闭);break;String s = message.split(,);ring = Integer.parseInt(s0);if (ring = 1) image_client = image_server = image_black ? image_white: image_black;row = Integer.parseInt(s1);col = Integer.parseInt(s2);xx = col * 30 + 25 - 7;yy = row * 30 + 25 - 7;g_bufferedimage.drawImage(image_client, xx, yy, null);this.repaint();SysBus_server_client.save(row + , + col, cnt); else if (Integer.parseInt(s1) = 10) over = true;win = false;JOptionPane.showMessageDialog(frame, YOU LOSE); else if (Integer.parseInt(s1) = 1) ring = 1;image_server = image_black;label.setText(此局您为先手(黑子);label.setIcon(new ImageIcon(image_server);if (over = true) if (JOptionPane.showConfirmDialog(frame, 是否继续?,再来一局, JOptionPane.YES_NO_OPTION) = JOptionPane.YES_OPTION) reset_image();this.repaint(); elseSystem.exit(0);for (int k = 0; k 10; k+) try writer.write(0,2n);writer.flush();k = 10; catch (IOException e1) else if (Integer.parseInt(s1) = 0) ring = 0;image_server = image_white;label.setText(此局您为后手(白子);label.setIcon(new ImageIcon(image_server);if (over = true) if (JOptionPane.showConfirmDialog(frame, 是否继续?,再来一局, JOptionPane.YES_NO_OPTION) = JOptionPane.YES_OPTION) reset_image();this.repaint(); elseSystem.exit(0);for (int k = 0; k 10; k+) try writer.write(0,3n);writer.flush();k = 10; catch (IOException e1) else if (Integer.parseInt(s1) = 11) ring = 0;over = true;win = true;JOptionPane.showMessageDialog(frame, 对方认输了); else if (Integer.parseInt(s1) = 2) ring = 0; else if (Integer.parseInt(s1) = 3) ring = 1; catch (Exception e) System.out.println(客户端断开连接);try connection.close(); catch (Exception e1) System.out.println(断开连接);break;try connection.close(); catch (Exception e1) System.out.println(断开连接);public void reset_image() bufferedimage = new BufferedImage(472, 471, BufferedImage.TYPE_INT_RGB);g_bufferedimage = bufferedimage.getGraphics();g_bufferedimage.drawImage(image, 0, 0, 472, 471, null);g_bufferedimage.setColor(Color.WHITE);for (int i = 0; i 15; i+) g_bufferedimage.drawLine(25, 25 + 30 * i, 25 + 30 * 14, 25 + 30 * i);g_bufferedimage.drawLine(25 + 30 * i, 25, 25 + 30 * i, 25 + 30 * 14);g_bufferedimage.fillOval(111, 111, 8, 8);g_bufferedimage.fillOval(351, 111, 8, 8);g_bufferedimage.fillOval(111, 351, 8, 8);g_bufferedimage.fillOval(351, 351, 8, 8);g_bufferedimage.fillOval(231, 231, 8, 8);cnt = 1;over = false;/ label.setIcon(null);SysBus_server.clear();SysBus_server_client.clear();public void reset() if (JOptionPane.showConfirmDialog(frame, 是否同意对方黑子先手?, 选择黑白子,JOptionPane.YES_NO_OPTION) = JOptionPane.YES_OPTION) image_server = image_white;label.setText(此局您为后手(白子);label.setIcon(new ImageIcon(image_server);for (int k = 0; k 10; k+) try writer.write(0,1n);writer.flush();k = 10; catch (IOException e1) else image_server = image_black;label.setText(此局您为先手(黑子);label.setIcon(new ImageIcon(image_server);for (int k = 0; k 10; k+) try writer.write(0,0n);writer.flush();k = 10; catch (IOException e1) public void submit() if (JOptionPane.showConfirmDialog(frame, 是否认输?, 放弃此局,JOptionPane.YES_NO_OPTION) = JOptionPane.YES_OPTION) ring = 0;over = true;win = false;for (int k = 0; k 10; k+) try writer.write(0,11n);writer.flush();k = 10; catch (IOException e1) protected void paintComponent(Graphics g) super.paintComponent(g);g.drawImage(bufferedimage, 1, 1, 472, 471, null);public static void main(String args) try UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName(); catch (Exception e) new FIR_server();public void mouseClicked(MouseEvent e) public void mouseEntered(MouseEvent e) public void mouseExited(MouseEvent e) public void mousePressed(MouseEvent e) if (ring = 1) row = (e.getY() - 25) / 30 + (e.getY() - 25) % 30 / 15);col = (e.getX() - 25) / 30 + (e.getX() - 25) % 30 / 15);xx = col * 30 + 25 - 7;yy = row * 30 + 25 - 7;if (SysBus_server.load(row + , + col) != null| SysBus_server_client.load(row + , + col) != null)return;try writer.write(1, + row + , + col + n);writer.flush(); catch (IOException e1) System.out.println(下子出现问题,请重下此子);return;ring = 0;g_bufferedimage.drawImage(image_server, xx, yy, null);this.repaint();SysBus_server.save(row + , + col, cnt);cnt+;judgement();public void judgement() for (int i = 0; i 15; i+) for (int j = 0; j 15; j+) Object x = SysBus_server.load(i + , + j);if (x != null) if (f1(i, j) | f2(i, j) | f3(i, j) | f4(i, j) for (int k = 0; k 10; k+) try writer.write(0,10, + xx + , + yy + n);writer.flush();k = 10; catch (IOException e1) over = true;win = true;JOptionPane.showMessageDialog(frame, YOU WIN);return;public boolean f1(int i, int j) for (int m = 1; m 5; m+) Object x = SysBus_server.load(i + , + (j + m);if (x = null)return false;return true;public boolean f2(int i, int j) for (int m = 1; m 5; m+) Object x = SysBus_server.load(i + m) + , + (j + m);if (x = null)return false;return true;public boolean f3(int i, int j) for (int m = 1; m 5; m+) Object x = SysBus_server.load(i + m) + , + j);if (x = null)return false;return true;public boolean f4(int i, int j) for (int m = 1; m 5; m+) Object x = SysBus_server.load(i + m) + , + (j - m);if (x = null)return false;return true;public void mous

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论