අපි Telco ඇප් හදමු.... :)

හෙලෝ කොහොමද යාලුවනේ.. :D

ස්ලිට් එකේ දෙවෙනි සෙම්ස්ටර් එකත් ඉවර උනානෙ නේද.. :roll: දැන් ඉතිං පුදුම කම්මැලිකමක් තමයි දැනෙන්නේ.. මම මේ ඕගොල්ලන්ට කියන්න යන්නෙ නිවාඩු කාලය කම්මැලි නොවී ගත කරන ක්‍රමයක් ගැන.මේකයි ඕගොල්ල මුලින්ම හිතන්න පුලුවන් මේක හුගක් අමාරු වැඩක් කියලා.ඒත් මේක කරගෙන යනකොට ඕගොල්ලනට තේරෙයි මේක හරි සරල දෙයක් බව..මම හැම තිස්සෙම කියන්නෙ මේක හරිම සරලයි කෝඩ් කරන්න ගියාම. අමාරුම දේ හොද අයිඩියා එකක් හොයා ගන්න එක තමා..ඊට පස්සෙ ඉතිං හරි ලේසි..මොනා හරි අමාරු දෙයක් තිබ්බොත් ඕගොල්ලන්ට උදව් කරන්න hSenid එකේ නැන්දාලා මාමලා වගේම Etisalat Appzone Team එකම ලෑස්තියි..

ඔවි.මම කියන්නම් විසිතරේ එහෙනම් මුල ඉදන්ම..තේ එකක් එහෙම ලෑස්ති කරං බලන් ඉන්නකෝ... :)

මේකට කියන්නේ Telco Application Development කියලා..

ඒ කියන්නේ මේකයි.Service Development Platform එහෙක දුවන Application ජාතියක්..

තව මේකට SDP Applications, SMS based mobile Applications කියලාත් කියනවා...ඒ මොන නමින් කිවිවත් වෙන්නෙ ඔය සරල වැඩේම තමයි.

ඒ කියන්නේ මොකක් හරි සේවා සම්පාදක ජාලයක් උපයෝගී කරගෙන කෙටි පණිවිඩ කියන මාධ‍ය ඔස්සේ කරන පොඩි ගැජමැටික්ස් එකක්.. :)

ඔය සිරස සුපර් ස්ටාර් එකේ එහෙම නිතර ඇහෙන්නෙ SS <හිස් තැනක්> <ගායකයාගේ අංකය> සටහන් කොට 7788 ට සෙන්ඩ් කරන්න කියලා..ආං ඔය වැඩේ තමයි... :)

ඒ අපි යවන මැසේජ් dialog එකේ polling system එකකින් count වෙනවා. ඔන්න ඔය දේම ඊට වඩා ගොඩක් සංකීර්ණ විදියට කරන්න පුලුවන් ඇප් එකක් කැළණිය විශ්ව විදයාලයේ අපේ අරුනෝද අයියා හදලා තියෙනවා..ඒක ඕනි කෙනෙක්ට දැනට විවෘතයි.කැමතිනම් test කරලා බලන්න. http://www.mpoll.biz/

ඔය TELCO APP සාගරයෙන් හම්බවෙන පුංචි ඇපි එකක් විතරයි..තව ඊට වඩා හුගක් වෙනස් සංකීර්ණ ඇප් ගණනාවක් අපි මේ එදිනෙදා ජීවිතේ පාවිච්චි කරනවා.

මේවා හැදීමෙන් ඇති පලේ මොකක්ද හලෝ කියලා කෙනෙක් මගෙන් අහන්න පුලුවන් ?? අන්න ඒ ගැනත් මම යමක් කියන්නම්..මම සල්ලි වලට කෑදර ඩයල් එකක් කියලා නම් එහෙම හිතන්න එපා ඕං.. :) (just do this for fun) මේකයි Etisalat එකෙන් මෙච්චර මේ වැඩට ආයෝජනය කරන්නේ පොල් ගාන්න නෙමෙයිනේ...හිහ්...හිහ්...ඒ ගොල්ල මේකෙන් යම් කිසි ලාභයක් බලාපොරොත්තු වෙනවා..අපි දැන් මොකක් හරි ඇප් එකක් හැදුවා කියමුකො..මෙන්න මේ වගේ...phone එකෙන් "c2f_22.7" කියලා ගහලා උෂ්ණත්වය සෙල්සියස් වලින් දීල 4499 ට සෙන්ඩ් කරාම reply එක එනවා අදාල අගය ෆැරන්හයිඩ් වලින්...පට්ට ඇප් එකක් නේද?? Bio,Maths කරන එවුන්ට වෙලාවකට ඕනි වෙනවා නේද??? කොහොමද හෝල් ක්ලාස් එහෙක ප්‍රසිද්ධ කරගත්තොත්...සැප තමා ඉතිං.. :) ඕගොල්ල සමහරවිට නොදන්නවා ඇති ශ්‍රී ලංකාවේ ආණ්ඩුව නියම කරලා තියෙන විදියට Primium Service එකකට අඩුම රුපියල් 5ක් Charge කරනවා..ඒ කියන්නේ මේකයි අපි ඔය සිරස සුපර් ස්ටාර් කෙනෙක්ට චන්දෙ දෙනකොට phone එකෙන් රුපියල් 5ක් credit ගැලවනවා කියන එකයි...හික්..හික්.. :) මමත් මේ මොනා කියනවද මන්දා..හිහ්...හිහ්....මම කියාගෙන ආවෙ මේකයි..දැන් ඔය රුපියල් 5ක් කැපෙනවනේ අපි හදන ඇප් එක use කරන එකාගෙන්...ඒ රුපියල් 5න්, 30% Etisalat Network එකට යනවා..ඉතුරු 70% වම ඇප් එක හදපු එකාට...ඒ කියන්නෙ අපිට....පට්ට නේද??? ඉතිං වැඩේ තියෙන්නේ හොදට මිනිස්සුන්ගෙ හිතට අල්ලන පට්ට ඇප් එකක් හදන එක විතරයි..ඊට පස්සෙ සැප තමා බොලං... :)

උඹලට මතකද දන්නෙත් නෑ අර iPhone App එක Octopus...බූවල්ලගෙ සීන් එක...ඇති දෙයක් නෑනෙ බන්ස්....මොකක් හරි ඇහුවම හරිද?? වැරදිද?? 2න් එකක් කියනවා.. ඔය මගුල ඒ වුනාට පට්ට ආතල්නෙ...වැඩක් නැති එවුන් ෆන් එක ගන්න ඕක සල්ලි කියලා බලන්නෙ නැතුව use කරනවා...හදපු එකා ඉතිං ගොඩේ ගොඩ....ඔන්න ඕකයි සීන් එක..පට්ට අයි ඩියා එකක් ආවොත් බඩුම තමා ඉතිං..හිහ්..හිහ්... :)

