当前位置: 代码迷 >> J2SE >> 请原谅小弟我用这样的有关问题影响你挑战难题的兴致
  详细解决方案

请原谅小弟我用这样的有关问题影响你挑战难题的兴致

热度:151   发布时间:2016-04-24 13:23:35.0
请原谅我用这样的问题影响你挑战难题的兴致!
再次声明,请高人们原谅我用这样的问题影响你挑战难题的兴致,如果时间允许还请给在下一点提示
我想知道用现有的技术是否可以实现这样一个应用程序。背景是这样的。
首先, 我把一个网络游戏的区号,账号,密码存在记事本里,下以《热血传奇》为列。
然后, 我想写这样一个软件, 在我双击《热血传奇》.exe 的快捷图标后,它可以打开登录控件TfrmMain中窗口类名TComboBox的下拉菜单,选取与记事本中所存区号相吻合的区号选项并激活“进入游戏”botton,再把记事本里的账号和密码输入对应的Edit里,激活“确定”然后血还没冷的人就可以打宝PK了。(TfrmMain,TComboBox,botton,Edit是用spy++看到的,意思我不懂)
问:如果只针对〈传奇〉肯定可以写出来,但是把范围扩大到〈魔兽〉,QQ ,呢?各个游戏的登录方式不同,再如QQ中没有区号但是有隐身登录,自动登录等选项。也就是说我要一个可以自动输入所有需要区号,账号,密码,登录模式等选项的软件(在我合法拥有密码的条件下),现在的编程技术可以实现吗?
请大家指点迷津,解我困惑顺便再给点提示。我大学是学经济类专业的,现在想以制作这个软件为目标学习编程。有乐意晦人不倦的朋友请加我QQ346600686或者E-mail:zhizhuo04@sina.com


------解决方案--------------------
up
------解决方案--------------------
你就要要一个可以自动登陆的东东是不是,如果是的话说怎么麻烦干什么啊
1,首先你的登陆界面是什么设计的,如果是C++的,这样建立C++ -> SQL(或者自己日志文件) -> java程序 -> sql(自己的日志文件) -> c++ , 这个做起来麻烦,不考虑
2,最好是自己用java.swing设计登陆界面,按自己的规则配置登陆的文件,通过自动读取配置文件后,将数据到包发到游戏服务器,但是难点是游戏的服务器的数据是怎么封装的,你要清楚,如果不知道,基本上是无法实现,(1也无法实现)
我现在在你清楚你知道服务器的数据是如何封装的来进行设计:
假设服务器的数据是这样封装的
1,游戏服务器地址
2,区号
3,游戏ID
4,游戏密码
5,登陆模式
6,。。。

我就假定以QQ为例吧
先建立一个登陆的配置文件login.txt
loginServerIP=www.qq.com.cn
ID=zhangsan
passWord=1234
loginMode=hermitlogin(不清楚QQ影身登陆是什么东西代表的可能是个Byte类型的如Byte choose= 0xxxxxxx,最高位为符号号,其他x位为模式位,如果是最低位代表影身登陆,就应该是00000001,到数据发到服务器后,我猜测是通过这样一个for循环
for(int i = 0 ; i < 7;i++){
byte n = 1<<i;
if((choose&n)) != 0)//将n与choose进行按位与{
则是什么模式
}else{
则不是什么模式
}
}
TypeClass=java.lang.String
所以你必须清楚游戏的数据封装,不然我们这里也就只能纸上谈兵而已


Java code
//先封装一个数据封装的类,Player.javapackage test02;public class Player {    private String ID;    private String passWord;    private String loginMode;        public Player(){            }    public Player(String id, String passWord,            String loginMode) {        super();        ID = id;        this.passWord = passWord;        this.loginMode = loginMode;    }    public String getID() {        return ID;    }    public void setID(String id) {        ID = id;    }    public String getPassWord() {        return passWord;    }    public void setPassWord(String passWord) {        this.passWord = passWord;    }    public String getLoginMode() {        return loginMode;    }    public void setLoginMode(String loginMode) {        this.loginMode = loginMode;    }        public String toString(){        return this.ID+" " + this.passWord + " " + this.loginMode;    }        //写一个发送到服务器的信息    public void send(String serverip){        //具体的服务器IP,和数据        String s = this.toString();         //将s转换为服务器所接受的字节码,或者其他编码类型        //根据数据的封装,服务器的IP来发送,我这是根据对象的toString来发送        //假定服务器是通过解析String来执行操作的;    }    }//通过反射机制来动态加载文件和player.classpackage test02;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.lang.reflect.Constructor;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.Properties;public class LoginPlayer {    private static Properties  p;    static{        p = new Properties();        try {            p.load(new FileInputStream("login.txt"));        } catch (FileNotFoundException e) {                        e.printStackTrace();        } catch (IOException e) {                        e.printStackTrace();        }        String loginServerIP = p.getProperty("loginServerIP");        String ID = p.getProperty("ID");        String passWord =p.getProperty("passWord");        String loginMode = p.getProperty("loginMode");        String TypeClass = p.getProperty("TypeClass");                try {            Class<?> c = Class.forName("test02.Player");            Class<?> cc = Class.forName(TypeClass);            Constructor<?> con = null;            try {                con = c.getConstructor(cc,cc,cc,cc);                Object obj = null;                try {                    obj = con.newInstance(ID,passWord,loginMode);                    Method m = c.getDeclaredMethod("send", cc);                    m.invoke(obj,loginServerIP);                } catch (IllegalArgumentException e) {                                        e.printStackTrace();                } catch (InstantiationException e) {                                        e.printStackTrace();                } catch (IllegalAccessException e) {                                        e.printStackTrace();                } catch (InvocationTargetException e) {                                        e.printStackTrace();                }                            } catch (SecurityException e) {                                e.printStackTrace();            } catch (NoSuchMethodException e) {                                e.printStackTrace();            }        } catch (ClassNotFoundException e) {                        e.printStackTrace();        }    }        }
  相关解决方案