zacaria
یک شنبه 23 مرداد 1390, 14:11 عصر
سلام
من تلاش می کنم یک بازی شطرنج توسط اس ام ام بنویسم
به این صورت که (با فرض سفید بودن من و سیاه بودن شما) بعد از انجام حرکت اول توسط من برنامه، شماره مربع منبع و شماره مربع مقصد حرکت من را توسط اس ام اس به شما ارسال کند و برنامه سمت شما این پیام را دریافت و اجرا کند.
مشکل این است که برنامه سمت من بعد از ارسال پیام هنگ می کند و در پنجره output نت بینز پیغام [INFO] [sms ] ## javacall: SMS sending... به نمایش د رمیاید(در گوشی هم هنگ می کند)
البته برنامه سمت شما پیام را همین دریافت و اجرا می کند!!!
من بخشی از کدها را که مربوط به ارسال است اینجا میزارم:
کدهای کلاس ارسال کننده پیامک:
import java.io.IOException;
import javax.microedition.io.Connector;
import javax.wireless.messaging.MessageConnection;
import javax.wireless.messaging.TextMessage;
public class jcSendSMS extends Thread{
public static boolean recieve;
static String address = "";
public static String msgReceived = "";
public String payloadText;
public jcSendSMS(String mobile){
address = "sms://" + mobile + ":5000";
}
public void run(){
}
public void start(){
sendSMS(payloadText);
}
public boolean sendSMS(String payloadText){
try{
MessageConnection clientConn = (MessageConnection) Connector.open(address);
TextMessage tmsg = (TextMessage)clientConn.newMessage(MessageConnecti on.TEXT_MESSAGE);
tmsg.setAddress(address);
tmsg.setPayloadText(payloadText);
clientConn.send(tmsg);
clientConn.close();
}
catch (IOException ioe) {
System.out.println("ioe: " + ioe.toString());
return false;
} catch (IllegalArgumentException iae) {
System.out.println("iae: " + iae.toString());
return false;
} catch (SecurityException se) {
System.out.println("se: " + se.toString());
return false;
} catch (Exception e){
System.out.println("e: " + e.toString());
return false;
}
return true;
}
}
این هم متد ارسال کننده پیامک که شیی از کلاس بالا را نمونه ساز یکرده استارت می کند:
private void send(String str, int gameType){
try{
switch (gameType){
case jcGame.playAgainstHuman_withBluetooth :
break;
case jcGame.playAgainstHuman_withSMS :
if (jcGame.player[GameBoard.GetCurrentPlayer()] == jcGame.Human){
sms.payloadText = str;
sms.start();
}
break;
}
}catch(Exception e){System.out.println(e.toString());}
}
این هم متدی که متد بالا را فراخوانی می کند:
// A simple loop getting moves from the current player until the game is over
public boolean RunGame() throws Exception
{
try{
jcPlayer CurrentPlayer;
jcMove Mov;
CurrentPlayer = Players[ GameBoard.GetCurrentPlayer() ];
Mov = CurrentPlayer.GetMove( GameBoard );
if (Mov.isAccepted){
// Change the state of the game accordingly
SMSmov = Mov;
send(Integer.toString(SMSmov.SourceSquare) + Integer.toString(SMSmov.DestinationSquare), jcGame.game_type);
GameBoard.ApplyMove( Mov );
GameBoard.Print();
return true;
}
return false;
}catch(Exception e){System.out.println("E in runing game: " + e.toString());return false;}
}
به شدت محتاح کمک هستم
ممنون
من تلاش می کنم یک بازی شطرنج توسط اس ام ام بنویسم
به این صورت که (با فرض سفید بودن من و سیاه بودن شما) بعد از انجام حرکت اول توسط من برنامه، شماره مربع منبع و شماره مربع مقصد حرکت من را توسط اس ام اس به شما ارسال کند و برنامه سمت شما این پیام را دریافت و اجرا کند.
مشکل این است که برنامه سمت من بعد از ارسال پیام هنگ می کند و در پنجره output نت بینز پیغام [INFO] [sms ] ## javacall: SMS sending... به نمایش د رمیاید(در گوشی هم هنگ می کند)
البته برنامه سمت شما پیام را همین دریافت و اجرا می کند!!!
من بخشی از کدها را که مربوط به ارسال است اینجا میزارم:
کدهای کلاس ارسال کننده پیامک:
import java.io.IOException;
import javax.microedition.io.Connector;
import javax.wireless.messaging.MessageConnection;
import javax.wireless.messaging.TextMessage;
public class jcSendSMS extends Thread{
public static boolean recieve;
static String address = "";
public static String msgReceived = "";
public String payloadText;
public jcSendSMS(String mobile){
address = "sms://" + mobile + ":5000";
}
public void run(){
}
public void start(){
sendSMS(payloadText);
}
public boolean sendSMS(String payloadText){
try{
MessageConnection clientConn = (MessageConnection) Connector.open(address);
TextMessage tmsg = (TextMessage)clientConn.newMessage(MessageConnecti on.TEXT_MESSAGE);
tmsg.setAddress(address);
tmsg.setPayloadText(payloadText);
clientConn.send(tmsg);
clientConn.close();
}
catch (IOException ioe) {
System.out.println("ioe: " + ioe.toString());
return false;
} catch (IllegalArgumentException iae) {
System.out.println("iae: " + iae.toString());
return false;
} catch (SecurityException se) {
System.out.println("se: " + se.toString());
return false;
} catch (Exception e){
System.out.println("e: " + e.toString());
return false;
}
return true;
}
}
این هم متد ارسال کننده پیامک که شیی از کلاس بالا را نمونه ساز یکرده استارت می کند:
private void send(String str, int gameType){
try{
switch (gameType){
case jcGame.playAgainstHuman_withBluetooth :
break;
case jcGame.playAgainstHuman_withSMS :
if (jcGame.player[GameBoard.GetCurrentPlayer()] == jcGame.Human){
sms.payloadText = str;
sms.start();
}
break;
}
}catch(Exception e){System.out.println(e.toString());}
}
این هم متدی که متد بالا را فراخوانی می کند:
// A simple loop getting moves from the current player until the game is over
public boolean RunGame() throws Exception
{
try{
jcPlayer CurrentPlayer;
jcMove Mov;
CurrentPlayer = Players[ GameBoard.GetCurrentPlayer() ];
Mov = CurrentPlayer.GetMove( GameBoard );
if (Mov.isAccepted){
// Change the state of the game accordingly
SMSmov = Mov;
send(Integer.toString(SMSmov.SourceSquare) + Integer.toString(SMSmov.DestinationSquare), jcGame.game_type);
GameBoard.ApplyMove( Mov );
GameBoard.Print();
return true;
}
return false;
}catch(Exception e){System.out.println("E in runing game: " + e.toString());return false;}
}
به شدت محتاح کمک هستم
ممنون