ඕගොල්ල ගොඩක් දෙනෙක් හිතන්න පුලුවන් ඇයි මේ එටිසලාට් නෙට්වර්ක් එකේ විතරක් ඇයි මේක තීන්නෙ ඇයි අනෙක් ඒවායෙ නැත්තෙ කියලා..ඒකට හේතුව හරියටම මමත් දන්නෙ නෑ..ඒත් මම හිතන විදියට මේකයි.ඕගොල්ල දන්නෙ නැතුව ඇති අපි Telco Application Developer කෙනෙක් වුනාම අපි හරියට ඒ ජාලයේ පිටතින් වැඩ කරන සේවකයකු වගේ වෙනවා..අපිට ජාලයේ සමහර පිවිසුම් දොරටු වල මුර පද ආදිය ලබා දෙනවා.ඉතින් අපිට තියෙන්නෙ ඒ දේවල් වලින් හොද ඇප්ලිකේශන් එකක් හදන එක. ඒ වුනාට හිතන්න කැමපස් එහෙක ඉන්න ,නැත්තම් කවුරු හරි පොරක් ඕවා හැක් කරලා නෙට්වර්ක් එකෙන් තමන්ට ෆ්‍රී මැසේජ් යවන්න පුලුවන ක්‍රමයක් හදා ගත්තොත් කෝමද?? සැප තමා නේද?? :) :) වෙන කිසිම නෙට්වරක් එකකින් ගත්තෙ නැති අවදානම එටිසලාට් සමාගම අරගෙන ඒගොල්ලන්ගෙ සහ අපගේ ලාභය සදහා hSenid කියන ලංකාවෙ තියෙන මෘදුකාංග නිෂ්පාදන සමාගමක් මේ පද්ධතිය තනා තිබෙනවා. ඒ පද්ධතියට කියන්නේ හරිම ලස්සන නමක්..ඒ තමයි "ඇවෙන්චූරා" (AVENTURA)

ඔව් අවෙන්චූරා කියන්නෙ හරිම විශාල පද්ධතියක්..ඒක හදන්න සෙනිඩ් එකේ මාමලා නැන්දලා හුගක් මහන්සි වෙන්න ඇති...ඕගොල්ල සමහරවිට නොදන්නවා ඇති.මේ අපි කරන Telco App Development කියන දෙය සමහරවිට පොඩි ලමයෙක්ට උනත් ඉගෙන ගත්තොත් කරන්න බැරි නෑ. මොකද දන්නවද?? සාමාන‍යයෙන් අපි කාටහරි මැසේජ් එකක් යවනවා කියන්නේ පොඩි දෙයක් නෙමෙයි.ඒකෙ ඇතුලෙ ලොකු ක්‍රියාවලියක් තියෙනවා. මැසේජ් හැන්ඩ්ලින් කියලා කියනවා මේකට..එ කියන්නේ අපි මැසේජ් එකක් යැවුවම ඒක මුලින්ම යන්නේ නෙට්වරක් එකේ මැසේජ් සෙන්ටර් එකට.ඊට පස්සේ යනවා සිස්ටම් එකට..එකෙන් මුගෙ ක්‍රෙඩිට් තිනවද,අරූගෙ නොම්බරේ හරිද අරවා මේවා හොයල තමා සෙන්ඩ් කරන්නෙ. ඔය හැම මගුලටම යුනික් පාස්වර්ඩ් තීනවා.(මැසේජ් එක යවන්නත් පාස් ඕනි).මම මේ කියන්න හැදුවෙ අන්න ඒ විශාල කාර්‍ය්භාරයන් සියල්ලම අපිට ප්‍රොග්‍රැම් කරන්න ගියා නම් ගොඩක් අමාරු වෙනවා.ඒත් මේ ඇවෙන්වූරා කියන පද්ධතිය ඒ සියලු දේම වග බලා ගන්න නිසා අපිට කිසි කරදරයක් නැහැ.අපිට තියෙන්නෙ ඇප් එක ඇතුලෙ ඇල්ගොරිදම් එක ලියන එක විතරයි.හරිම ලේසී..මම අද ඔගොල්ලන්ට පොඩි ඇප් එකක් හදන හැටි කියා දෙන්නම්.උත්සාහ කරලා බලන්නකො.ඔයාලටම තේරෙයි මේක ලේසි කියලා..හොද අදහසක් ආවොත් මටත් කියන්නකෝ.. :)

සමහර විට ඔය කෙනෙක්ට හරිම සුලු අයිඩියා එකක් එන්න පුලුවන්..ඒ කියන්න හරියට මේ වගේ දෙයක්..රාහු කාලය සෙවීම වගේ..ඒ කියන්නෙ මේකයි. කවුරු හරි කෙනෙක් rahu කියලා ටයිප් කරල මැසේජ් එකක් යවනවා 4499 කියන නොම්බරේට. ඊට පස්සෙ එයාට අදාල දවසෙ රාහු කාලය තියෙන වෙලාව එනවා. ඔගොල්ලන්ට හිතාගන්න පුලුවන් නේද ප්‍රෝග්‍රැම් එක..හරිම සරලයි.database එහෙකින් චෙක් කරලා reply එක එවනවා. code එක පේලි 10ක් වත් නැතුව ඇති මයෙ හිතේ.. ඒ වුනාට ඕගොල්ල නොදන්නවා ඇති ඒක කොයි තරම් ගොඩක් දෙනා පාවිචි කරනවාද කියලා. ඒක විශාල වශයෙන් ලාභ ලබපු සිරා ඇප් එකක්.. :)

දැන් එහෙනම් සීන් එක තේරෙනවා ඇති ඔගොල්ලන්ට..අයිඩියා එක තමයි වැදගත්..කෝඩින් සරලයි...පුදුමයි... :)

හරි එහෙනම් දැන් වැඩේ පටන් ගමු..මම ඕගොල්ලන්ට කියා දෙන්න යන්නෙ සරල Telco App එකක් හදන විදිය ගැන..උත්සාහ කරලා බලන්න..

ආහ් මට මතක් වුනා සරල ප්‍රොග්‍රැම් එකක්, අර සෙල්සියස් ඉදන් ෆැරන්හයිඩ් වලට පෙරලන ප්‍රෝග්‍රැම් එක..ස්ලිට් එකේ අයට මතක ඇති, අර යසස් සර් නිතර දෙන ප්‍රෝග්‍රැම් එක...හික්...හික්... :)

මම වැඩේ කරන්න යන්නෙ Java වලින්. මේක php,Perl,python,.NET,C++ ඕනි මගුලකින් කරන්න පුලුවන්..

හරි මුලින්ම වැඩේට ඕනි සොෆ්ට්වෙයා ටිකක්..මම කියන්නම්කො අවශ‍ය ඒව..ඕගොල්ල ගාව නැත්තම් මෙතනින් බා ගන්න..

1. Java 6.0.2

2. NetBeans 6.9.1

4. SDP Simulator (If prompted Log as User : sliit , Password : sliit)

5. Java Sample Application

හරි දැන් ඔක්කොම බඩු ටික ලෑස්ති ඇතිනෙ..එහෙනම් වැඩේ පටාන් ගමු.. :)

මුලින්ම ඔය ටික පිලිවෙලට ඉන්ස්ටෝල් කරගෙන යන්න.NetBeans Install කරද්දී Full Install එකක් දාන්න. මොකද මේකට අපි ස්ලිට් එකේ කරන tools මදි. JavaEE සහ Apache Tomcat කියන දෙකත් ඕනි වෙනවා. ඒ නිසා ෆුල් ඉන්ස්ටෝල් එකක් දෙන්න අමතක කරන්න එපා.!!

සාමපල් එකේ නම් ඉන්ස්ටොල් කරන්න දෙයක් නෑ නොවැ..හිහ්..හිහ්.. :)

දැන් ඉතිං වැඩේ ඉවරයි වගේ තමයි ඉතිං.. :)

