不定时搞事情篇 No.1 神途BOSS时间记录器
人形大宝宝看到不要生气哈,毕竟你看剧啦,哈哈哈哈
神途
这是一款类似于传奇的游戏,其中有很多的奖励丰富的BOSS,而且刷新很有规律,规律如下
- 从死亡开始计时
- 默认一般为半小时
- 半小时后在死亡地点附近进行复活刷新。
计时器
利用这里特点,我们就可以自己做一个计时器,来记录BOSS的相关信息。
因为这个本来不想发的,但是想到以后应该还会再写类似的冬冬,所以我把这个发上来,记录一下。
数据库建表
我们需要有以下信息进行保存。
以下是建表的SQL语句
/*
SQLyog Ultimate v12.09 (64 bit)
MySQL - 5.5.22 : Database - game
*********************************************************************
*//*!40101 SET NAMES utf8 */;/*!40101 SET SQL_MODE=''*/;/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`game` /*!40100 DEFAULT CHARACTER SET gbk */;USE `game`;/*Table structure for table `shentu` */DROP TABLE IF EXISTS `shentu`;CREATE TABLE `shentu` (`name` varchar(100) NOT NULL COMMENT '怪兽名字',`map` varchar(100) DEFAULT NULL COMMENT '地图名字',`time` varchar(100) DEFAULT NULL COMMENT '死亡时间',`x` varchar(20) DEFAULT NULL COMMENT 'x坐标',`y` varchar(20) DEFAULT NULL COMMENT 'y坐标',`time2` varchar(100) DEFAULT NULL COMMENT '下一次刷新时间',`time3` varchar(20) DEFAULT NULL COMMENT '刷新间隔',PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;/*Data for the table `shentu` */insert into `shentu`(`name`,`map`,`time`,`x`,`y`,`time2`,`time3`) values ('福利怪_01','贵族寝宫','1:37:35','95','151','2:7:35','30'),('福利怪_02','贵族寝宫','1:40:37','141','106','2:10:38','30'),('福利怪_03','英雄本色-专属','1:43:17','28','56','2:13:17','30'),('煞·破军_01','贵宾寝宫','1:4:11','94','118',NULL,NULL),('玄·圣君_01','贵族寝宫','1:34:22','89','67',NULL,NULL);/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
Java数据库操作
这个是以前写好的一个操作类,直接拿过来。
数据库链接信息.properties
drivers = com.mysql.jdbc.Driver
url = jdbc:mysql://localhost:3306/game?characterEncoding=UTF-8
user = ****
passwd = ******
DBMap.java
/** To change this license header, choose License Headers in Project Properties.* To change this template file, choose Tools | Templates* and open the template in the editor.*/
package db;import java.util.HashMap;
import java.util.LinkedList;
import java.util.Set;/**** @author lol*/
public class DBMap extends HashMap<String, LinkedList<Object> > {public DBMap() {super();}public static int getLength(DBMap m) {return m.values().iterator().next().size();}public static LinkedList<LinkedList<Object> > toHigh(DBMap m) {LinkedList<LinkedList<Object> > list = new LinkedList();Set<String> set = m.keySet();for(String str : set) {list.add(m.get(str));}return list;}public static LinkedList<LinkedList<Object> > toRow(DBMap m) {LinkedList<LinkedList<Object> > list = new LinkedList();LinkedList<LinkedList<Object> > hList = toHigh(m);LinkedList<Object> [] gList = hList.toArray(new LinkedList[0]);Object [][] g = new Object[gList.length][];for (int i = 0; i < gList.length; i++) {g[i] = gList[i].toArray();}int size = DBMap.getLength(m);for (int i = 0; i < size; i++) {LinkedList<Object> tList = new LinkedList();int length = m.size();for (int j = 0; j < length; j++) {tList.add(g[j][i]);}list.add(tList);}return list;}
}
DBMan.java
package db;import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.Properties;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;public class DBMan {private String drivers;private String url;private String user;private String passwd;private Connection conn;private PreparedStatement stmt;private ResultSet rs;private static DBMan instance;private DBMan() throws IOException {reload();}public void reload() throws IOException {InputStream in = DBMan.class.getResourceAsStream("./数据库链接信息.properties");Properties pro = new Properties();pro.load(in);drivers = pro.getProperty("drivers");url = pro.getProperty("url");user = pro.getProperty("user");passwd = pro.getProperty("passwd");}public static DBMan getInstance() throws IOException {if (instance == null) {instance = new DBMan();}return instance;}public void display(DBMap map, PrintStream out, String... str) {if (map == null) {return;}LinkedList[] q = new LinkedList[map.size()];int col = str.length;String temp = new String();// 打印表头,并决定要输出的数据是那些。if (col == 0) {Set<String> set = map.keySet();for (String s : set) {q[col++] = map.get(s);temp += s + "\t";}} else {for (int i = 0; i < col; i++) {q[i] = map.get(str[i]);temp += str[i] + "\t";}}int row = q[0].size();out.println(temp);for (int i = 0; i < row; i++) {temp = new String();for (int j = 0; j < col; j++) {temp += q[j].get(i) + "\t";}out.println(temp);}}public synchronized DBMap query(String sql, Object... obj) throws ClassNotFoundException, SQLException {try {DBMap map = new DBMap();open();stmt = conn.prepareStatement(sql);for (int i = 0; i < obj.length; i++) {stmt.setObject(i + 1, obj[i]);}rs = stmt.executeQuery();LinkedList<String> list = new LinkedList();// 存储表头名称int col = rs.getMetaData().getColumnCount();// 获取列数// 根据表头名称建立键值对for (int i = 0; i < col; i++) {LinkedList<Object> tList = new LinkedList();list.add(rs.getMetaData().getColumnName(i + 1));map.put(list.getLast(), tList);}while (rs.next()) {for (int i = 0; i < col; i++) {LinkedList<Object> tList = map.get(list.get(i));tList.add(rs.getObject(i + 1));}}close();return map;} catch (SQLException ex) {close();throw ex;} catch (ClassNotFoundException ex) {close();throw ex;}}public synchronized boolean update(String sql, Object... obj) throws ClassNotFoundException, SQLException {try {open();stmt = conn.prepareStatement(sql);for (int i = 0; i < obj.length; i++) {stmt.setObject(i + 1, obj[i]);}stmt.executeUpdate();close();return true;} catch (ClassNotFoundException ex) {close();throw ex;} catch (SQLException ex) {close();throw ex;}}private synchronized void open() throws ClassNotFoundException, SQLException {Class.forName(drivers);conn = DriverManager.getConnection(url, user, passwd);conn.setAutoCommit(true);}private synchronized void close() {try {stmt.close();conn.close();} catch (SQLException ex) {}}
}
接着定义数据类和DAO类
Boss.java
/** To change this license header, choose License Headers in Project Properties.* To change this template file, choose Tools | Templates* and open the template in the editor.*/
package boss;/**** @author lol*/
public class Boss {String name;String map;int x;int y;String time;String time2;String time3;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getMap() {return map;}public void setMap(String map) {this.map = map;}public int getX() {return x;}public void setX(int x) {this.x = x;}public int getY() {return y;}public void setY(int y) {this.y = y;}public String getTime() {return time;}public void setTime(String time) {this.time = time;}public String getTime2() {return time2;}public void setTime2(String time2) {this.time2 = time2;}public String getTime3() {return time3;}public void setTime3(String time3) {this.time3 = time3;}public Boss(String name, String map, int x, int y, String time) {this.name = name;this.map = map;this.x = x;this.y = y;this.time = time;}}
BossControl .java
/** To change this license header, choose License Headers in Project Properties.* To change this template file, choose Tools | Templates* and open the template in the editor.*/
package boss;import db.DBMan;
import db.DBMap;
import java.io.IOException;
import java.sql.SQLException;
import java.util.LinkedList;public class BossControl {public static void add(Boss e) throws SQLException, IOException, ClassNotFoundException {String sql = "insert into shentu(name, map, time, time2, time3, x, y) value(?,?,?,?,?,?,?)";DBMan db = DBMan.getInstance();db.update(sql, e.getName(), e.getMap(), e.getTime(), e.getTime2(), e.getTime3(), e.getX(), e.getY());}public static void update(Boss e) throws SQLException, IOException, ClassNotFoundException {String sql = "UPDATE shentu SET map = ?, time = ?, time2 = ?, time3 = ?, x = ?, y = ? WHERE name = ?";DBMan db = DBMan.getInstance();db.update(sql, e.getMap(), e.getTime(), e.getTime2(), e.getTime3(), e.getX(), e.getY(), e.getName());}public static void delete(String name) throws IOException, SQLException, ClassNotFoundException {String sql = "delete from shentu where name=?";DBMan db = DBMan.getInstance();db.update(sql, name);}}
GUI制作
直接使用NetBeans的可视化编程即可。
MainFrame.java
/** To change this license header, choose License Headers in Project Properties.* To change this template file, choose Tools | Templates* and open the template in the editor.*/
package main;import boss.Boss;
import boss.BossControl;
import db.DBMan;
import db.DBMap;
import gui.TextJDialog;
import java.io.IOException;
import java.sql.SQLException;
import java.sql.Time;
import java.util.Date;
import java.util.LinkedList;
import java.util.Map;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.SpinnerNumberModel;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableModel;/**** @author lol*/
public class MainFrame extends javax.swing.JFrame {JFrame f;/*** Creates new form MainFrame*/public MainFrame() {f = this;initComponents();init();}/*** This method is called from within the constructor to initialize the form.* WARNING: Do NOT modify this code. The content of this method is always* regenerated by the Form Editor.*/@SuppressWarnings("unchecked")// <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() {jScrollPane1 = new javax.swing.JScrollPane();jTable1 = new javax.swing.JTable();jLabel1 = new javax.swing.JLabel();jLabel2 = new javax.swing.JLabel();jLabel3 = new javax.swing.JLabel();jLabel4 = new javax.swing.JLabel();timeText = new javax.swing.JTextField();nameText = new javax.swing.JTextField();yText = new javax.swing.JSpinner();xText = new javax.swing.JSpinner();jButton1 = new javax.swing.JButton();mapText = new javax.swing.JTextField();time2Text = new javax.swing.JTextField();jLabel5 = new javax.swing.JLabel();jLabel6 = new javax.swing.JLabel();time3Text = new javax.swing.JSpinner();setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());jTable1.setModel(new javax.swing.table.DefaultTableModel(new Object [][] {{null, null, null, null},{null, null, null, null},{null, null, null, null},{null, null, null, null}},new String [] {"Title 1", "Title 2", "Title 3", "Title 4"}));jScrollPane1.setViewportView(jTable1);getContentPane().add(jScrollPane1, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 260, 340, 350));jLabel1.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18NjLabel1.setText("怪兽名字");getContentPane().add(jLabel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 10, -1, 32));jLabel2.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18NjLabel2.setText("地图名字");getContentPane().add(jLabel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 49, -1, 32));jLabel3.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18NjLabel3.setText("位置坐标");getContentPane().add(jLabel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 88, -1, 32));jLabel4.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18NjLabel4.setText("刷新时间(30分)");getContentPane().add(jLabel4, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 170, -1, 32));timeText.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18NtimeText.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent evt) {timeTextActionPerformed(evt);}});getContentPane().add(timeText, new org.netbeans.lib.awtextra.AbsoluteConstraints(140, 130, 210, 32));nameText.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18NnameText.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent evt) {nameTextActionPerformed(evt);}});getContentPane().add(nameText, new org.netbeans.lib.awtextra.AbsoluteConstraints(91, 11, 260, 32));getContentPane().add(yText, new org.netbeans.lib.awtextra.AbsoluteConstraints(240, 90, 110, 32));getContentPane().add(xText, new org.netbeans.lib.awtextra.AbsoluteConstraints(90, 90, 110, 32));jButton1.setText("确认");jButton1.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent evt) {jButton1ActionPerformed(evt);}});getContentPane().add(jButton1, new org.netbeans.lib.awtextra.AbsoluteConstraints(250, 210, 100, 40));mapText.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18NmapText.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent evt) {mapTextActionPerformed(evt);}});getContentPane().add(mapText, new org.netbeans.lib.awtextra.AbsoluteConstraints(91, 50, 260, 32));time2Text.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18Ntime2Text.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent evt) {time2TextActionPerformed(evt);}});getContentPane().add(time2Text, new org.netbeans.lib.awtextra.AbsoluteConstraints(140, 170, 210, 30));jLabel5.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18NjLabel5.setText("刷新时间");getContentPane().add(jLabel5, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 210, 80, 40));jLabel6.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18NjLabel6.setText("死亡时间(30分)");getContentPane().add(jLabel6, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 130, 130, 32));time3Text.setValue(30);getContentPane().add(time3Text, new org.netbeans.lib.awtextra.AbsoluteConstraints(90, 210, 150, 40));pack();}// </editor-fold> private void timeTextActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:} private void nameTextActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:} private Boss getBoss() {String name = nameText.getText();String map = mapText.getText();int x = Integer.parseInt(xText.getValue().toString());int y = Integer.parseInt(yText.getValue().toString());String time = String.valueOf(timeText.getText());return new Boss(name, map, x, y, time);}// 显示点击的客户信息public void showItem(int row) {TableModel m = jTable1.getModel();nameText.setText(m.getValueAt(row, 1).toString());mapText.setText(m.getValueAt(row, 4).toString());xText.setValue(Integer.parseInt(m.getValueAt(row, 2).toString()));yText.setValue(Integer.parseInt(m.getValueAt(row, 3).toString()));}private void save() {Boss boss = getBoss();long time = new Date().getTime();time += Long.parseLong(time3Text.getValue().toString()) * 60 * 1000;Date d = new Date(time);boss.setTime2(String.valueOf(d.getHours()) + ":" + String.valueOf(d.getMinutes()) + ":" + String.valueOf(d.getSeconds()));boss.setTime3(time3Text.getValue().toString());try {BossControl.add(boss);} catch (SQLException | IOException | ClassNotFoundException ex) {try {System.out.println("已经存在,进行修改" + ex.getMessage());BossControl.update(boss);} catch (SQLException | IOException | ClassNotFoundException ex1) {System.out.println("数据库出错---" + ex1.getMessage() + "\n");}}init();JOptionPane.showMessageDialog(this, "操作成功!", "提示", JOptionPane.INFORMATION_MESSAGE);}private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { save();} private void mapTextActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:} private void time2TextActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:} public void init() {String sql = "select name, map, time2, x, y from shentu";this.setResizable(false);DBMap m;try {m = DBMan.getInstance().query(sql);showTable(m, title);} catch (IOException | ClassNotFoundException | SQLException ex) {System.out.println("数据库出错---" + ex.getMessage() + "\n");}Thread t = new Thread() {@Overridepublic void run() {while (true) {Date d = new Date();timeText.setText(String.valueOf(d.getHours()) + ":" + String.valueOf(d.getMinutes()) + ":" + String.valueOf(d.getSeconds()));long time = new Date().getTime();time += Long.parseLong(time3Text.getValue().toString()) * 60 * 1000;d = new Date(time);time2Text.setText(String.valueOf(d.getHours()) + ":" + String.valueOf(d.getMinutes()) + ":" + String.valueOf(d.getSeconds()));try {Thread.sleep(1000);} catch (InterruptedException ex) {}}}};t.start();}// 显示数据public void showTable(Map<String, LinkedList<Object>> map, String... title) {// 将数据生成二维数组Set<String> set = map.keySet();Object[] a = map.values().toArray();int size = ((LinkedList<Object>) a[0]).size();Object[][] cc = new Object[size][a.length];for (int i = 0; i < a.length; i++) {LinkedList<Object> l = (LinkedList<Object>) a[i];for (int j = 0; j < size; j++) {cc[j][i] = l.get(j);}}// 将二维数组导入并设置标头Object[] ar = set.toArray();if (title.length == set.size()) {ar = title;}// 实例化,并点击事件jTable1 = new JTable(cc, ar) {@Overridepublic boolean isCellEditable(int row, int column) {if (lastCol == column && lastRow == row) {TextJDialog t = new TextJDialog(f, true, "确认删除请输入Y");if (t.getText(0).equalsIgnoreCase("Y")) {try {BossControl.delete(jTable1.getModel().getValueAt(row, 1).toString());init();JOptionPane.showMessageDialog(null, "删除成功", "提示", JOptionPane.INFORMATION_MESSAGE);} catch (Exception ex) {JOptionPane.showMessageDialog(f, ex.getMessage(), "错误", JOptionPane.ERROR_MESSAGE);}}} else {showItem(row);}lastRow = row;lastCol = column;return false;}};// 将单元格内容居中显示DefaultTableCellRenderer render = new DefaultTableCellRenderer();render.setHorizontalAlignment(SwingConstants.CENTER);for (int i = 0; i < ar.length; i++) {jTable1.getColumn(ar[i]).setCellRenderer(render);}jScrollPane1.setViewportView(jTable1);this.revalidate();}private int lastRow;private int lastCol;String[] title = {"刷新时间", "怪兽名字", "X坐标", "Y坐标", "地图名称"};// Variables declaration - do not modify private javax.swing.JButton jButton1;private javax.swing.JLabel jLabel1;private javax.swing.JLabel jLabel2;private javax.swing.JLabel jLabel3;private javax.swing.JLabel jLabel4;private javax.swing.JLabel jLabel5;private javax.swing.JLabel jLabel6;private javax.swing.JScrollPane jScrollPane1;private javax.swing.JTable jTable1;private javax.swing.JTextField mapText;private javax.swing.JTextField nameText;private javax.swing.JTextField time2Text;private javax.swing.JSpinner time3Text;private javax.swing.JTextField timeText;private javax.swing.JSpinner xText;private javax.swing.JSpinner yText;// End of variables declaration
}
工具类
这个是之前写好的,可以自定义进行弹框输入并返回。
TextJDialog .java
/** To change this license header, choose License Headers in Project Properties.* To change this template file, choose Tools | Templates* and open the template in the editor.*/
package gui;import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JTextField;/**** @author lol*/
public class TextJDialog extends JDialog {private JTextField[] text;private int size;private TextJDialog jd;public TextJDialog(Frame owner, boolean modal, String... str) {super(owner, modal);this.setTitle("请输入以下内容");if (str.length == 0) {return;}TextListener lis = new TextListener();jd = this;size = str.length;text = new JTextField[size];this.setLayout(null);int i;int maxLength = -1;for (i = 0; i < size; i++) {JLabel la = new JLabel(str[i]);int l = str[i].length();if (l > maxLength) {maxLength = l;}la.setBounds(10, 5 + 30 * i, 15 * l, 25);text[i] = new JTextField();text[i].setBounds(20 + 15 * l, 5 + 30 * i, 150, 25);text[i].addActionListener(lis);this.add(la);this.add(text[i]);}JButton b = new JButton("确认");b.addActionListener(lis);b.setBounds(170 + maxLength * 15, 5 + 30 * (i - 1), 60, 25);this.addKeyListener(lis);this.add(b);this.setBounds(owner.getX() + owner.getWidth() / 2 - 150, owner.getY() + owner.getHeight() / 2 - (size + 1) * 20, 275 + maxLength * 15, (size + 1) * 40);this.setVisible(true);}public String getText(int id) {if (id >= 0 && id < size) {return text[id].getText();} else {return null;}}public String[] getTexts() {String[] str = new String[size];for (int i = 0; i < size; i++) {str[i] = text[i].getText();}return str;}class TextListener extends KeyAdapter implements ActionListener {@Overridepublic void actionPerformed(ActionEvent e) {jd.setVisible(false);}@Overridepublic void keyPressed(KeyEvent e) {if (e.getKeyChar() == KeyEvent.VK_ENTER) {jd.setVisible(false);}}}
}
主函数
Main.java
/** To change this license header, choose License Headers in Project Properties.* To change this template file, choose Tools | Templates* and open the template in the editor.*/
package main;/**** @author lol*/
public class Main {/*** @param args the command line arguments*/public static void main(String[] args) {// TODO code application logic hereMainFrame m = new MainFrame();m.setTitle("神途BOSS计时器------by.凌恋");m.setVisible(true);m.setAlwaysOnTop(true); // 置顶}}
运行效果
不定时搞事情篇 No.1 神途BOSS时间记录器相关推荐
- 不定时搞事情篇 No.2 神途BOSS时间记录器(续篇)
计时器 之前做出来的是单机版的,正常来说,如果在一起玩,其实是好几人一起打不同的boss,那么问题来了,我们需要进行同步. 完了经过我一晚上的奋斗,我做出来下面这个东东,介绍一下功能用法. 主界面 只 ...
- 神途boss_神途boss刷新
道士还有一个独具特色的法术,叫做施毒术.在传奇中,当玩家达到14级的时候就可以修炼这种法术了.道士玩家平时可以通过打怪来获取到制作毒粉的材料(材料每次需求量并不是很多,材料种类是三种),每份毒粉制作成 ...
- 神途boss_神途BOSS刷新了,女玩家以身冒险前往打骨魔洞
神途BOSS刷新了,女玩家以身冒险前往打骨魔洞 来源:神途私服 2018-03-14 作者:新开神途发布网站,神途,『神途发布网』-haosf蓝月传奇sf,zhaosf传奇sf 阅读:次 点击提交 在 ...
- 神途boss_神途boss大全
玩家在51<百战天下>的游戏界面中,点击右上方的诛仙封魔图标即可打开活动界面,在诛仙封魔中显示了横行百战大陆的各大妖邪魔兽们,在诛仙封魔中分为世界boss和封魔塔两类,其中封魔塔中存在的乃 ...
- 神途boss_神途boss刷新点一举一动都显出了足够的萌属性
神途boss刷新点 <神途>萌宠看点多,暑期游戏更欢乐.宠物系统是<神途>的一大特色,不仅玩法多样,神途金币合击版有炼化.炼妖.装饰.装备.染色.图鉴和变身等玩法,而且宠物造型 ...
- 神途boss_神途boss攻略
在法宝强化到一定程度之后就能对法宝进行升级.法宝升级可以由玩家自主选择升级类型,攻击型,防御型,辅助型三种不同的法宝形态可供选择.每一种形态都代表着不同的使用方法哦!想要了解更多三界仙魔榜内容,那就快 ...
- 在线BOSS计时器(传奇计时器|神途计时器|神途BOSS计时器)
网址:shentu.1996game.cn 直接进入以后,输入账号和密码即可. 可以创建游戏,创建房间等. 效果图: 输入怪物名,地图名,坐标选填,点击[创建],即可创建BOSS. 点击[死],[捡] ...
- 谷歌搞事情:最先被AI淘汰的,居然是做AI的?
坊间流传着这么一个说法:谷歌想回中国,必须靠AI:而靠AI回中国,必须搞个大事情.于是,上周四的晚上李飞飞发布了一篇博客,然后连着发了三条推特,宣布一个叫AutoML的AI产品启动了. 一夜之间,中国 ...
- 51CTO博客移动化意味着什么?IT博主可以搞事情了!
我红着脸写下了这个标题. 就好比在21世纪的今天,我煞有介事地说:"手机能上网意味着什么?" 好在,很多看起来不可思议的事情,在特定的环境下,就没那么匪夷所思了.如果对山区孩子说这 ...
最新文章
- WPF 支持分组互斥的 RadioButton 式单选菜单
- isotope == parallax 例子
- java fx listview,JavaFX 8自定义ListView单元它是邪恶的
- 再见2019,拥抱2020
- CarMaker与NS3联合仿真平台--安装
- python可以下载百度文库的文档_Python 文档
- 南方cass字体样式设置_CASS字体设置之方正字库中英文对照表
- 获取中国气象台卫星云图
- python跳出双循环break图例
- 简单粗暴搞定网易云音乐限制!找回失去的灰色快乐
- 微信小程序跳转微信内置浏览器
- inno setup 修改将程序安装路径写入注册表
- 一个屌丝程序猿的人生(三十八)
- 创建RAID5磁盘阵列和RAID10磁盘阵列
- 悠然一指,点“识”成金
- NSS 错误码详细信息
- 怎么用Python计算地球上任意两个用经纬度表示的点的弧面距离?
- 老程序员来说算法重要不重要
- 无线调试服务器,从无线局域网控制器(WLC)的收集的调试
- html中国家选择,jquery国家选择插件flagstrap
热门文章
- php抓取网页所有文字,php抓取网页内容的方法
- govendor包管理工具
- 2022第二届低代码极客挑战赛邀你来战!
- 手把手教你实现基于RT-Thread的百度语音识别(一)
- Java二十八:Java可变参数
- (1)Shell 编程学习 Shell是什么?Shell的浅显原理 为什么要学Shell 及其第一个Shell脚本 CTF角度学习Shell
- 车辆提示请防止车辆滑动 即车辆驻车异常
- 南开大学 计算机学院 副院长 李,院长刘立松到计算机科学系调研座谈
- Java 泛型的不变性 (invariance)、协变性 (covariance)、逆变性 (contravariance)
- 达观数据王文广:如何玩转自然语言理解和深度学习实践?