public MainWindow() { InitializeComponent(); timerPuntos = new DispatcherTimer(); timeSpanMS = 2500; timeSpan = new TimeSpan(0, 0, 0, 0, timeSpanMS); timerPuntos.Interval = timeSpan; timerPuntos.Tick += new EventHandler(Timer_Tick); timerPuntos.IsEnabled = true; timerAceleracion = new DispatcherTimer(); timerAceleracion.Interval = new TimeSpan(0, 0, 0, 0, 5000); timerAceleracion.Tick += new EventHandler(Timer_Tick_Acelerar); timerAceleracion.IsEnabled = true; disponibles = new Queue <int>(); setPuntos(); setVidasImg(); Kinect_Config(); for (int i = 0; i < puntos.Length; i++) { puntosObj[i].dAlto = puntos[i].Height; puntosObj[i].dAncho = puntos[i].Width; } manoDerecha.dPosX = (double)PunteroR.GetValue(Canvas.LeftProperty); manoDerecha.dPosY = (double)PunteroR.GetValue(Canvas.TopProperty); manoDerecha.dAlto = PunteroR.Height; manoDerecha.dAncho = PunteroR.Width; manoIzquierda.dPosX = (double)PunteroL.GetValue(Canvas.LeftProperty); manoIzquierda.dPosY = (double)PunteroL.GetValue(Canvas.TopProperty); manoIzquierda.dAlto = PunteroL.Height; manoIzquierda.dAncho = PunteroL.Width; vidas = 5; puntajeContador = 0; }
/* -- Área para el método que utiliza los datos proporcionados por Kinect -- */ /// <summary> /// Método que realiza las manipulaciones necesarias sobre el Skeleton trazado /// </summary> private void usarSkeleton(Skeleton skeleton) { Joint joint1 = skeleton.Joints[JointType.HandRight]; Joint joint2 = skeleton.Joints[JointType.HandLeft]; //Agregacion de leftHand // Si el Joint está listo obtener las coordenadas if (joint1.TrackingState == JointTrackingState.Tracked) { // Obtener coordenadas joint_Point = this.SkeletonPointToScreen(joint1.Position); dMano_X = joint_Point.X; dMano_Y = joint_Point.Y; // Modificar coordenadas del indicador que refleja el movimiento (Ellipse rojo) PunteroR.SetValue(Canvas.TopProperty, dMano_Y - 12.5); PunteroR.SetValue(Canvas.LeftProperty, dMano_X - 12.5); manoDerecha.dPosX = dMano_X; manoDerecha.dPosY = dMano_Y; // Indicar Id de la persona que es trazada LID.Content = skeleton.TrackingId; } if (joint2.TrackingState == JointTrackingState.Tracked) { // Obtener coordenadas joint_Point = this.SkeletonPointToScreen(joint2.Position); lMano_X = joint_Point.X; lMano_Y = joint_Point.Y; // Modificar coordenadas del indicador que refleja el movimiento (Ellipse rojo) PunteroL.SetValue(Canvas.TopProperty, lMano_Y - 12.5); PunteroL.SetValue(Canvas.LeftProperty, lMano_X - 12.5); manoIzquierda.dPosX = lMano_X; manoIzquierda.dPosY = lMano_Y; // Indicar Id de la persona que es trazada LID.Content = skeleton.TrackingId; } // COLISIONES CHECK //Colision MR con Rojo for (int i = 0; i < puntos.Length; i++) { if (checarColision(puntosObj[i], manoDerecha)) { SystemSounds.Hand.Play(); puntosObj[i].dPosX = -MainCanvas.Width * 1.2; puntos[i].SetValue(Canvas.LeftProperty, -MainCanvas.Width * 1.2); puntos[i].Opacity = 0; disponibles.Enqueue(i); if (puntos[i].Fill == colorDerecha) { puntajeContador++; } else { puntajeContador--; } puntaje.Content = "Puntaje: " + puntajeContador; } if (checarColision(puntosObj[i], manoIzquierda)) { SystemSounds.Hand.Play(); puntosObj[i].dPosX = -MainCanvas.Width * 1.2;; puntos[i].SetValue(Canvas.LeftProperty, -MainCanvas.Width * 1.2); puntos[i].Opacity = 0; disponibles.Enqueue(i); if (puntos[i].Fill == colorIzquierda) { puntajeContador++; } else { puntajeContador--; } puntaje.Content = "Puntaje: " + puntajeContador; } } }