NetBeans ඕපන් කරගන්න..යන්න File>>New Project එන ටැබ් එකෙන් Java WEB තෝර ගන්න..ඊට පස්සෙ සබ් කැටගරි එකේ Web Application තෝර ගන්න..හරි දැන් Next එක ක්ලික් කරන්න..ඊට පස්සෙ එන ටැබ එකේ මොකක් හරි කැමති නමක්(අපි මේ හදන එකට TestApp කියලා කියමු.) දීල Use Dedicated Folder for storing libraries කියන එකට ටික් එකක් දාන්න..දැන් ඒකත් Next කරන්න.Server Setting වල server එකට තියෙන කොම්බො බොක්ස් එකේ Apache Tomcat කියන එක තෝරගන්න.අනික් ඒවා එහෙම්මම තියන්න.ඊට පස්සෙ එන Frame works ටැබ් එකේ මුකුත් වෙනසක් කරන්න නැහැ. දැන් Finish කරන්න.

දැන් Test App එකේ ඇතූලෙ තියෙන Source Packages වලට ගිහින් එකෙ ඇතුලෙ තියෙන Default Source Packages එක right click කරලා ඊට පස්සෙ එන එකෙන් New >> Servlet කියන එක තෝර ගන්න. දැන් ඒක ක්ලික් කරන්න.ඒකට මොනා හරි නමක් දීලා(අපි මේකට Test1 කියමු) Finish කරන්න.

හරි දැන් වැඩේ ගොඩක්ම ඉවරයි..දැන් ඕපන් වෙයි java class එකක් View එකක් නැති.ඒකෙ source එක විතරයි තියෙන්නේ.

දැන් ඔය එන සේරම කෝඩ් ටික කපලා දාන්න select all කරලා..(Auto Generate මගුල් ඇති වැඩකුත් නෑ...හිහ්..හිහ්...)

දැන් මෙන්න මේ කෝඩ් එක එතනට paste කරන්න..

[sourcecode language="java"]

import hsenidmobile.sdp.rest.servletbase.MchoiceSdpResponse;
import hsenidmobile.sdp.rest.servletbase.MchoiceSdpSmsMessage;
import hsenidmobile.sdp.rest.servletbase.MchoiceSdpSmsMoServlet;
import hsenidmobile.sdp.rest.servletbase.MchoiceSdpSmsSender;
import java.net.URL;

public class Test1 extends MchoiceSdpSmsMoServlet {

<%%KEEPWHITESPACE%%> @Override
<%%KEEPWHITESPACE%%> @SuppressWarnings({"static-access", "empty-statement"})
<%%KEEPWHITESPACE%%> protected void onMessage(MchoiceSdpSmsMessage sms) {

<%%KEEPWHITESPACE%%> String phoneNumber = sms.getAddress();
<%%KEEPWHITESPACE%%> String message = sms.getMessage();

<%%KEEPWHITESPACE%%> System.out.println("\n***Message Recieved***");
<%%KEEPWHITESPACE%%> System.out.println("Message : " + message + " | From Number : " + phoneNumber + "\n");

<%%KEEPWHITESPACE%%> String parts[] = message.split(" ");
<%%KEEPWHITESPACE%%> String cc = parts[1];
<%%KEEPWHITESPACE%%> String ReplyMsg = "";

<%%KEEPWHITESPACE%%> System.out.println("\nThe Celcius Temp. Recieved : " + cc);

<%%KEEPWHITESPACE%%> double c = Double.parseDouble(cc);
<%%KEEPWHITESPACE%%> double f = (9 / 5 * c) + 32; //Tf = (9/5)*Tc+32
<%%KEEPWHITESPACE%%> String ff = f + "";

<%%KEEPWHITESPACE%%> System.out.println("\nCelcius : " + cc + " = Farenhite : " + ff);
<%%KEEPWHITESPACE%%> ReplyMsg = "Celcius : " + cc + " = Farenhite : " + ff;

<%%KEEPWHITESPACE%%> SendReply(ReplyMsg, phoneNumber);
<%%KEEPWHITESPACE%%> }

<%%KEEPWHITESPACE%%> protected void SendReply(String ReplyMsg, String phoneNumber) {

<%%KEEPWHITESPACE%%> try {
<%%KEEPWHITESPACE%%> MchoiceSdpSmsSender sender =
<%%KEEPWHITESPACE%%> new MchoiceSdpSmsSender(new URL("http://127.0.0.1:65182/service"), "appID", "password");
<%%KEEPWHITESPACE%%> System.out.println("\nSending Reply : [" + ReplyMsg + " ] | To Number : " + phoneNumber + "\n\n***Log***");
<%%KEEPWHITESPACE%%> MchoiceSdpResponse mchoiceSdpResponse = sender.sendMessage(ReplyMsg, phoneNumber);
<%%KEEPWHITESPACE%%> System.out.println("***Message Sent***\n");

<%%KEEPWHITESPACE%%> } catch (Throwable th) {
<%%KEEPWHITESPACE%%> th.printStackTrace();
<%%KEEPWHITESPACE%%> }
<%%KEEPWHITESPACE%%> }
}

<%%KEEPWHITESPACE%%> [/sourcecode]


හරි.....ඔක්කොම හරි....දැන් ඔගොල්ලන්ට පෙන්නන්න ගනීවි රතු පාටින් Errors වගයක්..ඒ මොකද දන්නවද?? මේ කෝඩින් වැඩේ ලේසි කරන්න hSenid එකේ අයියලා හදලා තියෙනවා පොඩි API එකක්.
import hsenidmobile.sdp.rest.servletbase.MchoiceSdpResponse; කියලා තියෙන්නෙ අන්න ඒවා තමයි. අපි දැන් ඒවා අපේ project එකට import කරගනිමු. ඒක කරන්නෙ මෙහෙමයි.
මුලින්ම මම අර බා ගන්න කියපු java Sample application එක මතක ඇති.අන්න ඒක C: drive එකට extract කර ගන්නකෝ.. ඊට පස්සේ ආයි යන්න Netbeans ඇතුලට.
ගිහින් TestApp කියන එක ඇතුලෙ ඇති Libraries කියලා Folder එකක්.අන්න ඒ folder එක right click කරලා Add JAR/FOLDER කියන එක ක්ලික් කරන්න.ඊට පස්සේ එන මෙනුවෙන් අර C: වල දාපු Java Sample folder එක හොයා ගන්න.
C:\sample-applications\rest-sample-sms-mt-application-1.0\lib ඔන්න ඔතනට ඇවිත් බලන්න.JAR files ගොඩාක් දැකගන්න ලැබෙයි ඔයාලට..ඊට පස්සෙ මේ ඔක්කොම Select All කරලා Add කරගන්න..ඊට පස්සෙ ටක් ගාල අර රතු පාට වෙච්ච ඒවා මැකිලා යයි.

දැන් වැඩේ ගොඩ..තව පොඩි කේක් එකක් තිනවා කරන්න.
ආයි යන්න Netbeans එකට.ගිහින් එකෙ TestApp project එකේ ඇති Web pages කියලා ෆොල්ඩර් එකක් එකෙ ඇතුලෙ ඇති WEB-INF කියලා තවත් folder එකක්..අන්න ඒකටත් යන්න.එකෙ ඇතු තියෙනවා web.xml කියලා file එකක්..අන්න ඒ file එක right click කරලා edit එක ඔබන්න..අන්න දැන් ඔයාලට මතුවෙයි පොඩි XML කෝඩ් එකක්..

