/** * Checks if the score is high enough to get to the high scores list, adds the name and score and * organizes the list. If HighScores.dat is not found, the method generates a blank one. * * @param name The nickname of the person getting to the list. * @param score The score gained. */ public static void addHighScore(String name, int score) { // If we don't yet have a high scores table, we create a blank (and let the user know about it) if (!new File("HighScores.dat").exists()) { // This object matrix actually stores the information of the high scores list Object[][] highScores = new Object[10][3]; // We fill the high scores list with blank entries: #. " " 0 for (int i = 0; i < highScores.length; i++) { highScores[i][0] = (i + 1) + "."; highScores[i][1] = " "; highScores[i][2] = 0; } // This actually writes and makes the high scores file try { ObjectOutputStream o = new ObjectOutputStream(new FileOutputStream("HighScores.dat")); o.writeObject(highScores); o.close(); } catch (IOException e) { e.printStackTrace(); } } // We read the file to check if we have a new high score, and then rewrite the highscore // This is done even if we didn't previously have a high scores list try { ObjectInputStream o = new ObjectInputStream(new FileInputStream("HighScores.dat")); // The object matrix does the same as the previous one. // Here we just take what we read from the HighScores.dat to the Object[][] HighScores. Object[][] highScores = (Object[][]) o.readObject(); // Then we start searching for an entry for which the score is smaller than the achieved score for (int i = 0; i < highScores.length; i++) { if ((Integer) highScores[i][2] < score) { // Once found we start to move entries, which are below the score we had, downwards. // I.e. 10. becomes whatever 9. was. 9. becomes what 8. was etc... for (int j = 9; j > i; j--) { highScores[j][0] = (j + 1) + "."; highScores[j][1] = highScores[j - 1][1]; highScores[j][2] = highScores[j - 1][2]; } // Then we write the score and the name we just got to the correct place highScores[i][0] = (i + 1) + "."; highScores[i][1] = name; highScores[i][2] = score; // And break the loop. /*Maybe this could be avoided somehow? I haven't been able to come up with an easy way yet.*/ break; } } try { // And finally we overwrite the HighScores.dat with our highScores object matrix ObjectOutputStream n = new ObjectOutputStream(new FileOutputStream("HighScores.dat")); n.writeObject(highScores); n.close(); } catch (IOException e) { e.printStackTrace(); } } catch (ClassNotFoundException | IOException e) { e.printStackTrace(); } }
public synchronized void sendClientData(String name, ObjectOutputStream out) throws IOException { for (ClientData cd : clientList) if (cd.getName().equals(name)) { out.writeObject(cd); return; } }
private void doSave() { ObjectOutputStream objectStream = getObjectOutputStream(); if (objectStream != null) { try { System.out.println("Saving " + selectedChildrenPaths.size() + " Selected Generations..."); for (int i = 0; i < selectedChildrenPaths.size(); i++) { // Get the userObject at the supplied path Object selectedPath = ((TreePath) selectedChildrenPaths.elementAt(i)).getLastPathComponent(); DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) selectedPath; objectStream.writeObject(selectedNode.getUserObject()); } objectStream.close(); System.out.println("Save completed successfully."); } catch (IOException e) { System.err.println(e); } } else { System.out.println("Save Selected Files has been aborted!"); } }
/** * A getter for the high scores list. Reads it directly from file and throws an error if the file * is not found (!working on this!). * * @return Object[][] where [i][0] is the rank (String), [i][1] is the name (String) and [i][2] is * the score (Integer). */ public static Object[][] getHighScore() { if (!new File("HighScores.dat").exists()) { // This object matrix actually stores the information of the high scores list Object[][] highScores = new Object[10][3]; // We fill the high scores list with blank entries: #. " " 0 for (int i = 0; i < highScores.length; i++) { highScores[i][0] = (i + 1) + "."; highScores[i][1] = " "; highScores[i][2] = 0; } // This actually writes and makes the high scores file try { ObjectOutputStream o = new ObjectOutputStream(new FileOutputStream("HighScores.dat")); o.writeObject(highScores); o.close(); } catch (IOException e) { e.printStackTrace(); } } try { // Read and return the read object matrix ObjectInputStream o = new ObjectInputStream(new FileInputStream("HighScores.dat")); Object[][] highScores = (Object[][]) o.readObject(); o.close(); return highScores; } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); } return null; }
public void windowClosing(WindowEvent e) // write file on finish { FileOutputStream out = null; ObjectOutputStream data = null; try { // open file for output out = new FileOutputStream(DB); data = new ObjectOutputStream(out); // write Person objects to file using iterator class Iterator<Person> itr = persons.iterator(); while (itr.hasNext()) { data.writeObject((Person) itr.next()); } data.flush(); data.close(); } catch (Exception ex) { JOptionPane.showMessageDialog( objUpdate.this, "Error processing output file" + "\n" + ex.toString(), "Output Error", JOptionPane.ERROR_MESSAGE); } finally { System.exit(0); } }
// Utility methods // Send message to client private void sendMessage(String message) { try { output.writeObject("KELVIN: " + message); output.flush(); showMessage("\nKELVIN: " + message); } catch (IOException ioException) { chatWindow.append("\n ERROR: CANNOT SEND MESSAGE! \n"); } }
/** * sends a message to the server, and to the other clients * * @param message: message to be sent */ public void sendMessage(String message) { try { System.out.println("Sending a message..." + message); toChatServer.writeObject(new String(message)); toChatServer.flush(); } catch (IOException e) { System.out.println("IOException in sendMessage"); System.err.println(e); System.exit(1); } }
private void saveObject(Object obj, String fName) { try { FileOutputStream fos = new FileOutputStream(fName); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(obj); oos.flush(); oos.close(); fos.close(); } catch (IOException ex) { JOptionPane.showMessageDialog(this, "Problemos saugojant Objektus"); } }
public void mouseClicked(MouseEvent e) { /*can = false; boolean f = true; for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) if (cell[i][j] == e.getSource()) { int judege = Clicked(cell[i][j]); f = false; break; } if (!f) break; }*/ boolean flage = CheckAll(); if (flage) { can = false; if (kind.equals("" + turn)) { ChessBoard cel = (ChessBoard) (e.getSource()); int judge = Clicked(cel); if (judge == 1) { try { System.out.println("发送前:" + cell[3][5].taken); out66.writeObject("落子" + turn); out66.flush(); out66.writeObject(stateList.get(stateList.size() - 1)); out66.flush(); out66.writeObject(takenList.get(takenList.size() - 1)); out66.flush(); } catch (IOException e1) { e1.printStackTrace(); } } } else { JOptionPane.showMessageDialog(null, "请确定您的身份,您此时不能落子"); } } else CheckAtTheEnd(); }
private void doSaveAll() { ObjectOutputStream objectStream = getObjectOutputStream(); if (objectStream != null) { try { System.out.println("Saving All " + generations.getLeafCount() + " Generations..."); for (Enumeration e = generations.depthFirstEnumeration(); e.hasMoreElements(); ) { DefaultMutableTreeNode tmpNode = (DefaultMutableTreeNode) e.nextElement(); if (tmpNode.isLeaf()) objectStream.writeObject(tmpNode.getUserObject()); } objectStream.close(); System.out.println("Save completed successfully."); } catch (IOException e) { System.err.println(e); } } else { System.out.println("Save All Files has been aborted!"); } }
public void actionPerformed(ActionEvent ae) { // 如果用户点击了发送按钮 if (ae.getSource() == send_button) { // 就将发送者、接受者的信息以及聊天消息封装成数据包一并发送给服务器 MessageShare message_to_server = new MessageShare(); message_to_server.set_message_type(MessageType.is_chat_content); message_to_server.set_sender(this.user); message_to_server.set_receiver(this.friend); message_to_server.set_content(input_text_field.getText()); message_to_server.set_send_time(new java.util.Date().toString()); // 将数据包发送给服务器 try { ObjectOutputStream object_output_stream = new ObjectOutputStream( ManageClientToServerConnectionThread.get_lient_to_server_connectinon_thread(user) .get_socket() .getOutputStream()); object_output_stream.writeObject(message_to_server); } catch (Exception e) { e.printStackTrace(); } } }
public static boolean save() { if (registry.isSaving) { return false; } boolean status = true; registry.isSaving = true; resolutions.add("800x600"); resolutions.add("1024x768"); resolutions.add("1152x864"); resolutions.add("1280x720"); resolutions.add("1280x768"); resolutions.add("1280x800"); resolutions.add("1280x960"); resolutions.add("1280x1024"); resolutions.add("1360x768"); resolutions.add("1366x768"); resolutions.add("1440x900"); resolutions.add("1600x900"); resolutions.add("1600x1024"); resolutions.add("1680x1050"); resolutions.add("1920x1080"); resolutions.add("1920x1200"); // resolutions.add("Full Screen"); // try to save the settings file try { FileOutputStream settingsFile = new FileOutputStream("SettingsTemp.dat"); ObjectOutputStream settings = new ObjectOutputStream(settingsFile); settings.writeObject(new Integer(1)); // settings file version settings.writeObject(new Integer(resolution)); if (volumeMusic == 0) { settings.writeObject(new Integer(-1)); } else { settings.writeObject(new Integer(volumeMusic)); } if (volumeFX == 0) { settings.writeObject(new Integer(-1)); } else { settings.writeObject(new Integer(volumeFX)); } settings.writeObject(new Integer(buttonMoveRight)); settings.writeObject(new Integer(buttonMoveLeft)); settings.writeObject(new Integer(buttonJump)); settings.writeObject(new Integer(buttonAction)); settings.writeObject(new Integer(buttonRobot)); settings.writeObject(new Integer(buttonInventory)); settings.writeObject(new Integer(buttonPause)); settings.close(); moveFile("SettingsTemp.dat", "Settings.dat"); EIError.debugMsg("Saved Settings", EIError.ErrorLevel.Notice); } catch (Exception e) { status = false; EIError.debugMsg("Couldn't save settings " + e.getMessage(), EIError.ErrorLevel.Error); } // try to save the players for (int i = 1; i <= NUMBER_OF_PLAYER_SLOTS; i++) { try { if (player == i - 1) { FileOutputStream playerFile = new FileOutputStream("PlayerTemp.dat"); ObjectOutputStream playerInfo = new ObjectOutputStream(playerFile); playerInfo.writeObject(new Integer(2)); // settings file version playerInfo.writeObject(players.get(i - 1)); if (registry.getGameController().multiplayerMode != GameController.MultiplayerMode.CLIENT && player == i - 1) { blockManagers.set(i - 1, registry.getBlockManager()); placeableManagers.set(i - 1, registry.getPlaceableManager()); monsterManagers.set(i - 1, registry.getMonsterManager()); } playerInfo.writeObject(blockManagers.get(i - 1)); playerInfo.writeObject(placeableManagers.get(i - 1)); playerInfo.writeObject(monsterManagers.get(i - 1)); playerInfo.close(); moveFile("PlayerTemp.dat", "Player" + i + ".dat"); EIError.debugMsg("Saved Player " + i, EIError.ErrorLevel.Notice); } } catch (Exception e) { status = false; EIError.debugMsg( "Couldn't save Player " + i + " " + e.getMessage(), EIError.ErrorLevel.Error); } } registry.isSaving = false; return status; }
MyCustomizableGUI() { this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); textField = new JTextField(20); buttonPref = new JButton("Preferences"); this.add(textField); this.add(buttonPref); buttonPref.addActionListener(evt -> prefDialog.setVisible(true)); frame = new JFrame("My text editor"); frame.setContentPane(this); frame.pack(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); // Preferences dialog box prefDialog = new JDialog(frame, "Dialog", true); prefDialog.setLayout(new BorderLayout()); JPanel p1 = new JPanel(); p1.setLayout(new GridLayout(3, 2)); JPanel p2 = new JPanel(); p2.setLayout(new BoxLayout(p2, BoxLayout.X_AXIS)); buttonSave = new JButton("Save"); buttonCancel = new JButton("Cancel"); buttonSave.addActionListener( evtSave -> { String fontChosen; int fontSizeChosen; prefDialog.setVisible(false); if ((String) color.getSelectedItem() == "Red") { textField.setForeground(Color.red); } else if ((String) color.getSelectedItem() == "Green") { textField.setForeground(Color.green); } else if ((String) color.getSelectedItem() == "Blue") { textField.setForeground(Color.blue); } else if ((String) color.getSelectedItem() == "Cyan") { textField.setForeground(Color.cyan); } else if ((String) color.getSelectedItem() == "Magenta") { textField.setForeground(Color.magenta); } else if ((String) color.getSelectedItem() == "Yellow") { textField.setForeground(Color.yellow); } else if ((String) color.getSelectedItem() == "Black") { textField.setForeground(Color.black); } fontChosen = (String) font.getSelectedItem(); fontSizeChosen = Integer.parseInt((String) fontSize.getSelectedItem()); textField.setFont(new Font(fontChosen, Font.PLAIN, fontSizeChosen)); UserPreferences userPrefs = new UserPreferences(); userPrefs.setColor((String) color.getSelectedItem()); userPrefs.setFont(fontChosen); userPrefs.setFontSize(fontSizeChosen); try (FileOutputStream fileOut = new FileOutputStream("preferences.ser"); ObjectOutputStream objectOut = new ObjectOutputStream(fileOut); ) { objectOut.writeObject(userPrefs); } catch (IOException ioe) { System.out.println("I/O error: " + ioe.getMessage()); } }); buttonCancel.addActionListener(evt -> prefDialog.setVisible(false)); colorLabel = new JLabel("Color:"); fontLabel = new JLabel("Font:"); fontSizeLabel = new JLabel("Font size:"); color = new JComboBox(colorList); font = new JComboBox(fontList); fontSize = new JComboBox(fontSizeList); p1.add(colorLabel); p1.add(color); p1.add(fontLabel); p1.add(font); p1.add(fontSizeLabel); p1.add(fontSize); p2.add(buttonCancel); p2.add(buttonSave); prefDialog.add(BorderLayout.NORTH, p1); prefDialog.add(BorderLayout.SOUTH, p2); prefDialog.pack(); }
public void actionPerformed(ActionEvent e) { System.out.println("actionPerformed"); if (e.getSource() == pen) // 画笔 { System.out.println("pen"); toolFlag = 0; } if (e.getSource() == eraser) // 橡皮 { System.out.println("eraser"); toolFlag = 1; } if (e.getSource() == clear) // 清除 { System.out.println("clear"); toolFlag = 2; paintInfo.removeAllElements(); repaint(); } if (e.getSource() == drLine) // 画线 { System.out.println("drLine"); toolFlag = 3; } if (e.getSource() == drCircle) // 画圆 { System.out.println("drCircle"); toolFlag = 4; } if (e.getSource() == drRect) // 画矩形 { System.out.println("drRect"); toolFlag = 5; } if (e.getSource() == colchooser) // 调色板 { System.out.println("colchooser"); Color newColor = JColorChooser.showDialog(this, "我的调色板", c); c = newColor; } if (e.getSource() == openPic) // 打开图画 { openPicture.setVisible(true); if (openPicture.getFile() != null) { int tempflag; tempflag = toolFlag; toolFlag = 2; repaint(); try { paintInfo.removeAllElements(); File filein = new File(openPicture.getDirectory(), openPicture.getFile()); picIn = new FileInputStream(filein); VIn = new ObjectInputStream(picIn); paintInfo = (Vector) VIn.readObject(); VIn.close(); repaint(); toolFlag = tempflag; } catch (ClassNotFoundException IOe2) { repaint(); toolFlag = tempflag; System.out.println("can not read object"); } catch (IOException IOe) { repaint(); toolFlag = tempflag; System.out.println("can not read file"); } } } if (e.getSource() == savePic) // 保存图画 { savePicture.setVisible(true); try { File fileout = new File(savePicture.getDirectory(), savePicture.getFile()); picOut = new FileOutputStream(fileout); VOut = new ObjectOutputStream(picOut); VOut.writeObject(paintInfo); VOut.close(); } catch (IOException IOe) { System.out.println("can not write object"); } } }
public void actionPerformed(ActionEvent e) { saveOld(); area1.setText(""); resetArea2(); try { clientSocket = new Socket(ipaddress.getText(), Integer.parseInt(portNumber.getText())); Random r = new Random(); serverport = 10000 + r.nextInt(8999); // random port :D serverSocket = new ServerSocket(serverport); active = true; editor.setTitleToListen(); connected = true; ObjectOutputStream output = new ObjectOutputStream(clientSocket.getOutputStream()); ObjectInputStream input = new ObjectInputStream(clientSocket.getInputStream()); output.writeObject(new JoinNetworkRequest(serverport)); ConnectionData data = getConnectionData(clientSocket, input); lc = new LamportClock(data.getId()); lc.setMaxTime(data.getTs()); dec = new DocumentEventCapturer(lc, editor); er = new EventReplayer(editor, dec, lc); ert = new Thread(er); ert.start(); Peer peer = new Peer( editor, er, data.getHostId(), clientSocket, output, input, lc, clientSocket.getInetAddress().getHostAddress(), data.getPort()); dec.addPeer(peer); Thread thread = new Thread(peer); thread.start(); er.setAcknowledgements(data.getAcknowledgements()); er.setEventHistory(data.getEventHistory()); er.setCarets(data.getCarets()); er.addCaretPos(lc.getID(), 0); for (PeerWrapper p : data.getPeers()) { Socket socket; try { socket = connectToPeer(p.getIP(), p.getPort()); ObjectOutputStream outputStream = new ObjectOutputStream(socket.getOutputStream()); ObjectInputStream inputStream = new ObjectInputStream(socket.getInputStream()); outputStream.writeObject( new NewPeerDataRequest(lc.getID(), serverSocket.getLocalPort(), 0)); Peer newPeer = new Peer( editor, er, p.getId(), socket, outputStream, inputStream, lc, p.getIP(), p.getPort()); dec.addPeer(newPeer); Thread t = new Thread(newPeer); t.start(); } catch (IOException ex) { continue; } } Thread t1 = new Thread( new Runnable() { @Override public void run() { waitForConnection(); } }); t1.start(); area1.setText(data.getTextField()); area1.setCaretPosition(0); setDocumentFilter(dec); dec.sendObjectToAllPeers(new UnlockRequest(lc.getTimeStamp())); changed = false; Connect.setEnabled(false); Disconnect.setEnabled(true); Listen.setEnabled(false); Save.setEnabled(false); SaveAs.setEnabled(false); } catch (NumberFormatException | IOException e1) { setTitle("Unable to connect"); } }
public void actionPerformed(ActionEvent e) { if (e.getSource() == jbSaveLayer) { try { FileOutputStream fout = new FileOutputStream(jtfCengMing.getText() + ".wyf"); ObjectOutputStream oout = new ObjectOutputStream(fout); oout.writeObject(itemArray); oout.close(); fout.close(); } catch (Exception ea) { ea.printStackTrace(); } } else if (e.getSource() == jbLoadLayer) { try { FileInputStream fin = new FileInputStream(jtfCengMing.getText() + ".wyf"); ObjectInputStream oin = new ObjectInputStream(fin); itemArray = (Item[][]) oin.readObject(); oin.close(); fin.close(); this.flush(); } catch (Exception ea) { ea.printStackTrace(); } lvp.repaint(); } else if (e.getSource() == jbLoadAll) { // 全部铺上当前选中 for (int row = 0; row < 40; row++) { for (int col = 0; col < 60; col++) { Item item = ((Item) (jl.getSelectedValue())).clone(); itemArray[row][col] = item; if (item != null) { item.setPosition(col, row); } } } lvp.repaint(); } else if (e.getSource() == jbCreate) { // 生成源代码 try { FileOutputStream fout = null; DataOutputStream dout = null; fout = new FileOutputStream("maps.so"); dout = new DataOutputStream(fout); int totalBlocks = 0; for (int i = 0; i < 40; i++) { for (int j = 0; j < 60; j++) { Item item = itemArray[i][j]; if (item != null) { totalBlocks++; } } } System.out.println("totalBlocks=" + totalBlocks); // 写入不空块的数量 dout.writeInt(totalBlocks); for (int i = 0; i < 40; i++) { for (int j = 0; j < 60; j++) { Item item = itemArray[i][j]; if (item != null) { int w = item.w; // 元素的图片宽度 int h = item.h; // 元素的图片高度 int col = item.col; // 元素的地图列 int row = item.row; // 元素的地图行 int pCol = item.pCol; // 元素的占位列 int pRow = item.pRow; // 元素的占位行 String leiMing = item.leiMing; // 类名 int[][] notIn = item.notIn; // 不可通过 int[][] keYu = item.keYu; // 可遇矩阵 // 计算图片下标 int outBitmapInxex = 0; if (leiMing.equals("Grass")) { outBitmapInxex = 0; } else if (leiMing.equals("XiaoHua1")) { outBitmapInxex = 1; } else if (leiMing.equals("MuZhuang")) { outBitmapInxex = 2; } else if (leiMing.equals("XiaoHua2")) { outBitmapInxex = 3; } else if (leiMing.equals("Road")) { outBitmapInxex = 4; } else if (leiMing.equals("Jing")) { outBitmapInxex = 5; } dout.writeByte(outBitmapInxex); // 记录图片下标 dout.writeByte(0); // 记录可遇标志 0-不可遇 底层都不可遇 dout.writeByte(w); // 图片宽度 dout.writeByte(h); // 图片高度 dout.writeByte(col); // 总列数 dout.writeByte(row); // 总行数 dout.writeByte(pCol); // 占位列 dout.writeByte(pRow); // 占位行 int bktgCount = notIn.length; // 不可通过点的数量 dout.writeByte(bktgCount); // 写入不可通过点的数量 for (int k = 0; k < bktgCount; k++) { dout.writeByte(notIn[k][0]); dout.writeByte(notIn[k][1]); } } } } dout.close(); fout.close(); } catch (Exception ea) { ea.printStackTrace(); } } }
@Override public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals("下棋")) { audience.setEnabled(false); fighter.setEnabled(false); begin.setEnabled(true); // JOptionPane.showMessageDialog(null, "下棋"); System.out.println("下棋"); try { System.out.println("客户端发送下棋指令"); out66.writeObject("对手"); out66.flush(); out66.writeObject(new char[0][0]); out66.flush(); out66.writeObject(new boolean[0][0]); out66.flush(); } catch (IOException e1) { e1.printStackTrace(); } } if (e.getActionCommand().equals("观看")) { submit.setEnabled(false); regret.setEnabled(false); audience.setEnabled(false); fighter.setEnabled(false); // JOptionPane.showMessageDialog(null, "观看"); System.out.println("观看"); try { out66.writeObject("观众"); out66.flush(); out66.writeObject(stateList.get(stateList.size() - 1)); out66.flush(); out66.writeObject(takenList.get(takenList.size() - 1)); out66.flush(); } catch (IOException e1) { e1.printStackTrace(); } } /*if (e.getActionCommand().equals("人机对弈")) { audience.setEnabled(false); fighter.setEnabled(false); AIPlayer.setEnabled(false); begin.setEnabled(true); JOptionPane.showMessageDialog(null, "人机对弈"); }*/ if (e.getActionCommand().equals("发送")) { // JOptionPane.showMessageDialog(null, "发送"); System.out.println("发送"); String str = myRole + ": " + " " + jt1.getText() + "\n"; try { out99.writeObject(" " + str); out99.flush(); out99.writeObject(new char[8][8]); out99.flush(); out99.writeObject(new boolean[8][8]); out99.flush(); } catch (IOException e1) { e1.printStackTrace(); } jt2.append(str); jt1.setText(""); } if (e.getActionCommand().equals("取消")) { // JOptionPane.showMessageDialog(null, "取消"); System.out.println("取消"); jt1.setText(""); } if (e.getActionCommand().equals("悔棋")) { // JOptionPane.showMessageDialog(null, "悔棋"); System.out.println("悔棋"); try { out66.writeObject("请求悔棋"); out66.flush(); out66.writeObject(new char[8][8]); out66.flush(); out66.writeObject(new boolean[8][8]); out66.flush(); } catch (IOException e1) { e1.printStackTrace(); } // RegretChess(); // ShowChessNumber(); } if (e.getActionCommand().equals("退出")) { int quit = JOptionPane.showConfirmDialog(null, "您确定要强制退出吗?", "请确认您的选择", JOptionPane.YES_NO_OPTION); if (quit == JOptionPane.YES_OPTION) { JOptionPane.showMessageDialog(null, "已强制退出"); System.exit(0); } else return; } if (e.getActionCommand().equals("开始")) { begin.setEnabled(false); System.out.println("客户端发送开始指令"); // JOptionPane.showMessageDialog(null, "开始"); try { out66.writeObject("请求开始"); out66.flush(); out66.writeObject(stateList.get(stateList.size() - 1)); out66.flush(); out66.writeObject(takenList.get(takenList.size() - 1)); out66.flush(); } catch (IOException e1) { e1.printStackTrace(); } Begin(); if (kind == "黑") { for (int i = 0; i < 8; i++) for (int j = 0; j < 8; j++) if (cell[i][j].taken == false) { CheckPlace(cell[i][j]); if (canPut) { cell[i][j].ChangeBackground(); canPut = false; } } } } if (e.getActionCommand().equals("存盘")) { // JOptionPane.showMessageDialog(null, "存盘"); System.out.println("存盘"); try { System.out.println(); out.writeObject(stateList); out.flush(); out.close(); } catch (IOException e1) { e1.printStackTrace(); } } }
/** * Class that contains the main function which creates the window for the game and implements the * server/client socket */ @SuppressWarnings("deprecation") public static void main(String args[]) { int i = -1; // Variable to keep track of the result from the game do // Do-while loop { try { JFrame frame = getFrame(); // Create the frame // Dialog to get the name from the player as string, put the string in a label String sname = returnNameString(); JLabel label = new JLabel(sname); // Create the status bar panel and shove it down the bottom of the frame JPanel statusPanel = new JPanel(); statusPanel.setBorder(new BevelBorder(BevelBorder.LOWERED)); statusPanel.setBackground(Color.red); frame.add(statusPanel, BorderLayout.SOUTH); // Create a label, placed at the bottom of the frame JLabel statusLabel = new JLabel(); statusLabel.setHorizontalAlignment(SwingConstants.LEFT); statusPanel.add(statusLabel); Button clearButton = new Button("Clear"); // Creating a "clear" button clearButton.setSize(new Dimension(10, 20)); statusPanel.add(label); statusPanel.add(clearButton); // Adding the button to the panel statusPanel.add(getTime()); // Adding the clock to the status panel frame.setVisible(true); char ch; if (args.length == 0) ch = 'O'; else ch = 'X'; TicTacPanel ticTacPanel = new TicTacPanel(ch); // Create a panel for the game TicTacAction ticTacAction = new TicTacAction(ticTacPanel); // Handle actions in the game clearButton.addActionListener(ticTacAction); ticTacPanel.addMouseListener(ticTacAction); frame.add(ticTacPanel); frame.show(); // Creating socket and I/O stream objects Socket s; ObjectOutputStream oops; ObjectInputStream oips; switch (ch) { case 'O': s = (new ServerSocket(7777)).accept(); oops = new ObjectOutputStream(s.getOutputStream()); oops.writeObject(ticTacPanel.ttt); ticTacAction.ready = false; break; case 'X': default: s = new Socket(args[0], 7777); ticTacAction.ready = true; } while (true) // Infinite loop { oips = new ObjectInputStream(s.getInputStream()); ticTacPanel.ttt = (TicTacGame) (oips.readObject()); ticTacPanel.paint(ticTacPanel.getGraphics()); ticTacAction.ready = true; while (ticTacAction.ready) { Thread.sleep(100); } oops = new ObjectOutputStream(s.getOutputStream()); oops.writeObject(ticTacPanel.ttt); i = ticTacPanel.ttt.checkWin(); // Check if there's a winner if (i == 1) // A winner is declared { TicTacPanel.infoBox("The winner is " + sname + "!", "Game Over"); ticTacPanel.ttt.clearAll(); ticTacPanel.paint(ticTacPanel.getGraphics()); } else if (i == 0) // No winner, but every square is covered so the game is done { TicTacPanel.infoBox("We have a tie!", "Game Over"); ticTacPanel.ttt.clearAll(); ticTacPanel.paint(ticTacPanel.getGraphics()); } } } catch (Exception e) { System.out.println(e); e.printStackTrace(); System.exit(1); } } while (i == -1); // End of do-while loop }
// create a new profile: read the script and possibly execute the queries, // save the stats (if 'import' == true, we assume the profile already exists // and don't run the queries) public void createWkld(String name, String scriptFile, boolean runQueries) { System.gc(); Workload wkld = new Workload(name); if (showCmdsItem.getState()) { consoleFrame.echoCmd((!runQueries ? "importprof " : "newwkld ") + name + " " + scriptFile); } // construct the Workload object from the script; // first, check if the file exists try { FileReader reader = new FileReader(scriptFile); reader.close(); } catch (FileNotFoundException e) { System.out.println("couldn't open " + scriptFile); return; } catch (IOException e) { System.out.println("couldn't close " + scriptFile); } // now, check if it contains only queries int scriptId = 0; try { scriptId = Libgist.openScript(scriptFile); } catch (LibgistException e) { System.out.println("couldn't open (C) " + scriptFile); return; } char[] arg1 = new char[64 * 1024]; StringBuffer arg1Buf = new StringBuffer(); char[] arg2 = new char[64 * 1024]; StringBuffer arg2Buf = new StringBuffer(); // for (;;) { // int cmd = Libgist.getCommand(scriptId, arg1, arg2); // if (cmd == Libgist.EOF) break; // if (cmd != Libgist.FETCH) { // there should only be queries // System.out.println("Script file contains non-SELECT command"); // return; // } // } if (runQueries) { // turn profiling on and execute queries // Libgist.setProfilingEnabled(true); Libgist.disableBps(true); // we don't want to stop at breakpoints // rescan queries try { scriptId = Libgist.openScript(scriptFile); } catch (LibgistException e) { System.out.println("couldn't open (C) " + scriptFile); return; } int cnt = 1; // for (;;) { // int cmd = Libgist.getCommand(scriptId, arg1, arg2); // if (cmd == Libgist.EOF) break; // arg1Buf.setLength(0); // arg1Buf.append(arg1, 0, strlen(arg1)); // arg2Buf.setLength(0); // arg2Buf.append(arg2, 0, strlen(arg2)); // OpThread.execCmd(LibgistCommand.FETCH, arg1Buf.toString(), // arg2Buf.toString(), false); // System.out.print(cnt + " "); // System.out.println(cnt + ": execute " + arg2Buf.toString() + " " // + arg1Buf.toString()); // cnt++; // } System.out.println(); Libgist.disableBps(false); // compute optimal clustering and some more statistics // Libgist.computeMetrics(wkld.filename); } // save profile try { // we're saving Java and C++ data in separate files (filename and filename.prof) // the profile object only contains the filename, the queries will be // read in from the file when the profile is opened (faster that way) ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(wkld.filename)); out.writeObject(wkld); out.close(); System.out.println("copy query file"); Runtime.getRuntime().exec("cp " + scriptFile + " " + wkld.filename + ".queries"); System.out.println("saving tree and profile"); Libgist.saveToFile(wkld.filename + ".idx"); if (runQueries) { // Libgist.saveProfile(wkld.filename + ".prof"); } } catch (Exception e) { System.out.println("Error saving profile: " + e); return; } if (runQueries) { // turn profiling off (after the metrics were computed and // the profile saved) // Libgist.setProfilingEnabled(false); } }