public static void L7P1_Calculator() { int x = int.Parse(Console.ReadLine()); int y = int.Parse(Console.ReadLine()); string str = Console.ReadLine(); del operation = null; switch (str) { case "plus": { operation = (int x1, int y2) => x + y; break; } case "minus": { operation = Minus; break; } } var result = operation?.Invoke(x, y); Console.WriteLine(result); }
void test_lamba() { del myDelegate = x => x * x; int i = 0; int j = myDelegate(5); //j = 25 myDelegate = (int x) => { //公用外部的变量 i = 5; return(x * x); }; j = myDelegate(5); Console.WriteLine("i:" + i.ToString() + "j:" + j.ToString()); TestDelegate xelegate = (string n) => { Console.WriteLine(n); }; xelegate("rr"); Action act = () => { Console.WriteLine("aaa"); }; act(); }
public FrmPrincipal() { InitializeComponent(); MyDlg = new del(Display); //Load haarcascades for face detection face = new HaarCascade("haarcascade_frontalface_default.xml"); //eye = new HaarCascade("haarcascade_eye.xml"); try { //Load of previus trainned faces and labels for each image string Labelsinfo = File.ReadAllText(Application.StartupPath + "/TrainedFaces/TrainedLabels.txt"); string[] Labels = Labelsinfo.Split('%'); NumLabels = Convert.ToInt16(Labels[0]); ContTrain = NumLabels; string LoadFaces; for (int tf = 1; tf < NumLabels + 1; tf++) { LoadFaces = "face" + tf + ".bmp"; trainingImages.Add(new Image <Gray, byte>(Application.StartupPath + "/TrainedFaces/" + LoadFaces)); labels.Add(Labels[tf]); } } catch (Exception e) { //MessageBox.Show(e.ToString()); MessageBox.Show("Nothing in binary database, please add at least a face(Simply train the prototype with the Add Face Button).", "Triained faces load", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } }
static void Main() { del d = a => a + 1; int k = d(3); Console.WriteLine("k = " + k); }
public int MyLambdaOne(int value) { //(input-parameters) => expression-or-statement-block del myDelegate = x => x * x; return(myDelegate(value)); }
public void zad8() { del d1 = new del(silnia_iteracyjnie); del d2 = new del(silnia_rekurencja); del d3 = new del(fibbonacci_iteracyjnie); del d4 = new del(fibonacci_rekurencja); IAsyncResult ar1 = d1.BeginInvoke(20, null, null); long result1 = d1.EndInvoke(ar1); Console.WriteLine("Silnia obliczona iteracyjnie: " + result1); IAsyncResult ar2 = d2.BeginInvoke(10, null, null); long result2 = d2.EndInvoke(ar2); Console.WriteLine("Silnia obliczona rekurencyjnie: " + result2); IAsyncResult ar3 = d3.BeginInvoke(10, null, null); long result3 = d3.EndInvoke(ar3); Console.WriteLine("Fibonacci obliczony iteracyjnie: " + result3); IAsyncResult ar4 = d4.BeginInvoke(10, null, null); long result4 = d4.EndInvoke(ar4); Console.WriteLine("Fibonacci obliczony rekurencyjnie: " + result4); Console.ReadKey(); }
static void Main() { del o = new del(show); o(55); Console.ReadLine(); }
public static double Integral(del f, double a, double b, int n, char c) { double x; double s = 0; double h; if (c == 'p') { h = (b - a) / n; for (double i = 1; i <= n; i++) { x = a + h*(i - 0.5); s += f(x); } s *= h; } else if (c == 't') { s = (f(a) + f(b)) / 2; h = (b - a) / n; for (int i = 1; i < n; i++) { x = a + i * h; s += f(x); } s *= h; } else { s = -1; } return s; }
static void Main(string[] args) { Console.WriteLine("Enter First Number:"); int value1 = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Enter Second Number:"); int value2 = Convert.ToInt32(Console.ReadLine()); Class1 obj = new Class1(); del dobj = new del(obj.Add); dobj += new del(obj.Sub); dobj += new del(obj.Mul); dobj += new del(obj.Div); Console.WriteLine("Division is:{0}", dobj(value1, value2)); dobj -= new del(obj.Div); Console.WriteLine("Multiplication is:{0}", dobj(value1, value2)); dobj -= new del(obj.Mul); Console.WriteLine("Substration is:{0}", dobj(value1, value2)); dobj -= new del(obj.Sub); Console.WriteLine("Addition is:{0}", dobj(value1, value2)); dobj -= new del(obj.Add); }
public static void LambdaHello() { del myDelegate = x => x * x; int j = myDelegate(5); //j = 25 Console.WriteLine("Value of Num: {0}", j); }
static void Main(string[] args) { //Use to search a list/collection List <int> Lst = new List <int>(); Lst.Add(100); Lst.Add(200); Lst.Add(300); int Value = Lst.Find(m => m.Equals(100)); //int value = Lst.Find() Console.WriteLine(Value); Console.ReadLine(); //Find series of number List <int> numbers = new List <int> { 1, 2, 3, 4, 5, 6, 7 }; var evens = numbers.FindAll(n => n % 2 == 0); foreach (int a in evens) { Console.WriteLine(a); } Console.ReadLine(); del MyDelegate = X => X * X; Console.WriteLine("Result is := " + MyDelegate(5)); Console.ReadLine(); }
// Gets a single movie based off an id number // // id - UrlParameter sent // // returns a Movie object public static Movie ById(int id) { del filter = (item) => int.Parse(item[0]) == id; var result = Database.AllWithFilter(filter)[0]; return(CreateMovie(result)); }
public static void L7P1_Calculator() { Console.WriteLine("enter x"); int x = int.Parse(Console.ReadLine()); Console.WriteLine("enter y"); int y = int.Parse(Console.ReadLine()); string str = Console.ReadLine(); del operation = null; switch (str) { case "plus": { operation = delegate(int x1, int y1) { return(x + y); }; break; } case "minus": { operation = Minus; break; } } var result = operation?.Invoke(x, y); Console.WriteLine(result); }
public int locate(del indexer, int l, int r, int target) { while (l != r) { int m = (l + r) / 2; int value = indexer(m); if (value == target) { return(m); } if (value < target) { if (l == m) { return(l); } l = m; } else { r = m; } } return(l); }
static void Main(string[] args) { int a = int.Parse(Console.ReadLine()); del d = new del(area); Console.WriteLine(d(a)); }
static void Main(string[] args) { del d = x => Console.WriteLine(x); d.Invoke(Book.ToString()); Console.ReadLine(); }
static void Main(string[] args) { //Generic types GenericList <int> list1 = new GenericList <int>(); GenericList <string> list2 = new GenericList <string>(); GenericList <bool> list3 = new GenericList <bool>(); list1.Evaluate(1); list2.Evaluate("Hello, as you can see, I'm a string."); list3.Evaluate(true); //The lambda expression x => x * x specifies a parameter that’s named x and returns the value of x squared. //A lambda expression with an expression on the right side of the => operator is called an expression lambda. Expression lambdas are used extensively in the construction of Expression Trees (C# and Visual Basic). //An expression lambda returns the result of the expression and takes the following basic form: (input parameters) => expression del myDelegate = x => x * x; twodel mySecondDelegate = y => y * y; int c = mySecondDelegate(5); int j = myDelegate(6); Console.WriteLine("c = " + c); Console.WriteLine("j = " + j); Console.ReadLine(); }
private void Init(int slot) { this.Load += new EventHandler(this.Notification_Load); this.Shown += new EventHandler(this.Notification_Shown); int offset = 5; /* space between two consecutive notifications */ int y = DISPLAY_START_POSITION_Y + slot * (this.Size.Height + offset); Screen screen; if (Program.MainWindow.InvokeRequired) { del GetScreen = () => Screen.FromControl(Program.MainWindow); screen = (Screen)Program.MainWindow.Invoke(GetScreen); } else { screen = Screen.FromControl(Program.MainWindow); } screen = screen ?? Screen.PrimaryScreen; this.Location = new Point(screen.Bounds.Right - this.Width, y); fadeTimer = new FadeTimer1(this, 3500, 1500); }
static void Main(string[] args) { del d = new del(add); d += sub; d.Invoke(); }
public void TestLambda() { del myDelegate = x => x * x; int j = myDelegate(5); Assert.AreEqual(j, 25); }
/// <summary> /// Handles the Selecting event of the lds_sectoresseleccionados control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="LinqDataSourceSelectEventArgs"/> instance containing the event data.</param> protected void lds_sectoresseleccionados_Selecting(object sender, LinqDataSourceSelectEventArgs e) { del delegado = (string x, string y, int z) => { string valor = string.Empty; if (z == 1) { if (string.IsNullOrEmpty(x)) { valor += " (Todos los sectores) "; } else { valor += x; } } return(valor); }; var secortes = (from k in consultas.Db.ConvocatoriaCriterioSectors join s in consultas.Db.Sector on k.CodSector equals s.Id_Sector into r1 from c1 in r1.DefaultIfEmpty() orderby c1.NomSector where k.CodCriterio == codCriterio select new { Id_Sector = c1.Id_Sector.ToString(), nomSector = delegado(c1.NomSector, "", 1) }); e.Result = secortes.ToList(); }
public int MyLamdaOne(int val) { //input parameter =>expresstion or statment block del myDelegate = (x) => x * x; return(myDelegate(val)); }
public static void ThisMain() { del d = x => Console.WriteLine(x); d.Invoke(Book.ToString()); Console.ReadLine(); }
private BDbMethods(IntPtr pdb, BDbOffsetOf offsetOf, BerkeleyDbType dbType) { _dbType = dbType; _offsetOf = offsetOf; foreach (BDbOffsetOfItem offsetOfItem in offsetOf.Db) { IntPtr funcptr = Marshal.ReadIntPtr(pdb + offsetOfItem.Offset); switch (offsetOfItem.Name) { case "close": _close = (close)Marshal.GetDelegateForFunctionPointer(funcptr, typeof(close)); break; case "cursor": _cursor = (cursor)Marshal.GetDelegateForFunctionPointer(funcptr, typeof(cursor)); break; case "del": _del = (del)Marshal.GetDelegateForFunctionPointer(funcptr, typeof(del)); break; case "get_pagesize": _get_pagesize = (get_pagesize)Marshal.GetDelegateForFunctionPointer(funcptr, typeof(get_pagesize)); break; case "open": _open = (open)Marshal.GetDelegateForFunctionPointer(funcptr, typeof(open)); break; case "put": _put = (put)Marshal.GetDelegateForFunctionPointer(funcptr, typeof(put)); break; case "set_flags": _set_flags = (set_flags)Marshal.GetDelegateForFunctionPointer(funcptr, typeof(set_flags)); break; } } }
public void Test_LambdaExpression() { del myDelegate = x => x * x; int j = myDelegate(5); Assert.AreEqual(j, 25); }
void Start() { // delegate examples // defining delegates and executing them del sumValuesDelegate = sumValues; Debug.Log("sumValuesDelegate(10, 20) " + sumValuesDelegate(10, 20)); Debug.Log("sumValuesDelegate(100, 200) " + sumValuesDelegate(100, 200)); Debug.Log("sumValuesDelegate(100, -90) " + sumValuesDelegate(100, -90)); del substractValuesDelegate = substractValues; Debug.Log("substractValuesDelegate(20, 10) " + substractValuesDelegate(20, 10)); Debug.Log("substractValuesDelegate(200, 150) " + substractValuesDelegate(200, 150)); // call back examples messagesDel messages = displayMessages; FindGameObject("Video5", displayMessages); // lambda examples // Lambda expressions are not limited to LINQ queries. // You can use them anywhere a delegate value is expected, that is, // wherever an anonymous method can be used. messagesDel messagesWithLambda = (x) => { x = x + " " + " in hierarchy..."; Debug.Log(x); }; FindGameObject("Video5", messagesWithLambda); Debug.Log("FindGameObjectWithLambda(Video5) : " + FindGameObjectWithLambda("Video5")); Debug.Log("Property FullName: " + FullName); // linq examples and lambdas List <Player> players = new List <Player> { new Player("John", "Doe", 20, "*****@*****.**"), new Player("Bruny", "Toner", 20, "*****@*****.**"), new Player("Steve", "Doe", 30, "*****@*****.**"), new Player("Jason", "Doe", 40, "*****@*****.**"), new Player("Luis", "Toner", 50, "*****@*****.**"), new Player("Henry", "Doe", 60, "*****@*****.**"), }; // linq List <Player> playersWithTheAgeOfTwenty = players.Where(p => p.Age == 20).ToList(); int playersWithTheAgeOfTwentyCount = players.Count(p => p.Age == 20); Debug.Log("playersWithTheAgeOfTwentyCount: " + playersWithTheAgeOfTwentyCount); Player playerWithAgeOfTwenty = players.FirstOrDefault(p => p.Age == 20); Debug.Log("playerWithAgeOfTwenty: " + playerWithAgeOfTwenty.FirstName); Player playerWithAgeOfTwentyLast = players.LastOrDefault(p => p.Age == 20); Debug.Log("playerWithAgeOfTwenty: " + playerWithAgeOfTwentyLast.FirstName); }
public int MyLambdaOne(int val) { //(input -parameters) => expression or statement block del myDelegate = (x) => x * x; return(myDelegate(val)); }
static void Main(string[] args) { del _del1 = List.FindNumOfSymbs2; List lst = new List("HHHEerwerHET"); del _del2 = lst.FindNumOfSymbs1; res1 = _del1(); res2 = _del2(); message m = Message1; Console.WriteLine("result of delegates:" + res2); if (res1 != 0) { m = new message(Message2); m(); } if (res2 != 0) { m = new message(Message1); m(); } MathOperations math = new MathOperations(); math.Notify += DisplayMessage; math.Add(2, -2); math.Divide(0, 3); Console.ReadKey(); }
public static void Main() { AnotherMain(); Func <int, int> g = x => x + 3; int p = g(7); Console.WriteLine("sample 1 : " + p); del myDelegate = x => x * x; int j = myDelegate(5); Console.WriteLine("sample 2 : " + p); Func <int> f = () => 20; Console.WriteLine("sample 3 : " + f()); Func <int> f1 = () => Cal(); Console.WriteLine("sample 4 : " + f1()); Action <int> ff = x => { Cal(x); }; ff(3); Action <string> myDel = n => { string s = n + " " + "World"; Console.WriteLine("sample 6 : " + s); }; myDel("Hello"); }
static void Main(string[] args) { del <Int16> delegem = delegate(Int16 k) { return((short)(k + k)); }; del <string> delegem2 = delegate(string k) { return(k + k); }; Console.WriteLine("Hangi tip ile değer gireceksiniz...\n 1- Sayı \n 2- Metin"); int sorgu = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Bir değer giriniz..."); switch (sorgu) { case 1: Console.WriteLine(delegem((Convert.ToInt16(Console.ReadLine())))); break; case 2: Console.WriteLine(delegem2((Console.ReadLine()))); break; default: Console.WriteLine("Yanlış bir değer girdiniz...!"); break; } Console.ReadLine(); }
static void Main(string[] args) { del myDelegate = x => x * x; int j = myDelegate(5); Console.WriteLine(j); }
private BDbcMethods(IntPtr pdbc, BDbOffsetOf offsetOf, BerkeleyDbType dbType) { _offsetOf = offsetOf; _dbType = dbType; foreach (BDbOffsetOfItem offsetOfItem in offsetOf.Dbc) { IntPtr funcptr = Marshal.ReadIntPtr(pdbc + offsetOfItem.Offset); switch (offsetOfItem.Name) { case "close": _close = (close)Marshal.GetDelegateForFunctionPointer(funcptr, typeof(close)); break; case "del": _del = (del)Marshal.GetDelegateForFunctionPointer(funcptr, typeof(del)); break; case "get": _get = (get)Marshal.GetDelegateForFunctionPointer(funcptr, typeof(get)); break; case "put": _put = (put)Marshal.GetDelegateForFunctionPointer(funcptr, typeof(put)); break; } } }
public static void Main(string[] args) { del str1 = new del(sample.DelegateSample); string str = str1("Welcome,,friends,,to,,TechBeamers"); Console.WriteLine(str); }
public Lonesystem() { InitializeComponent(); refreshDel = FillLists; checkFileThread = new Thread(CheckFile); checkFileThread.IsBackground = true; checkFileThread.Start(); }
public CountDown(int hours, int minutes, int seconds, del callBack) { this.hours = hours; this.minutes = minutes; this.seconds = seconds; this.SetText(); this.callBack = callBack; this.timer = new Timer(); this.timer.Interval = 1000; this.timer.Tick += new EventHandler(TimerTick); }
static double funk(del Fotx, double a, double b, double E) { double f = 0, g = 0; { double x = a, d = 0.1; while (Math.Abs(d) > E / 4) { if (x > b) { break; } g = Fotx(x); f = Fotx(x + d); if (g > f) { x = x + d; d = -d / 4; x = x + d; } else { x = x + d; } } } return f; }
public Face(string spriteName, del verify, int priority) { this.spriteName = spriteName; this.verify = verify; this.priority = priority; }
/// <summary> /// Форма для вывода задачи на экран с повтором выполнения /// </summary> /// <param name="ChoosedFunc">Указатель на выбранный пользователем метод</param> /// <param name="TitleFunc">Название выбранной задачи</param> static void Form(del ChoosedFunc,string TitleFunc) { Console.WriteLine("---------------------------------------------------------"); Console.WriteLine(TitleFunc); while (true) { ChoosedFunc();//Переданный метод Console.WriteLine("\n"); Console.WriteLine(@"Для повторения решения задачи нажмите ""ПРОБЕЛ"" Для выхода в меню нажмите любую другую клавишу"); Console.WriteLine("---------------------------------------------------------"); //Ожидание нажатся какой-либо клавиши keyState = Console.ReadKey(); //Возрат каретки для эстетичности визуализации данных на экране Console.WriteLine("\r"); //Условия для выхода из цикла if (keyState.Key != ConsoleKey.Spacebar) { return; } } }
static void Main(string[] args) { del firstDel = new del(RationalNumber.noException); del secondDel = delegate(uint a) { return a; }; Func<uint, uint> anonM = RationalNumber.noException; RationalNumber first = RationalNumber.createFromString(Console.ReadLine()); RationalNumber second = new RationalNumber(20, 0); Console.Write("Input first number: "); try { int i = first.N / Convert.ToInt32(first.M); } catch (DivideByZeroException) { first.M = firstDel(1); //first.M = anonM(1); } try { int i = second.N / Convert.ToInt32(second.M); } catch (DivideByZeroException) { second.M = secondDel(1); } Console.WriteLine("\nFirst number: " + first.ToString()); Console.WriteLine("Second number: " + second.ToString()); Console.WriteLine(first.ToString()+ " + " + second.ToString()+ " = " + (first + second).ToString()); Console.WriteLine(first.ToString() + " - " + second.ToString() + " = " + (first - second).ToString()); Console.WriteLine(first.ToString() + " * " + second.ToString() + " = " + (first * second).ToString()); Console.WriteLine(first.ToString() + " / " + second.ToString() + " = " + (first / second).ToString()); Console.Write("Press any key to exit..."); Console.ReadKey(); }
public Form2(del d) { InitializeComponent(); this.d=d; }
private void changeStatusLabel(string txt) { if (lblState.InvokeRequired) { del d = new del(changeStatusLabel); this.Invoke(d, new object[] { txt }); return; } lblState.Text = txt; }
static void Main() { del myDelegate=new del(hello); myDelegate(20); Console.WriteLine(getNum()); }
private void Output(String Message) { if (output != null) { if (this.output.InvokeRequired) { Delegate d = new del(Output); output.Invoke(d, new object[] { Message }); } else { this.output.Items.Add(Message); this.output.SelectedIndex = output.Items.Count - 1; this.output.ClearSelected(); } } }
/// <summary> /// Callbacks for Receiving Message from Client and Handle it. /// </summary> private void RecvrMsgCallback() { while (running) { while (waitConfirmation) { }; try { Console.WriteLine(time); if (time >= maxTime) { Close(); running = false; lock (Tracker.ClientHandlers) { Tracker.ClientHandlers.Remove(IP); } break; } byte[] bytes = new byte[1024]; int bytesRec = handler.Receive(bytes); time = 0; // time // Message UNOS_Sister.Message msg = new UNOS_Sister.Message(); msg.parseMe(bytes); Console.WriteLine(bytes[bytes.Length - 1]); Console.WriteLine("Message : {0}", Encoding.ASCII.GetString(bytes, 0, bytesRec)); List<byte> response = new List<byte>(); response.AddRange(Encoding.ASCII.GetBytes("GunbondGame00000000")); UNOS_Sister.Message msgResponse = new UNOS_Sister.Message(); // TO DO INITIAL MESSAGE RESPONSE string log = ""; msgResponse.msgPeerID = PeerID; // Message Handling // Handsake if (msg.msgCode == UNOS_Sister.Message.HANDSHAKE) { response.Add(135); response.AddRange(Encoding.ASCII.GetBytes(PeerID)); ; log += "Handshake from " + (handler.RemoteEndPoint as IPEndPoint).Address.ToString() + ", Peer ID : " + PeerID + "\n"; msgResponse.msgCode = UNOS_Sister.Message.HANDSHAKE; } else if (msg.msgCode == UNOS_Sister.Message.QUIT) // Quit Room { bool found = false; int i = 0; Room room = null; while (!found) { room = Tracker.Rooms.ElementAt(i).Value; foreach (string id in room.PeerIDs) { if (id.Equals(msg.msgPeerID)) { Console.WriteLine("Peer " + msg.msgPeerID + "is found in " + room.getRoomID()); found = true; } } } if (found) { Console.WriteLine("QUIT"); string sRoom = room.getPeerID(); Console.WriteLine("Peer ID : " + sRoom); string s = Tracker.IPPeers[sRoom]; Console.WriteLine("Key : " + s); ClientHandler handlerCreatorPeer = Tracker.ClientHandlers[s]; UNOS_Sister.Message msgConfirmation = msg; msgResponse.msgCode = handlerCreatorPeer.SentForConfirmation(msgConfirmation.Construct()).msgCode; if (msgResponse.msgCode == Message.SUCCESS) { Console.WriteLine("Sukses"); room.PeerIDs.Remove(msg.msgPeerID); if (room.PeerIDs.Count == 0) Tracker.Rooms.Remove(room.getRoomID()); } else if (msgResponse.msgCode == Message.FAILED) { Console.WriteLine("Failed"); } else { Console.WriteLine("APA ? " + msgResponse.msgCode); msgResponse.msgCode = Message.FAILED; } } else msgResponse.msgCode = UNOS_Sister.Message.FAILED; Console.WriteLine("Quit Room"); } else if (msg.msgCode == UNOS_Sister.Message.START) // Start Room { Room sRoom = Tracker.GetRoom(msg.msgPeerID); if (sRoom != null) { msgResponse.msgCode = UNOS_Sister.Message.SUCCESS; foreach (string id in sRoom.PeerIDs) { if (!id.Equals(msg.msgPeerID)) { Console.WriteLine("Sent Start to : " + id); if (Tracker.IPPeers.ContainsKey(id)) { if (Tracker.ClientHandlers.ContainsKey(Tracker.IPPeers[id])) { Tracker.ClientHandlers[Tracker.IPPeers[id]].handler.Send(msg.Construct()); Console.WriteLine("Sent"); } } } } Thread.Sleep(500); } else { msgResponse.msgCode = UNOS_Sister.Message.FAILED; } Console.WriteLine("Start Room"); } else if (msg.msgCode == UNOS_Sister.Message.KEEP_ALIVE) // Keep Alive { //response = "OK, I will not kill you this time"; msgResponse.msgCode = UNOS_Sister.Message.SUCCESS; log += PeerID + ":" + "Still Alive\n"; time = 0; } else if (msg.msgCode == UNOS_Sister.Message.LIST) // Listing Room { //response = "Oke list of room will be sent sooon"; log += PeerID + ":" + "Request List of Room\n"; msgResponse.msgCode = UNOS_Sister.Message.ROOM; msgResponse.Rooms.Clear(); msgResponse.Rooms.AddRange(Tracker.Rooms.Values); } else if (msg.msgCode == UNOS_Sister.Message.CREATE_ROOM) //Create Room { // Create Room // response = "Oke Room will be created"; if (Tracker.Rooms.Count() + 1 <= Tracker.max_room) { msgResponse.msgCode = UNOS_Sister.Message.SUCCESS; response.Add(127); msg.printMsg(); lock (Tracker.Rooms) { Console.WriteLine("Peer ID :" + msg.msgPeerID); msg.Rooms.ElementAt(0).PeerIDs.Add(msg.msgPeerID); Tracker.Rooms.Add(msg.Rooms[0].getRoomID(), msg.Rooms.ElementAt(0)); } } else { response.Add(128); msgResponse.msgCode = UNOS_Sister.Message.FAILED; } Console.WriteLine("Max Player :" + msg.Rooms[0].getMaxPlayer()); log += PeerID + ":" + "Created Room ID :" + msg.Rooms[0].getRoomID().Substring(0, msg.Rooms[0].getRoomID().IndexOf('\0')) + ", MaxPlayer :" + msg.Rooms[0].getMaxPlayer().ToString() + "\n"; Console.WriteLine(log); } else if (msg.msgCode == Message.JOIN) // Join Room { Console.WriteLine("Join Room"); Console.WriteLine("Room ID : " + msg.Rooms[0].getRoomID()); string sRoom = Tracker.Rooms[msg.Rooms[0].getRoomID()].getPeerID(); if (sRoom != null) { Console.WriteLine("Peer ID : " + sRoom); string s = Tracker.IPPeers[sRoom]; Console.WriteLine("Key : " + s); ClientHandler handlerCreatorPeer = Tracker.ClientHandlers[s]; UNOS_Sister.Message msgConfirmation = new UNOS_Sister.Message(); msgConfirmation.msgCode = Message.CHECK; msgConfirmation.msgPeerID = msg.msgPeerID; msgConfirmation.IP = this.IP; msgResponse.msgCode = handlerCreatorPeer.SentForConfirmation(msgConfirmation.Construct()).msgCode; if (msgResponse.msgCode == Message.SUCCESS) { Console.WriteLine("Sukses"); Room room = Tracker.Rooms[msg.Rooms[0].getRoomID()]; room.PeerIDs.Add(msg.msgPeerID); } else if (msgResponse.msgCode == Message.FAILED) { Console.WriteLine("Failed"); } else { Console.WriteLine("APA ? " + msgResponse.msgCode); msgResponse.msgCode = Message.FAILED; } } else { Room room = Tracker.Rooms[msg.Rooms[0].getRoomID()]; room.PeerIDs.Add(msg.msgPeerID); msgResponse.msgCode = Message.SUCCESS; } } response.Clear(); Console.WriteLine("Message to Write : " + msgResponse.msgCode); response.AddRange(msgResponse.Construct()); if (Tracker.log) { Console.WriteLine("Write Log"); lock (Tracker.fileLog) { Tracker.fileLog.Write(Encoding.ASCII.GetBytes(log), 0, log.Length); Tracker.fileLog.Write(Encoding.ASCII.GetBytes("->"), 0, 2); Tracker.fileLog.Write(response.ToArray(), 0, response.Count); Tracker.fileLog.Write(Encoding.ASCII.GetBytes("\n"), 0, 1); } if (Tracker.LogText != null) { lock (Tracker.LogText) { del update_log_text = new del(() => { Tracker.LogText.Text += log; Tracker.LogText.Text += "->" + Encoding.ASCII.GetString(response.ToArray()) + "\n"; }); Tracker.LogText.Invoke(update_log_text); } } } // Send Response handler.Send(response.ToArray()); } catch (SocketException se) { running = false; lock (Tracker.ClientHandlers) { Tracker.ClientHandlers.Remove(IP); } } } }
void sendMessage() { while (connected) { lock (sendMsg) { while (sendMsg.Count > 0) { try { byte[] MsgToBeSent = sendMsg.Dequeue(); Console.WriteLine("Sending : " + Encoding.ASCII.GetString(MsgToBeSent)); sendDel printSendMsg = new sendDel(() => { peerUI.textBox4.Text = Encoding.ASCII.GetString(MsgToBeSent); }); peerUI.Invoke(printSendMsg); int byteSent = sender.Send(MsgToBeSent); // kirim ke tracker //Receive response from tracker byte[] bytes = new byte[1024]; int byteRec = sender.Receive(bytes); recvDel printRecvMsg = new recvDel(() => { peerUI.textBox5.Text = Encoding.ASCII.GetString(bytes); }); peerUI.Invoke(printRecvMsg); Message mSent = new Message(); mSent.parseMe(MsgToBeSent); Message m = new Message(); m.parseMe(bytes); if (m.msgCode == Message.START) { //start game here playStatus = 1; sendDel printCurrentRoom = new sendDel(() => { peerUI.Close(); }); peerUI.Invoke(printCurrentRoom); } else if (m.msgCode == Message.SUCCESS) { if (mSent.msgCode == Message.START) { //start game here playStatus = 2; sendDel printCurrentRoom = new sendDel(() => { peerUI.Close(); }); peerUI.Invoke(printCurrentRoom); } else if (mSent.msgCode == Message.CREATE_ROOM) { //create room success Console.WriteLine("Create Room Success"); //masukin ke myRoom myRoom = mSent.Rooms[0]; inRoom = true; //masuk ke room yang di create canQuit = false; Console.WriteLine("my Room : " + myRoom.getRoomID()); peerList.Add(this.PeerID); sendDel printCurrentRoom = new sendDel(() => { peerUI.textBox6.Text = myRoom.getRoomID(); }); peerUI.Invoke(printCurrentRoom); } else if (mSent.msgCode == Message.JOIN) { //join success inRoom = true; sendDel printCurrentRoom = new sendDel(() => { peerUI.textBox6.Text = joininRoom; }); peerUI.Invoke(printCurrentRoom); //Print Room Member del printRoomMember = new del(() => { for (int i = 0; i < peerList.Count; i++) { peerUI.richTextBox1.Text += peerList[i]; peerUI.richTextBox1.Text += "\n"; } }); peerUI.Invoke(printRoomMember); Console.WriteLine("Join Room Success"); //TO DO : koneksi dengan GameConnection } else if (mSent.msgCode == Message.KEEP_ALIVE) { //keep alive success Console.WriteLine("Keep Alive Success"); } else if (mSent.msgCode == Message.QUIT) { //quit success inRoom = false; sendDel printCurrentRoom = new sendDel(() => { peerUI.textBox6.Text = "-"; }); peerUI.Invoke(printCurrentRoom); Console.WriteLine("Quit Success"); } } else if (m.msgCode == Message.ROOM) { //get list room roomList.Clear(); roomList.AddRange(m.Rooms); Console.WriteLine("Room List : "); List<string> roomString = new List<string>(); del printRoomList = new del(() => { Console.WriteLine("Room List : "); for (int i = 0; i < roomList.Count; i++) { Console.WriteLine(roomList[i].getRoomID()); roomString.Add(roomList[i].getRoomID()); } peerUI.listBox1.DataSource = roomString; }); peerUI.Invoke(printRoomList); } else if (m.msgCode == Message.FAILED) { if (mSent.msgCode == Message.CREATE_ROOM) { //create room success Console.WriteLine("Create Room FAILED"); } else if (mSent.msgCode == Message.JOIN) { //join success Console.WriteLine("Join Room FAILED"); } else if (mSent.msgCode == Message.KEEP_ALIVE) { //keep alive success Console.WriteLine("Keep Alive FAILED"); } else if (mSent.msgCode == Message.QUIT) { //quit success Console.WriteLine("Quit FAILED"); } } else if (m.msgCode == 100) //Check if myRoom masih muat { Console.WriteLine("jumlah peer : " + peerList.Count()); Console.WriteLine("max player : " + myRoom.getMaxPlayer()); if (peerList.Count() < myRoom.getMaxPlayer()) { Console.WriteLine("Masih bisa join"); IPTable.Add(m.msgPeerID, m.IP); byte[] msg = Encoding.ASCII.GetBytes("GunbondGame00000000"); List<byte> byteList = new List<byte>(); byteList.AddRange(msg); byteList.Add(Message.SUCCESS); msg = byteList.ToArray(); int byteSent_ = sender.Send(msg); //Receive response from tracker byte[] join_msg = new byte[1024]; int byteRecs = sender.Receive(join_msg); Message m_ = new Message(); m_.parseMe(join_msg); if (m_.msgCode == Message.SUCCESS) { peerList.Add(m.msgPeerID); //Print Room Member del printRoomMember = new del(() => { Console.WriteLine("RoomMember : "); for (int i = 0; i < peerList.Count; i++) { peerUI.richTextBox1.Text += peerList[i]; peerUI.richTextBox1.Text += "\n"; Console.WriteLine(peerList[i]); } }); peerUI.Invoke(printRoomMember); } else { Console.WriteLine("Sudah join room lain"); } } else { Console.WriteLine("Room already full"); byte[] msg = Encoding.ASCII.GetBytes("GunbondGame00000000"); List<byte> byteList = new List<byte>(); byteList.AddRange(msg); byteList.Add(Message.FAILED); msg = byteList.ToArray(); int byteSent_ = sender.Send(msg); } } else if (m.msgCode == Message.QUIT) { peerList.Remove(m.msgPeerID); Console.WriteLine("Peer " + m.msgPeerID + " quit from your room. Boo!"); IPTable.Remove(m.msgPeerID); byte[] msg = Encoding.ASCII.GetBytes("GunbondGame00000000"); List<byte> byteList = new List<byte>(); byteList.AddRange(msg); byteList.Add(Message.SUCCESS); msg = byteList.ToArray(); int byteSent_ = sender.Send(msg); //Print Room Member del printRoomMember = new del(() => { Console.WriteLine("RoomMember : "); peerUI.richTextBox1.Text = ""; for (int i = 0; i < peerList.Count; i++) { peerUI.richTextBox1.Text += peerList[i]; peerUI.richTextBox1.Text += "\n"; Console.WriteLine(peerList[i]); } }); peerUI.Invoke(printRoomMember); } } catch (SocketException se) { Console.WriteLine(se.ToString()); if (se.SocketErrorCode == SocketError.ConnectionAborted) { connected = false; } } catch (Exception e) { Console.WriteLine(e.ToString()); } } } } }