[sourcecode language="xml"]

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<%%KEEPWHITESPACE%%> <servlet>
<%%KEEPWHITESPACE%%> <servlet-name>Test1</servlet-name>
<%%KEEPWHITESPACE%%> <servlet-class>Test1</servlet-class>
<%%KEEPWHITESPACE%%> </servlet>
<%%KEEPWHITESPACE%%> <servlet-mapping>
<%%KEEPWHITESPACE%%> <servlet-name>Test1</servlet-name>
<%%KEEPWHITESPACE%%> <url-pattern>/Test1</url-pattern>
<%%KEEPWHITESPACE%%> </servlet-mapping>
<%%KEEPWHITESPACE%%> <session-config>
<%%KEEPWHITESPACE%%> <session-timeout>
<%%KEEPWHITESPACE%%> 30
<%%KEEPWHITESPACE%%> </session-timeout>
<%%KEEPWHITESPACE%%> </session-config>
<%%KEEPWHITESPACE%%> <welcome-file-list>
<%%KEEPWHITESPACE%%> <welcome-file>index.jsp</welcome-file>
<%%KEEPWHITESPACE%%> </welcome-file-list>
</web-app>

<%%KEEPWHITESPACE%%> [/sourcecode]


ඔය ගොල්ලො Test1 කියලා නම් ඇප් එක හැදුවෙ මෙන්න මේ වගේ කෝඩ් එකක් එයි.ඒකෙ එක ලයින් එහෙක පොඩි වෙනසක් කරන්න තියෙනවා.
<url-pattern>/Test1</url-pattern> කියන ලයින් විතරයි වෙනස් කරන්නේ...
ඒ ලයින් එකේ Test1 කියන කෑල්ල මකලා * ලකුණ replace කරන්න. අවසානයේ ඒ පේලිය දිස්විය යුත්තේ මෙහෙමයි. <url-pattern>/*</url-pattern>

හරි දැන් අපේ ඇප් එක ගොඩ..දැන් තියෙන්නෙ මේක test කරලා බලන්න.. :)

Test කරන්නෙ මෙහෙමයි.මුලින්ම මම් අර බා ගන්න කියපු SDP Simulator එක මතක ඇති..අන්න ඒක හොයා ගන්න.ඒක C: එකට දා ගත්තනම් ලේසී..
C:\sdpsimulator-1.1.0\bin\startup-aventura-simulator.bat දැන් ඔන්න ඔය batch file එක run කරන්න.(අපි latest JDK 6.0.21 එක දා ගත්තෙ ඔන්න ඔය batch file එකට ඕනි නිසා තමයි..)

හරි දැන් Netbeans එකට ගිහින් Project එක Clean & Build පාරක් දාලා Run කරන්න...එලකිරි වගේ ඔන්න දැන් ඔයාගෙ වෙබ් බ්‍රව්සරේ Load වේවි.. :) Mozilla නම් වැඩේ ගොඩක් ලේසී.අනෙක් ඒවත් අවුලක් නෑ.. :)

දැන් ඔයාගෙ web browser එකේ load වෙයි page එකක්.එන්න ඕනි මෙන්න මේ වගේ මැසේජ් එකක්..405 කියලා error එකක් ආව නම් හරියට හරි..

අපිට ඔය ආපු එක ඕනි වෙන්නෙ ප්‍රොග්‍රැම් එක හරියට compile වුනාද කියලා බලා ගන්න විතරයි. දැන් ඒක වැඩක් නෑ..ඒක අයින් කරලා දාන්න.අලුතින් page එකක් ගන්න. ඒකෙ මේ address එක ටයිප් කරලා ලෝඩ් කරගන්න.http://127.0.0.1:8081/mosim

හරි දැන් අපේ Simulator එක load වෙයි.

අපේ Virtual Mobile Phone එක තමයි මේ වෙබ් පේජ් එක...

දැන් එකෙ phone no එකට කැමති අංකයක් දෙන්න.ඒක තමයි අපි SMS එක යවන phone number එක.

MO- URL එකට දෙන්න මේක. http://localhost:8084/TestApp/

මැසේජ් එකට මෙහෙම කොටන්න. අපේ ඇප් එක මතක ඇතිනේ.සෙල්සියස් ඉදන් ෆැරන්හයිට් වලට පෙරලන ඇප් එකක්නෙ. හරි දැන් ඉතින් අපේ ඇප් එකට මැසේජ් එවන්න ඕනි විධියක් තියෙනවා.ඒ තමයි. c2f<හිස් තැනක්><සෙල්සියස් අගය> ඔන්න ඔය ක්‍රමේට මැසේජ් එකක් ගහන්න. උදාහරණයක් විදියට මෙහෙම.. c2f 27.8

හරි දැන් වැඩේ ගොඩ.දැන් අපි මැසේජ් එක sent කරමු submit බටන් එක ඔබලා.මතක තියා ගන්න ඕනි දෙයක් තියෙනවා අපි හැම දෙයක්ම කරන අතුරතුර අර Batch file එක open වෙලා තියෙන්න ඕනි.මෙන්න මේ ෆයිල් එක...C:\sdpsimulator-1.1.0\bin\startup-aventura-simulator.bat නැත්නම් අනිවා errors එනවා ... :|

හරි දැන් මැසේජ් එක හරියට සෙන්ඩ් උනා නම් MO-Response Information කියන කොටුව ඇතුලෙ මෙන්න මේ වගේ මැසේජ් එකක් එයි..."MO Message Request Sent Successfully............."

හරි දැන් වැඩේ ගොඩ...පටස් ගාල Netbeans එකට ගිහින් යට තියෙන Output panel එක බලන්න. ඒකෙ ඇති ටැබ් කීපයක්. එකක් තමා Apache Tomcat Log,Apache Tomcat, TestApp(run) . ඔන්න ඕකෙ Apache Tomcat 6.0 කියන ටැබ් එකට ගිහින් බලන්න.එතකොට ඒකෙ ඔගොල්ලන්ට බලා ගන්න පුලුවන් වෙයි. මෙන්න මේ වගේ LOG එකක්..
***Message Recieved***
Message : 23 23 | From Number : 2312323

The Celcius Temp. Recieved : 23

Celcius : 23 = Farenhite : 55.0

Sending Reply : [Celcius : 23 = Farenhite : 55.0 ] | To Number : 2312323

***Log***
Response received from sdp [<mchoice_sdp_sms_response>
<version>1.0</version>
<correlator>10112811190001</correlator>
<status_code>SBL-SMS-MT-2000</status_code>
<status_message>SUCCESS</status_message>
</mchoice_sdp_sms_response>
]
***Message Sent***

ඔන්න ඕක ආව නම් වැඩේ සිරාවටම ගොඩ....එලකිරි....!!!! :) :)

දැන් ඔය මැසේජ් එකේ තියෙන්නෙ අපි හදපු ඇප්ලිකේශන් එකෙන් generate කරපු reply එක.

ඔය reply මැසේජ් එක පරිස්සමින් කියෙව්වොත් ඔයාලට තේරෙයි. මොකක්ද සීන් එක කියලා.ඇප් එකට මැසේජ් එකක් ආවා..ඌ ඒක process කරා ඊට පස්සේ අදාල reply එක ජෙනරේට් කරලා එවපු එකාටම ආපහු යැවුවා..ඔන්න ඕකයි සීන් එක. :)

හරි දැන් අපේ ඇපිලිකේශන් එක Virtual Environment එකේ හොදට වැඩ. දැන් අපිට මේක Live Environment එකේ එහෙම නැත්නම් Etsalat Network එකේ වැඩ කරන්න ඕනි නම් කරන්න පොඩි වැඩ ටිකක් තියෙනවා..එ ගැන පස්සෙ කියන්නම්කෝ....

දැන් ඉතිං ඔගොල්ලන්ට ඇප් එක සම්බන්ධ සියලුම දේවල් කියා දීල තියෙන්නෙ...ඕනිම මගුලක් හදන්න මේ පොඩි දැනුම හොදටම ප්‍රමානවත්..හරි දැන් ඉතිං ඕනි Ideas තමයි...කට්ටිය වැඩේට සෙට් වෙන්න එහෙනම්, සපෝට් එකක් ඕනි නම් මට කියන්න...එලකිරි.. එහෙනම් මම ගියා...බුදු සරණයි..!!

ප්‍රතිපෝෂණ ඇත්නම්, :)

-Harsha
harshato@gmail.com

_______________________________________

For more Info Refer these Sites :

http://www.appzone.lk/

http://apps.appzone.lk/

Facebook Community page

hSenid Appzone Forums

import hsenidmobile.sdp.rest.servletbase.MchoiceSdpResponse;
import hsenidmobile.sdp.rest.servletbase.MchoiceSdpSmsMessage;
import hsenidmobile.sdp.rest.servletbase.MchoiceSdpSmsMoServlet;
import hsenidmobile.sdp.rest.servletbase.MchoiceSdpSmsSender;
import java.net.URL;public class Test1 extends MchoiceSdpSmsMoServlet {

@Override
@SuppressWarnings({"static-access", "empty-statement"})
protected void onMessage(MchoiceSdpSmsMessage sms) {

String phoneNumber = sms.getAddress();
String message = sms.getMessage();

System.out.println("\n***Message Recieved***");
System.out.println("Message : " + message + " | From Number : " + phoneNumber + "\n");

String parts[] = message.split(" ");
String cc = parts[1];
String ReplyMsg = "";

System.out.println("\nThe Celcius Temp. Recieved : " + cc);

double c = Double.parseDouble(cc);
double f = (9 / 5 * c) + 32; //Tf = (9/5)*Tc+32
String ff = f + "";

System.out.println("\nCelcius : " + cc + " = Farenhite : " + ff);
ReplyMsg = "Celcius : " + cc + " = Farenhite : " + ff;

SendReply(ReplyMsg, phoneNumber);
}

protected void SendReply(String ReplyMsg, String phoneNumber) {

try {
MchoiceSdpSmsSender sender =
new MchoiceSdpSmsSender(new URL("http://127.0.0.1:65182/service"), "appID", "password");
System.out.println("\nSending Reply : [" + ReplyMsg + " ] | To Number : " + phoneNumber + "\n\n***Log***");
MchoiceSdpResponse mchoiceSdpResponse = sender.sendMessage(ReplyMsg, phoneNumber);
System.out.println("***Message Sent***\n");

} catch (Throwable th) {
th.printStackTrace();
}
}
}

"QuickMath" my 1st Telco App for Appzone, SicoLove Calc written in C++ :) and few other Random Algo stuff

LATEST CODINGS

Added 14 Oct 2010
"Quick Math" My First SDP Mobile Application

heheheh....in da rush of finals..grrrrrrr..Duras first Industry standard mobile Application...yeah nw its working properly through Etisalate Network..No grabbing credits in dis Testings period..its 100% Free!!!
So friends dont hesitate..jst do a try!!!! >> ex: qm sqrt 4 >> 4499
thanx for testing...Refer da link for further info...
Read More

FACEBOOK Community Page : Join




 

                      Added 25 Sep 2010
My 1st Java ME : Hello World Project

yeah...its very very simple..cant believe...ya its working banzz

__________________

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class Hello extends MIDlet
{
   public Hello() {}
   public void pauseApp() {}
   public void destroyApp(boolean ignore) {}
   public void startApp()
   {
      Display.getDisplay(this).setCurrent(
         new TextBox("Hello", "The End", 9, 0));
   }
}

Added 13 Sep 2010
SICO LOVE CALCULATOR 1.0



[ Sico Preview :) ]
/*
(c) Dura Solutions. 13 Sep 2010

Sico Love Calculator 1.0  :)

Note :
hahahh..spending boring days..
just did dis for fun..
pls i beg your pardon if you have
any problems with those calculations..lol
few Pre-defined couple sets feeded to code.:D
so no harm done.calc 4 them is differ frm others..:)

Thanx a lot for Navodth Banuka for the idea.
Guys i need new ideas for programming..pls help me out.
thanx..elazzz....tc
*/

