public bool CheckAnswerAllBox(Arah arah) { bool isTrue = false; List <GameObject> box = new List <GameObject>(); box.Add(this.gameObject); switch (arah) { case Arah.Vertical: isTrue = (nextVertical != null ? nextVertical.CheckAnswerAllBox(arah, ref box, true):true) && (prevVertical != null ? prevVertical.CheckAnswerAllBox(arah, ref box, false):true) && _currentAnswer == boxAnswer; break; case Arah.Horizontal: isTrue = (nextHorizontal != null ? nextHorizontal.CheckAnswerAllBox(arah, ref box, true) : true) && (prevHorizontal != null ? prevHorizontal.CheckAnswerAllBox(arah, ref box, false) : true) && _currentAnswer == boxAnswer; break; } Debug.Log("Answer is : " + isTrue); if (isTrue) { foreach (GameObject b in box) { b.GetComponent <BoxTTS>().wasAnswer = true; } } return(isTrue); }
public bool CheckAnswerAllBox(Arah arah, ref List <GameObject> box, bool toNext) { bool isTrue = false; box.Add(this.gameObject); switch (arah) { case Arah.Vertical: if (toNext) { isTrue = (nextVertical != null ? nextVertical.CheckAnswerAllBox(arah, ref box, true) : true) && _currentAnswer == boxAnswer; } else { isTrue = (prevVertical != null ? prevVertical.CheckAnswerAllBox(arah, ref box, false) : true) && _currentAnswer == boxAnswer; } break; case Arah.Horizontal: if (toNext) { isTrue = (nextHorizontal != null ? nextHorizontal.CheckAnswerAllBox(arah, ref box, true) : true) && _currentAnswer == boxAnswer; } else { isTrue = (prevHorizontal != null ? prevHorizontal.CheckAnswerAllBox(arah, ref box, false) : true) && _currentAnswer == boxAnswer; } break; } return(isTrue); }
public void activateSelected(Arah arah, bool toNext, ref List <GameObject> allBoxObj, ref BoxTTS prior) { allBoxObj.Add(this.gameObject); backCol.gameObject.SetActive(true); if (_currentAnswer == "") { prior = this; } switch (arah) { case Arah.Horizontal: if (toNext) { if (nextHorizontal != null) { nextHorizontal.activateSelected(Arah.Horizontal, true, ref allBoxObj, ref prior); } else { prior = this; } } else { if (prevHorizontal != null) { prevHorizontal.activateSelected(Arah.Horizontal, false, ref allBoxObj, ref prior); } } break; case Arah.Vertical: if (toNext) { if (nextVertical != null) { nextVertical.activateSelected(Arah.Vertical, true, ref allBoxObj, ref prior); } else { prior = this; } } else { if (prevVertical != null) { prevVertical.activateSelected(Arah.Vertical, false, ref allBoxObj, ref prior); } } break; } }
static void client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e) { string Message = new string(Encoding.UTF8.GetChars(e.Message)); if (Message.IndexOf(":") < 1) { return; } // handle message received Debug.Print("Message Received = " + Message); string[] CmdStr = Message.Split(':'); if (CmdStr[0] == "MOVE") { switch (CmdStr[1]) { case "Forward": jalan = Arah.Maju; break; case "Backward": jalan = Arah.Mundur; break; case "Left": jalan = Arah.Kiri; break; case "Right": jalan = Arah.Kanan; break; case "Stop": jalan = Arah.Berhenti; break; } if (lastDirection == jalan) { if (Speed == 0) { Speed = HalfSpeed; } else { Speed = FullSpeed; } } else { Speed = HalfSpeed; } PublishMessage("/robot/status", "Robot Status:" + CmdStr[1]); } else if (CmdStr[0] == "REQUEST" && CmdStr[1] == "STATUS") { PublishMessage("/robot/state", "ONLINE"); } }
public Setting() { Width = 0; Height = 0; Score = 0; Speed = 0; Points = 0; GameOver = false; arah = Arah.Down; }
public BoxTTS getPrevBox(Arah arah) { if (arah == Arah.Horizontal) { return(prevHorizontal != null ? prevHorizontal : this); } else { return(prevVertical != null ? prevVertical : this); } }
public void activateSelected(Arah arah, bool toNext, ref List <GameObject> allBoxObj) { allBoxObj.Add(this.gameObject); backCol.gameObject.SetActive(true); setToSelected(); switch (arah) { case Arah.Horizontal: if (toNext) { if (nextHorizontal != null) { nextHorizontal.activateSelected(Arah.Horizontal, true, ref allBoxObj); } } else { if (prevHorizontal != null) { prevHorizontal.activateSelected(Arah.Horizontal, false, ref allBoxObj); } } break; case Arah.Vertical: if (toNext) { if (nextVertical != null) { nextVertical.activateSelected(Arah.Vertical, true, ref allBoxObj); } } else { if (prevVertical != null) { prevVertical.activateSelected(Arah.Vertical, false, ref allBoxObj); } } break; } }
public BoxTTS ClearAll(Arah arah, bool toNext) { if (wasAnswer) { Debug.Log("Tidak Dapat Dihapus"); setToSelected(); } else { currentAnswer = ""; } if (arah == Arah.Vertical) { if (nextVertical != null && toNext) { nextVertical.ClearAll(arah, true); } if (prevVertical != null && !toNext) { return(prevVertical.ClearAll(arah, false)); } else if (!toNext) { return(this); } } else { if (nextHorizontal != null && toNext) { nextHorizontal.ClearAll(arah, true); } if (prevHorizontal != null && !toNext) { return(prevHorizontal.ClearAll(arah, false)); } else if (!toNext) { return(this); } } return(null); }
public BoxTTS getNextBox(Arah arah) { if (arah == Arah.Horizontal) { if (nextHorizontal != null && nextHorizontal.currentAnswer != "") { return(nextHorizontal.getNextBox(arah)); } return(nextHorizontal != null?nextHorizontal:this); } else { if (nextVertical != null && nextVertical.currentAnswer != "") { return(nextVertical.getNextBox(arah)); } return(nextVertical != null ? nextVertical : this); } }
public void SetObjSelected(BoxTTS box, Arah arah) { SoundBase.MAIN.PlaySound("Klik"); if (Mathf.Abs(RightSoal.localPosition.x) < 1) { ShowRight(); } int count = boxSelectedParent.childCount; for (int i = 0; i < count; i++) { boxSelectedParent.GetChild(0).GetComponent <BoxTTS>().setToSelected(); boxSelectedParent.GetChild(0).GetChild(1).gameObject.SetActive(false); boxSelectedParent.GetChild(0).SetParent(boxNotSelectedParent); } List <GameObject> allObj = new List <GameObject>(); box.activateSelected(ref allObj, ref currentArah, ref currentBtts, arah); if (currentBtts == null) { Debug.Log("BTTS NULL"); return; } foreach (GameObject obj in allObj) { obj.transform.SetParent(boxSelectedParent); } currentBtts.setToFocus(); cameraTarget = currentBtts.transform.position; cameraTarget.z = -10; cameraTarget.y -= 3; movingCamera = true; }
private static Block TransposisiBackward(Block b) { Block result = new Block(); int row, col, i; int N = (int)(Math.Floor(Math.Sqrt(b.Count - 1)) + 1); // Ukuran grid NxN dari block yang disusun 2 dimensi // Menyediakan grid kosong int[][] grid = new int[N][]; for (row = 0; row < N; row++) { grid[row] = new int[N]; for (col = 0; col < N; col++) { grid[row][col] = -1; } } // Menyediakan grid kosong untuk hasil transposisi int[][] grid2 = new int[N][]; for (row = 0; row < N; row++) { grid2[row] = new int[N]; for (col = 0; col < N; col++) { grid2[row][col] = -1; } } // Mengisi grid dengan block row = 0; col = 0; i = 0; while (i < b.Count) { grid[row][col] = b[i]; col++; if (col >= N) { col = 0; row++; } i++; } //Console.WriteLine("Before:"); //for (row = 0; row < N; row++) //{ // for (col = 0; col < N; col++) // { // Console.Write(String.Format("{0:D3} ", grid[row][col])); // } // Console.WriteLine(); //} // Menggeser grid dengan aturan ant sebanyak -1 shift row = 0; col = 0; int passed = 2; // Cell yang telah dilewati Arah arah = Arah.Kanan; int rowToFill = 0; int colToFill = 0; while (passed <= N * N) { // Geser cell dan tentukan arah gerakan berikutnya switch (arah) { case Arah.Atas: row--; if (row == 0) { arah = Arah.Kanan; // Setelah ke atas pasti ke kanan } break; case Arah.Kanan: col++; if (row == 0) // Ke bawah jika di row ke-0 { arah = Arah.Bawah; } else if (grid2[row - 1][col] == -1) // Sebaliknya, ke atas { arah = Arah.Atas; } break; case Arah.Bawah: row++; if (col == 0) // Ke kanan jika di col ke-0 { arah = Arah.Kanan; } else if (grid2[row][col - 1] == -1) // Sebaliknya, ke kiri { arah = Arah.Kiri; } break; case Arah.Kiri: col--; if (col == 0) { arah = Arah.Bawah; // Setelah ke kiri pasti ke bawah } break; } // Isi cell baru dengan toFill jika cell baru tidak kosong, persiapkan toFill berikutnya if (grid[row][col] != -1) { grid2[rowToFill][colToFill] = grid[row][col]; rowToFill = row; colToFill = col; } else { grid2[row][col] = -2; // Tandai dengan -2 (sudah pernah dikunjungi, namun tidak ada isinya } passed++; } // Isi cell awal dengan toFill yang terakhir grid2[rowToFill][colToFill] = grid[0][0]; //Console.WriteLine("After:"); //for (row = 0; row < N; row++) //{ // for (col = 0; col < N; col++) // { // Console.Write(String.Format("{0:D3} ", grid2[row][col])); // } // Console.WriteLine(); //} // Mengisi hasil transposisi ke result for (row = 0; row < N; row++) { for (col = 0; col < N; col++) { if (grid2[row][col] != -2) { result.Add((byte)grid2[row][col]); } } } return(result); }
public void activateSelected(ref List <GameObject> allBoxObj, ref Arah currArah, ref BoxTTS prior, Arah arah) { allBoxObj.Add(this.gameObject); backCol.gameObject.SetActive(true); setToSelected(); if (_currentAnswer == "") { prior = this; } if (arah == Arah.Horizontal) { currArah = Arah.Horizontal; if (nextHorizontal != null && _currentAnswer != "") { nextHorizontal.activateSelected(Arah.Horizontal, true, ref allBoxObj, ref prior); } else if (nextHorizontal != null) { nextHorizontal.activateSelected(Arah.Horizontal, true, ref allBoxObj); } else { prior = this; } if (prevHorizontal != null && _currentAnswer == "") { prevHorizontal.activateSelected(Arah.Horizontal, false, ref allBoxObj, ref prior); } else if (prevHorizontal != null) { prevHorizontal.activateSelected(Arah.Horizontal, false, ref allBoxObj); } } else if (arah == Arah.Vertical) { currArah = Arah.Vertical; if (nextVertical != null && _currentAnswer != "") { nextVertical.activateSelected(Arah.Vertical, true, ref allBoxObj, ref prior); } else if (nextVertical != null) { nextVertical.activateSelected(Arah.Vertical, true, ref allBoxObj); } else { prior = this; } if (prevVertical != null && _currentAnswer == "") { prevVertical.activateSelected(Arah.Vertical, false, ref allBoxObj, ref prior); } else if (prevVertical != null) { prevVertical.activateSelected(Arah.Vertical, false, ref allBoxObj); } } }
public void activateSelected(ref List <GameObject> allBoxObj, ref Arah currArah, ref BoxTTS prior) { // Jika dia adalah persimpangan if ((nextHorizontal != null || prevHorizontal != null) && (nextVertical != null || prevVertical != null)) { this.gameObject.name = "persimpangan"; Debug.Log("Persimpangan"); return; } allBoxObj.Add(this.gameObject); backCol.gameObject.SetActive(true); setToSelected(); if (_currentAnswer == "") { prior = this; } if (nextHorizontal != null || prevHorizontal != null) { currArah = Arah.Horizontal; if (nextHorizontal != null && _currentAnswer != "") { nextHorizontal.activateSelected(Arah.Horizontal, true, ref allBoxObj, ref prior); } else if (nextHorizontal != null) { nextHorizontal.activateSelected(Arah.Horizontal, true, ref allBoxObj); } else { prior = this; } if (prevHorizontal != null && _currentAnswer == "") { prevHorizontal.activateSelected(Arah.Horizontal, false, ref allBoxObj, ref prior); } else if (prevHorizontal != null) { prevHorizontal.activateSelected(Arah.Horizontal, false, ref allBoxObj); } } else if (nextVertical != null || prevVertical != null) { currArah = Arah.Vertical; if (nextVertical != null && _currentAnswer != "") { nextVertical.activateSelected(Arah.Vertical, true, ref allBoxObj, ref prior); } else if (nextVertical != null) { nextVertical.activateSelected(Arah.Vertical, true, ref allBoxObj); } else { prior = this; } if (prevVertical != null && _currentAnswer == "") { prevVertical.activateSelected(Arah.Vertical, false, ref allBoxObj, ref prior); } else if (prevVertical != null) { prevVertical.activateSelected(Arah.Vertical, false, ref allBoxObj); } } }
public static void Main() { //distance sensor //triger (12), echo (13), 5V + G HC_SR04 sensor = new HC_SR04(Pins.GPIO_PIN_D12, Pins.GPIO_PIN_D13); //buzzer OutputPort Klakson = new OutputPort(Pins.GPIO_PIN_D0, false); //motor driver HBridge MotorDriver = new HBridge(SecretLabs.NETMF.Hardware.Netduino.PWMChannels.PWM_PIN_D5, Pins.GPIO_PIN_D4, SecretLabs.NETMF.Hardware.Netduino.PWMChannels.PWM_PIN_D6, Pins.GPIO_PIN_D7); //led indicator if there is an object in the front of robot OutputPort WarningLed = new OutputPort(Pins.GPIO_PIN_D1, false); OutputPort GoLed = new OutputPort(Pins.GPIO_PIN_D2, false); //waiting till connect... if (!Microsoft.SPOT.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()[0].IsDhcpEnabled) { // using static IP while (!System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable()) { ; // wait for network connectivity } } else { // using DHCP while (IPAddress.GetDefaultLocalAddress() == IPAddress.Any) { ; // wait for DHCP-allocated IP address } } //Debug print our IP address Debug.Print("Device IP: " + Microsoft.SPOT.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()[0].IPAddress); // create mqtt client instance client = new MqttClient(IPAddress.Parse(MQTT_BROKER_ADDRESS)); string clientId = Guid.NewGuid().ToString(); client.Connect(clientId); SubscribeMessage(); PublishMessage("/robot/state", "ONLINE"); while (true) { long ticks = sensor.Ping(); if (ticks > 0L) { double inches = sensor.TicksToInches(ticks); Debug.Print("jarak ke object :" + inches); if (inches < 4) { jalan = Arah.Berhenti; Klakson.Write(true); WarningLed.Write(true); GoLed.Write(false); PublishMessage("/robot/status", "Watchout there is an object in the front of robot!"); } else { Klakson.Write(false); WarningLed.Write(false); GoLed.Write(true); } } //stop first before change direction or turn if (lastDirection != jalan) { //stop before start new direction MotorDriver.SetState(HBridge.Motors.Motor1, 0); MotorDriver.SetState(HBridge.Motors.Motor2, 0); } switch (jalan) { case Arah.Maju: MotorDriver.SetState(HBridge.Motors.Motor1, Speed); MotorDriver.SetState(HBridge.Motors.Motor2, Speed); break; case Arah.Mundur: MotorDriver.SetState(HBridge.Motors.Motor1, (sbyte)(-Speed)); MotorDriver.SetState(HBridge.Motors.Motor2, (sbyte)(-Speed)); break; case Arah.Kiri: MotorDriver.SetState(HBridge.Motors.Motor1, -50); MotorDriver.SetState(HBridge.Motors.Motor2, 50); break; case Arah.Kanan: MotorDriver.SetState(HBridge.Motors.Motor1, 50); MotorDriver.SetState(HBridge.Motors.Motor2, -50); break; case Arah.Berhenti: MotorDriver.SetState(HBridge.Motors.Motor1, 0); MotorDriver.SetState(HBridge.Motors.Motor2, 0); break; } lastDirection = jalan; } }
public static void Main() { //distance sensor //triger (12), echo (13), 5V + G HC_SR04 sensor = new HC_SR04(Pins.GPIO_PIN_D12, Pins.GPIO_PIN_D13); //buzzer OutputPort Klakson = new OutputPort(Pins.GPIO_PIN_D0, false); //motor driver HBridge MotorDriver = new HBridge(SecretLabs.NETMF.Hardware.Netduino.PWMChannels.PWM_PIN_D5, Pins.GPIO_PIN_D4, SecretLabs.NETMF.Hardware.Netduino.PWMChannels.PWM_PIN_D6, Pins.GPIO_PIN_D7); //led indicator if there is an object in the front of robot OutputPort WarningLed = new OutputPort(Pins.GPIO_PIN_D1, false); OutputPort GoLed = new OutputPort(Pins.GPIO_PIN_D2, false); //waiting till connect... if (!Microsoft.SPOT.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()[0].IsDhcpEnabled) { // using static IP while (!System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable()) ; // wait for network connectivity } else { // using DHCP while (IPAddress.GetDefaultLocalAddress() == IPAddress.Any) ; // wait for DHCP-allocated IP address } //Debug print our IP address Debug.Print("Device IP: " + Microsoft.SPOT.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()[0].IPAddress); // create mqtt client instance client = new MqttClient(IPAddress.Parse(MQTT_BROKER_ADDRESS)); string clientId = Guid.NewGuid().ToString(); client.Connect(clientId); SubscribeMessage(); PublishMessage("/robot/state", "ONLINE"); while (true) { long ticks = sensor.Ping(); if (ticks > 0L) { double inches = sensor.TicksToInches(ticks); Debug.Print("jarak ke object :" + inches); if (inches < 4) { jalan = Arah.Berhenti; Klakson.Write(true); WarningLed.Write(true); GoLed.Write(false); PublishMessage("/robot/status", "Watchout there is an object in the front of robot!"); } else { Klakson.Write(false); WarningLed.Write(false); GoLed.Write(true); } } //stop first before change direction or turn if (lastDirection != jalan) { //stop before start new direction MotorDriver.SetState(HBridge.Motors.Motor1, 0); MotorDriver.SetState(HBridge.Motors.Motor2, 0); } switch (jalan) { case Arah.Maju: MotorDriver.SetState(HBridge.Motors.Motor1, Speed); MotorDriver.SetState(HBridge.Motors.Motor2, Speed); break; case Arah.Mundur: MotorDriver.SetState(HBridge.Motors.Motor1,(sbyte)(-Speed)); MotorDriver.SetState(HBridge.Motors.Motor2, (sbyte)(-Speed)); break; case Arah.Kiri: MotorDriver.SetState(HBridge.Motors.Motor1, -50); MotorDriver.SetState(HBridge.Motors.Motor2, 50); break; case Arah.Kanan: MotorDriver.SetState(HBridge.Motors.Motor1, 50); MotorDriver.SetState(HBridge.Motors.Motor2, -50); break; case Arah.Berhenti: MotorDriver.SetState(HBridge.Motors.Motor1, 0); MotorDriver.SetState(HBridge.Motors.Motor2, 0); break; } lastDirection = jalan; } }
static void client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e) { string Message = new string(Encoding.UTF8.GetChars(e.Message)); if (Message.IndexOf(":") < 1) return; // handle message received Debug.Print("Message Received = " + Message); string[] CmdStr = Message.Split(':'); if (CmdStr[0] == "MOVE") { switch (CmdStr[1]) { case "Forward": jalan = Arah.Maju; break; case "Backward": jalan = Arah.Mundur; break; case "Left": jalan = Arah.Kiri; break; case "Right": jalan = Arah.Kanan; break; case "Stop": jalan = Arah.Berhenti; break; } if (lastDirection == jalan) { if (Speed == 0) Speed = HalfSpeed; else Speed = FullSpeed; } else { Speed = HalfSpeed; } PublishMessage("/robot/status", "Robot Status:" + CmdStr[1]); } else if(CmdStr[0]=="REQUEST" && CmdStr[1]=="STATUS") { PublishMessage("/robot/state", "ONLINE"); } }