Bài trước chúng ta đã có thể đăng nhập vào một hệ thống thành viên đơn giản, code trước tôi cũng đã post hết mã source của server. Chúng ta ở bài này sẽ sử dụng form send.html và gửi thông tin đến server thông qua form này.
Nhưng đầu tiên chúng ta cần tạo ra một nhân vật của mình, tôi cũng sử dụng class robot để tạo nhân vật, nhưng chúng ta sẽ trực tiếp điều khiển nó thông qua phím chứ không phải là mã lệnh nữa. class canvas của chúng ta sẽ thành như thế này:
mog.java
C:\Users\thanhliem\Documents\NetBeansProjects\mog\src\mog.java |
class canvas extends Canvas{
textfield tf;
Vector rb=new Vector();
Font f=Font.getFont(0,0,8);
int w,h,k=0,fh;
String command="";
robot me=new robot(0,0);
public canvas(){
setFullScreenMode(true);
w=getWidth();
h=getHeight();
fh=f.getHeight();
tf=new textfield("command",0,0,w);
}
public void paint(Graphics g){
g.setFont(f);
g.setColor(0);
g.fillRect(0,0,w,h);
tf.paint(g,k,true);
g.setColor(0xf0f0);
g.setClip(0,0,w,h);
g.drawString(command,0,fh*2,Graphics.TOP|Graphics.LEFT);
if(rb!=null)
for(int i=0;i<rb.size();i++)
((robot)rb.elementAt(i)).paint(g);
me.paint(g);
k=0;
repaint();
}
public void keyPressed(int k){
this.k=k;
if(k==-5){
command=tf.getString();
String[] acommand=tach(command,".");
Vector trb=new Vector();
for(int i=0;i<acommand.length;i++){
String[] info=tach(acommand[i],",");
robot nrb=new robot(w/2,h/2);
for(int j=0;j<rb.size();j++){
if(info[0].equals(((robot)rb.elementAt(j)).say)){nrb=(robot)rb.elementAt(j);
System.out.println("dectect");}}
nrb.getcommand(info);
trb.addElement((robot)nrb);}
rb=trb;}
if(k==-4){me.nx=me.x+5;}
if(k==-3){me.nx=me.x-5;}
if(k==-2){me.ny=me.y+5;}
if(k==-1){me.ny=me.y-5;}
}
public void keyReleased(int k){this.k=0;}
public String[] tach(String s,String c){
Vector v=new Vector();
if(!s.endsWith(c)){s+=c;}
int st=0,np=s.indexOf(c,st);
while(np!=-1){
v.addElement((String)s.substring(st,np));
st=np+c.length();
np=s.indexOf(c,st);}
String[] rt=new String[v.size()];
v.copyInto((String[])rt);
for(int i=0;i<rt.length;i++){System.out.println(rt[i]+rt[i].length());}
return rt;}
}
Xong bây giờ thì chỉnh sửa một chút ở file mog.java để gửi thông tin lên server thông qua hàm send mà ta đã biết. địa chỉ vẫn là địa chỉ cũ, còn thông số thì có thay khác theo form send.html chúng ta đã biết (nghiên cứu html nhé).
mog.java
C:\Users\thanhliem\Documents\NetBeansProjects\mog\src\mog.java |
public class mog extends MIDlet implements Runnable{
String user,pass;
int id,mode=0;
canvas cv=new canvas();
public void startApp(){
Display.getDisplay(this).setCurrent(new login(this));}
public void destroyApp(boolean t){}
public void pauseApp(){}
public void cv(String user,String pass){
this.user=user;
this.pass=pass;
String st= send("http://holyeyed.99k.org/game/server.php","submit=2&user="+user+"&pass="+pass);
id=Integer.parseInt(st.substring(3));
if(id>0){
Display.getDisplay(this).setCurrent(cv);
mode=3;
new Thread(this).start();}}
public void run(){
while(true){
try{
Thread.sleep(500);
switch(mode){
case 1:
break;
case 2:
break;
case 3:
send("http://holyeyed.99k.org/game/server.php","submit=3&id="+id+"&mess=holyeyed&x="+cv.me.x+"&y="+cv.me.y);
break;}}catch(Exception e){}}}
String send(String add,String para){
try{
HttpConnection hc=(HttpConnection)Connector.open(add);
hc.setRequestMethod(HttpConnection.POST);
hc.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
OutputStream os=hc.openOutputStream();
os.write(para.getBytes());
InputStream is=hc.openDataInputStream();
int c;
StringBuffer sb=new StringBuffer();
while((c=is.read())!=-1){sb.append((char)c);}
is.close();
os.close();
hc.close();
System.out.println(sb.toString());
return sb.toString();
}catch(Exception e){}
return null;}}
Vậy thôi, dù bạn có chạy chương trình thì chỉ có thể thấy là điều khiển được nhân vật hình vuông thôi, chứ không biết nó có gửi thông tin đúng lên server hay không. Nhưng đừng lo, theo lý thuyết là vậy và bạn sẽ biết được là nó có thật sự gửi được hay không thì chờ bài sau nhé.
http://holyeyed.99k.org/function/up/mog-84566.zip
http://holyeyed.99k.org/function/up/mog-57614.jar
Không có nhận xét nào:
Đăng nhận xét