//_________Driver Class_____________

import java.util.Scanner;
class DriverDura{
    public static void main(String[]args){
    Scanner in=new Scanner(System.in);
  
    System.out.println("\n\n______________________________");
    System.out.println("\nSICO LOVE CALCULATOR 1.0");
    System.out.println("\tDura Solutions");
    System.out.println("______________________________\n\n");
      
    System.out.print("Enter the Boy's Name : ");
    String b=in.nextLine();
  
    System.out.print("\nEnter the Girl's Name : ");
    String g=in.nextLine();
  
    Algo A1=new Algo(b);
    int bv=A1.Calc();

    Algo A2=new Algo(g);
    int gv=A2.Calc();
  
    double iluv=(bv/(double)gv)*100;
  
    if(iluv>100){
        iluv=iluv/10;
        if(iluv>100) iluv=iluv/10;
    }
  
    // Pre-defined sliit couples...Im very sorry if i missed any couple..lol
  
    b=b.toLowerCase();g=g.toLowerCase();
  
    if (b.equals("madusha")    && g.equals("navodya")) iluv=100;
    if (b.equals("udesh")    && g.equals("geethika")) iluv=100;
    if (b.equals("kulitha")    && g.equals("janani")) iluv=100;
    if (b.equals("hansaja")    && g.equals("nirushi")) iluv=100;
    if (b.equals("dilshan")    && g.equals("udeshi" )) iluv=100;
      
    System.out.println("\n\nhahah...\nLove Calc of "+b+" and "+g+" is = "+(int)iluv);
  
    if(iluv>50)
    System.out.println("\nits Ok puthala..karan yan ohoma..:)\n");
    if(iluv<50)
    System.out.println("\naiiooo....puthala oya wade nam hariyanne na..:(\n");
    if(iluv==100)
    System.out.println("\noyala nam perfect aaah..:D\n");

    }
}

_________Algorithm Class_____________

class Algo{
String name;
   
public Algo(String na)
{
name=na;
}

public Algo()
{
name="";
}

public int Calc()
{
    int l=name.length();
    int v,tot=0;
   
    name=name.toLowerCase();
   
    for(int i=0;i<l;i++){
       
        char x=name.charAt(i);
   
        switch (x){
        case 'a' : v=1;break;
        case 'b' : v=2;break;
        case 'c' : v=3;break;
        case 'd' : v=4;break;
        case 'e' : v=5;break;
        case 'f' : v=6;break;
        case 'g' : v=7;break;
        case 'h' : v=8;break;
        case 'i' : v=9;break;
        case 'j' : v=10;break;
        case 'k' : v=11;break;
        case 'l' : v=12;break;
        case 'm' : v=13;break;
        case 'n' : v=14;break;
        case 'o' : v=15;break;
        case 'p' : v=16;break;
        case 'q' : v=17;break;
        case 'r' : v=18;break;
        case 's' : v=19;break;
        case 't' : v=20;break;
        case 'u' : v=21;break;
        case 'v' : v=22;break;
        case 'w' : v=23;break;
        case 'x' : v=24;break;
        case 'y' : v=25;break;
        case 'z' : v=26;break;
        default  : v=10;break;   
        }
   
    tot=tot+v;
    }
   
return tot;
}

}



Added 12 Sep 2010

C++ Coding Challenge @ Elakiri.com

Getting all the Partitions of any given Number (Note: contain repetition problem)

1.A partition of a positive integer n is a sequence of positive integers that sum to n. Implement the algorithm (in C) to print all non-increasing partitions of n.
eg. If n=4
4
3 1
2 2
2 1 1
1 1 1 1

Duras Solution.. :)

#include<iostream>
using namespace std;

int main(){

int x;
Begin:
cout<<"\n\nEnter a No : ";
cin>>x;

cout<<endl<<x<<endl;

int i,j,k,m;

for(i=x;i>0;i--){
    for(j=1;j<x;j++){

        if((i+j)==x)
        {
        cout<<i<<" "<<j<<endl;

        for(k=2;k<j;k++){
        for(m=j;m>0;m--){
        if((k+m)==j)
        cout<<i<<" "<<k<<" "<<m<<endl;
        }
        }

        if(j>1){
        cout<<i<<" ";
        for(k=0;k<j;k++) cout<<"1 ";
        cout<<endl; }

        }

    }
}

goto Begin;

} 

 

Tuck Tik Took (Version 2.0) Released. [More Powerful nw]

by Harsha සංජීව Siriwardena on Saturday, June 19, 2010 at 6:29pm

/*
All Rights Reserved.
Copyright(c) 2010 June 18
dURA Solutions.

Tuck Tik Took (Version 2.0)

Note :
Updated Version.Thanx Navodth Bhanuka,Dr.PHP and Pera 4 da ideas
May be the program looks crazy now.(with da effects of timers)
Now dURA can Offend and Defend :)
Consist with most of move lists.

TTT game have atleast 3!x8=3x2x1x8=48 Combinations in total.may be Even more.
still im trying to program all da moves lists and powerful da coding..
*/

#include<iostream>
#include <time.h>
#include <stdlib.h>

using namespace std;

int Check(char Ar[3][3]);
int checkLoss(char Ar[3][3]);
int checkAggMove(char Ar[3][3]);
void Wait(int seconds);
void Progress();
void ShowBoard(char Ar[3][3]);
void ComsMove(char Ar[3][3]);
void PlayerMove(char Ar[3][3]);
void RandomMove(char Ar[3][3]);
void AShowBoard(char Ar[3][3]);

int main()
{
Start:
cout<<"===================================\n";
cout<<" << Tuck Tik Took >> \n";
cout<<" [Version 2.0] \n";
cout<<"-----------------------------------\n";
cout<<" dURA(R) Solutions(C) 2010 June \n";
cout<<"===================================\n\n";
cout<<" dURA-O | Player-X\n\n";

char y;
char Ar[3][3]={'1','2','3','4','5','6','7','8','9'};

ShowBoard(Ar);

Begin:
int x=0;

//Players Move Functions
if (!(Ar[0][0]=='1' || Ar[0][1]=='2' || Ar[0][2]=='3' || Ar[1][0]=='4' || Ar[1][1]=='5' || Ar[1][2]=='6' || Ar[2][0]=='7' || Ar[2][1]=='8' || Ar[2][2]=='9'))
{cout<<"\nMatch Ends Up in a Draw !!!\n";
goto Last;}

PlayerMove(Ar);
cout<<"\n\n----- Players Move -------\n\n";
ShowBoard(Ar);

x=Check(Ar);
if(x==1 || x==2)
goto Last;

if (!(Ar[0][0]=='1' || Ar[0][1]=='2' || Ar[0][2]=='3' || Ar[1][0]=='4' || Ar[1][1]=='5' || Ar[1][2]=='6' || Ar[2][0]=='7' || Ar[2][1]=='8' || Ar[2][2]=='9'))
{cout<<"\nMatch Ends Up in a Draw !!!\n";
goto Last;}

Progress();

//Coms Move Functions
ComsMove(Ar);
cout<<"------- dURAs Move -------\n\n";
AShowBoard(Ar);
x=Check(Ar);
if(x==1 || x==2)
goto Last;

goto Begin;

Last:
cout<<"\n\nGame Over !! \n";
cout<<"\n\nDo Want to Play Again (y/n) : ";
cin>>y;
if(y=='y')
{system("cls");goto Start;}
else
return 0;
}

int Check(char Ar[3][3])
{
int x=0;

if (Ar[0][0]=='X' && Ar[0][1]=='X' && Ar[0][2]=='X') x=1;
if (Ar[1][0]=='X' && Ar[1][1]=='X' && Ar[1][2]=='X') x=1;
if (Ar[2][0]=='X' && Ar[2][1]=='X' && Ar[2][2]=='X') x=1;
if (Ar[0][0]=='X' && Ar[1][0]=='X' && Ar[2][0]=='X') x=1;
if (Ar[0][1]=='X' && Ar[1][1]=='X' && Ar[2][1]=='X') x=1;
if (Ar[0][2]=='X' && Ar[1][2]=='X' && Ar[2][2]=='X') x=1;
if (Ar[0][0]=='X' && Ar[1][1]=='X' && Ar[2][2]=='X') x=1;
if (Ar[2][0]=='X' && Ar[1][1]=='X' && Ar[0][2]=='X') x=1;

if (Ar[0][0]=='O' && Ar[0][1]=='O' && Ar[0][2]=='O') x=2;
if (Ar[1][0]=='O' && Ar[1][1]=='O' && Ar[1][2]=='O') x=2;
if (Ar[2][0]=='O' && Ar[2][1]=='O' && Ar[2][2]=='O') x=2;
if (Ar[0][0]=='O' && Ar[1][0]=='O' && Ar[2][0]=='O') x=2;
if (Ar[0][1]=='O' && Ar[1][1]=='O' && Ar[2][1]=='O') x=2;
if (Ar[0][2]=='O' && Ar[1][2]=='O' && Ar[2][2]=='O') x=2;
if (Ar[0][0]=='O' && Ar[1][1]=='O' && Ar[2][2]=='O') x=2;
if (Ar[2][0]=='O' && Ar[1][1]=='O' && Ar[0][2]=='O') x=2;

if(x==1)
cout<<"\n\nPlayer Wins the Game!!! \n";
else if(x==2)
cout<<"\n\ndURA Wins the Game!!! \n";

return x;
}

void RandomMove(char Ar[3][3])
{int i,j;

if(Ar[1][1]=='5')
{Ar[1][1]='O';
goto last;}

for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
if (Ar[i][j]=='1' || Ar[i][j]=='2' || Ar[i][j]=='3' || Ar[i][j]=='4' || Ar[i][j]=='5' || Ar[i][j]=='6' || Ar[i][j]=='7' || Ar[i][j]=='8' || Ar[i][j]=='9')
{Ar[i][j]='O';
goto last;}
}
}
last:
cout<<"";
}

void Progress()
{
cout<<"\n\dURA is Thinking... ";
for(int i=0;i<5;i++)
{cout<<">";
Wait(1);}
cout<<"\n\nOK!! Friend";
Wait(1);
cout<<"\ndURA got the Point..!!\n";
Wait(2);
}

void ComsMove(char Ar[3][3])
{
int Ans;

Ans=checkAggMove(Ar);
if (Ans==1)
goto skip;

Ans=checkLoss(Ar);
if (Ans==1)
goto skip;

RandomMove(Ar);

skip:
cout<<"\n";
}

void Wait(int seconds)
{//BTW I dont know WTF Process :(
clock_t endwait;
endwait = clock () + seconds * CLK_TCK ;
while (clock() < endwait) {}
}

int checkAggMove(char Ar[3][3])
{
int Flag=0;

if (Ar[0][0]=='O' && Ar[1][0]=='O' && Ar[2][0]=='7') {Ar[2][0]='O';Flag=1;goto last;}
if (Ar[0][0]=='O' && Ar[2][0]=='O' && Ar[1][0]=='4') {Ar[1][0]='O';Flag=1;goto last;}
if (Ar[1][0]=='O' && Ar[2][0]=='O' && Ar[0][0]=='1') {Ar[2][0]='O';Flag=1;goto last;}

if (Ar[0][1]=='O' && Ar[1][1]=='O' && Ar[2][1]=='8') {Ar[2][1]='O';Flag=1;goto last;}
if (Ar[0][0]=='O' && Ar[2][1]=='O' && Ar[1][1]=='5') {Ar[1][1]='O';Flag=1;goto last;}
if (Ar[1][1]=='O' && Ar[2][1]=='O' && Ar[0][1]=='2') {Ar[0][1]='O';Flag=1;goto last;}

if (Ar[0][2]=='O' && Ar[1][2]=='O' && Ar[2][2]=='9') {Ar[2][2]='O';Flag=1;goto last;}
if (Ar[0][2]=='O' && Ar[2][2]=='O' && Ar[1][2]=='6') {Ar[1][2]='O';Flag=1;goto last;}
if (Ar[1][2]=='O' && Ar[2][2]=='O' && Ar[0][2]=='3') {Ar[0][2]='O';Flag=1;goto last;}

//Columns
if (Ar[0][0]=='O' && Ar[0][1]=='O' && Ar[0][2]=='3') {Ar[0][2]='O';Flag=1;goto last;}
if (Ar[0][0]=='O' && Ar[0][2]=='O' && Ar[0][1]=='2') {Ar[0][1]='O';Flag=1;goto last;}
if (Ar[0][1]=='O' && Ar[0][2]=='O' && Ar[0][0]=='1') {Ar[0][0]='O';Flag=1;goto last;}

if (Ar[1][0]=='O' && Ar[1][1]=='O' && Ar[1][2]=='6') {Ar[1][2]='O';Flag=1;goto last;}
if (Ar[1][0]=='O' && Ar[1][2]=='O' && Ar[1][1]=='5') {Ar[1][1]='O';Flag=1;goto last;}
if (Ar[1][1]=='O' && Ar[1][2]=='O' && Ar[1][0]=='4') {Ar[1][0]='O';Flag=1;goto last;}

if (Ar[2][0]=='O' && Ar[2][1]=='O' && Ar[2][2]=='9') {Ar[2][2]='O';Flag=1;goto last;}
if (Ar[2][0]=='O' && Ar[2][2]=='O' && Ar[2][1]=='8') {Ar[2][1]='O';Flag=1;goto last;}
if (Ar[2][1]=='O' && Ar[2][2]=='O' && Ar[2][0]=='7') {Ar[2][0]='O';Flag=1;goto last;}

//Axels
if (Ar[0][0]=='O' && Ar[1][1]=='O' && Ar[2][2]=='9') {Ar[2][2]='O';Flag=1;goto last;}
if (Ar[0][0]=='O' && Ar[2][2]=='O' && Ar[1][1]=='5') {Ar[1][1]='O';Flag=1;goto last;}
if (Ar[1][1]=='O' && Ar[2][2]=='O' && Ar[0][0]=='1') {Ar[0][0]='O';Flag=1;goto last;}

if (Ar[0][2]=='O' && Ar[1][1]=='O' && Ar[2][0]=='7') {Ar[2][0]='O';Flag=1;goto last;}
if (Ar[0][2]=='O' && Ar[2][0]=='O' && Ar[1][1]=='5') {Ar[1][1]='O';Flag=1;goto last;}
if (Ar[2][0]=='O' && Ar[1][1]=='O' && Ar[0][2]=='3') {Ar[0][2]='O';Flag=1;goto last;}

last:
return Flag;
}

int checkLoss(char Ar[3][3])
{
int Flag=0;
//Duras Combinations Of TTT

if(Ar[1][1]=='5')
{Ar[1][1]='O';Flag=1;goto last;}

//Rows
if (Ar[0][0]=='X' && Ar[1][0]=='X' && Ar[2][0]=='7') {Ar[2][0]='O';Flag=1;goto last;}
if (Ar[0][0]=='X' && Ar[2][0]=='X' && Ar[1][0]=='4') {Ar[1][0]='O';Flag=1;goto last;}
if (Ar[1][0]=='X' && Ar[2][0]=='X' && Ar[0][0]=='1') {Ar[2][0]='O';Flag=1;goto last;}

if (Ar[0][1]=='X' && Ar[1][1]=='X' && Ar[2][1]=='8') {Ar[2][1]='O';Flag=1;goto last;}
if (Ar[0][0]=='X' && Ar[2][1]=='X' && Ar[1][1]=='5') {Ar[1][1]='O';Flag=1;goto last;}
if (Ar[1][1]=='X' && Ar[2][1]=='X' && Ar[0][1]=='2') {Ar[0][1]='O';Flag=1;goto last;}

if (Ar[0][2]=='X' && Ar[1][2]=='X' && Ar[2][2]=='9') {Ar[2][2]='O';Flag=1;goto last;}
if (Ar[0][2]=='X' && Ar[2][2]=='X' && Ar[1][2]=='6') {Ar[1][2]='O';Flag=1;goto last;}
if (Ar[1][2]=='X' && Ar[2][2]=='X' && Ar[0][2]=='3') {Ar[0][2]='O';Flag=1;goto last;}

//Columns
if (Ar[0][0]=='X' && Ar[0][1]=='X' && Ar[0][2]=='3') {Ar[0][2]='O';Flag=1;goto last;}
if (Ar[0][0]=='X' && Ar[0][2]=='X' && Ar[0][1]=='2') {Ar[0][1]='O';Flag=1;goto last;}
if (Ar[0][1]=='X' && Ar[0][2]=='X' && Ar[0][0]=='1') {Ar[0][0]='O';Flag=1;goto last;}

if (Ar[1][0]=='X' && Ar[1][1]=='X' && Ar[1][2]=='6') {Ar[1][2]='O';Flag=1;goto last;}
if (Ar[1][0]=='X' && Ar[1][2]=='X' && Ar[1][1]=='5') {Ar[1][1]='O';Flag=1;goto last;}
if (Ar[1][1]=='X' && Ar[1][2]=='X' && Ar[1][0]=='4') {Ar[1][0]='O';Flag=1;goto last;}

if (Ar[2][0]=='X' && Ar[2][1]=='X' && Ar[2][2]=='9') {Ar[2][2]='O';Flag=1;goto last;}
if (Ar[2][0]=='X' && Ar[2][2]=='X' && Ar[2][1]=='8') {Ar[2][1]='O';Flag=1;goto last;}
if (Ar[2][1]=='X' && Ar[2][2]=='X' && Ar[2][0]=='7') {Ar[2][0]='O';Flag=1;goto last;}

//Axels
if (Ar[0][0]=='X' && Ar[1][1]=='X' && Ar[2][2]=='9') {Ar[2][2]='O';Flag=1;goto last;}
if (Ar[0][0]=='X' && Ar[2][2]=='X' && Ar[1][1]=='5') {Ar[1][1]='O';Flag=1;goto last;}
if (Ar[1][1]=='X' && Ar[2][2]=='X' && Ar[0][0]=='1') {Ar[0][0]='O';Flag=1;goto last;}

if (Ar[0][2]=='X' && Ar[1][1]=='X' && Ar[2][0]=='7') {Ar[2][0]='O';Flag=1;goto last;}
if (Ar[0][2]=='X' && Ar[2][0]=='X' && Ar[1][1]=='5') {Ar[1][1]='O';Flag=1;goto last;}
if (Ar[2][0]=='X' && Ar[1][1]=='X' && Ar[0][2]=='3') {Ar[0][2]='O';Flag=1;goto last;}

//checkUpsetMoves

//Salutes 4 Navodth Bhanuka.... :)
if (Ar[0][0]=='X' && Ar[2][2]=='X' && Ar[2][0]=='7') {Ar[2][0]='O';Flag=1;goto last;}
if (Ar[0][0]=='X' && Ar[2][2]=='X' && Ar[0][2]=='3') {Ar[0][2]='O';Flag=1;goto last;}

if (Ar[2][0]=='X' && Ar[0][2]=='X' && Ar[0][0]=='1') {Ar[0][0]='O';Flag=1;goto last;}
if (Ar[2][0]=='X' && Ar[0][2]=='X' && Ar[2][2]=='9') {Ar[2][2]='O';Flag=1;goto last;}

if (Ar[0][0]=='X' && Ar[0][2]=='3') {Ar[0][2]='O';Flag=1;goto last;}
if (Ar[0][0]=='X' && Ar[2][0]=='7') {Ar[2][0]='O';Flag=1;goto last;}
if (Ar[2][2]=='X' && Ar[0][2]=='3') {Ar[0][2]='O';Flag=1;goto last;}
if (Ar[2][2]=='X' && Ar[2][0]=='7') {Ar[2][0]='O';Flag=1;goto last;}

if (Ar[0][2]=='X' && Ar[0][0]=='1') {Ar[0][0]='O';Flag=1;goto last;}
if (Ar[0][2]=='X' && Ar[2][2]=='9') {Ar[2][2]='O';Flag=1;goto last;}
if (Ar[2][0]=='X' && Ar[0][0]=='1') {Ar[0][0]='O';Flag=1;goto last;}
if (Ar[2][0]=='X' && Ar[2][2]=='9') {Ar[2][2]='O';Flag=1;goto last;}

/////////////////////

if (Ar[0][0]=='O' && Ar[2][2]=='9') {Ar[2][2]='O';Flag=1;goto last;}
if (Ar[0][2]=='O' && Ar[2][0]=='7') {Ar[2][0]='O';Flag=1;goto last;}
if (Ar[2][0]=='O' && Ar[0][2]=='3') {Ar[0][2]='O';Flag=1;goto last;}
if (Ar[2][2]=='O' && Ar[0][0]=='1') {Ar[0][0]='O';Flag=1;goto last;}

/*
00 01 02 | 1 2 3
10 11 12 | 4 5 6
20 21 22 | 7 8 9
*/

if (Ar[0][0]=='X' && Ar[2][2]=='X' && Ar[2][1]=='8') {Ar[2][1]='O';Flag=1;goto last;}
if (Ar[0][0]=='X' && Ar[2][2]=='X' && Ar[0][1]=='2') {Ar[0][1]='O';Flag=1;goto last;}
if (Ar[0][0]=='X' && Ar[2][2]=='X' && Ar[1][0]=='4') {Ar[1][0]='O';Flag=1;goto last;}
if (Ar[0][0]=='X' && Ar[2][2]=='X' && Ar[1][2]=='6') {Ar[1][0]='O';Flag=1;goto last;}

if (Ar[2][0]=='O' && Ar[0][2]=='O' && Ar[2][2]=='9') {Ar[2][2]='O';Flag=1;goto last;}
if (Ar[2][0]=='O' && Ar[0][2]=='O' && Ar[0][0]=='1') {Ar[0][0]='O';Flag=1;goto last;}

// ............

last:
return Flag;
}

void AShowBoard(char Ar[3][3])
{
cout<<"-------------\n";Wait(1);
cout<<"| "<<Ar[0][0]<<" | "<<Ar[0][1]<<" | "<<Ar[0][2]<<" |\n";Wait(1);
cout<<"-------------\n";Wait(1);
cout<<"| "<<Ar[1][0]<<" | "<<Ar[1][1]<<" | "<<Ar[1][2]<<" |\n";Wait(1);
cout<<"-------------\n";Wait(1);
cout<<"| "<<Ar[2][0]<<" | "<<Ar[2][1]<<" | "<<Ar[2][2]<<" |\n";Wait(1);
cout<<"-------------\n";Wait(1);
}

void ShowBoard(char Ar[3][3])
{
cout<<"-------------\n";
cout<<"| "<<Ar[0][0]<<" | "<<Ar[0][1]<<" | "<<Ar[0][2]<<" |\n";
cout<<"-------------\n";
cout<<"| "<<Ar[1][0]<<" | "<<Ar[1][1]<<" | "<<Ar[1][2]<<" |\n";
cout<<"-------------\n";
cout<<"| "<<Ar[2][0]<<" | "<<Ar[2][1]<<" | "<<Ar[2][2]<<" |\n";
cout<<"-------------\n";
}

void PlayerMove(char Ar[3][3])
{
int r,c;
int move;

begin:
cout<<"\nPlayers Turn,\nEnter the Position : ";
cin>>move;

switch (move)
{
case 1 : r=0;c=0;break;
case 2 : r=0;c=1;break;
case 3 : r=0;c=2;break;
case 4 : r=1;c=0;break;
case 5 : r=1;c=1;break;
case 6 : r=1;c=2;break;
case 7 : r=2;c=0;break;
case 8 : r=2;c=1;break;
case 9 : r=2;c=2;break;
default : cout<<"\nIllegal move!!!\n";goto begin;break;
}

if (Ar[r][c]=='O' || Ar[r][c]=='X')
{cout<<"Illegal move,This Position is Reserved !!!!\n";
goto begin;}
else
Ar[r][c]='X';

}

හලෝ.... අපි ටක් ටික් ටුක් අදිමුද? :D

Hello Friends, අපි ටක් ටික් ටුක් අදිමුද?? ඒනම් මෙන්න මෙතනින් බා ගනින්...වරෙන් කවුද බලමු දිනන්නේ..හික්..හික්... :D Play and Enjoy!! :D You can download the Executable file from here. If any bugs found pls be kind enough to put me a PM..thanks The Coding goes Free and Open for you Dev guys.. :D

/*
 (c)2010 Dura.
 Tuck Tik Took (Version 2.0)
 Last Update : 2010 Dec 19
 Feedback : harshato@gmail.com
 */

 #include
 #include