Search This Blog

Showing posts with label games. Show all posts
Showing posts with label games. Show all posts

Monday, 15 July 2013

La programación como medio creativo

kodu2

Kodu es un nuevo lenguaje de programación visual hecho específicamente para la creación de juegos. Está diseñado para ser accesible a los niños y agradable para todos.
El entorno de programación se ejecuta en la Xbox, que permite una rápida iteración de diseño utilizando sólo un dispositivo de juego para la entrada.
El núcleo del proyecto Kodu es la interfaz de usuario de programación. El lenguaje es simple y totalmente basada en iconos. Los programas se componen de páginas, que se desglosan en las normas, que se dividen en las condiciones y acciones. Las condiciones se evalúan simultáneamente.
El lenguaje de Kodu está diseñado específicamente para el desarrollo del juego y proporciona primitivas especializados derivados de escenarios de juego. Los programas se expresan en términos físicos, utilizando conceptos como la visión, el oído, y el tiempo para controlar el comportamiento de carácter. Aunque no es tan de uso general como los lenguajes de programación clásica, Kodu puede expresar conceptos avanzados de diseño de juegos de una manera simple, directa e intuitiva

kodu1

http://research.microsoft.com/en-us/projects/kodu/

Deja un comentario








    Sunday, 30 June 2013

    MS Small Basic: ¿Qué es una detección de colisiones? (código)

    colision1

    En general, la detección de colisiones trata de cómo determinar la intersección de dos objetos en movimiento.
    La detección de colisiones en los juegos necesita de los siguientes pasos:
    •  Selección de dos objetos para la prueba de colisión.
    •  Comprobación de si se produjo una colisión entre los objetos identificados o no.
    • Se dice que dos objetos chocan cuando entran en contacto el uno con el otro. Los objetos pueden moverse después del choque o pueden detenerse, dependiendo del tipo de colisión.
    La detección de colisión es un aspecto básico de los juego de dos y tres dimensiones. Los algoritmos ayudan a detectar la colisión. La mayoría de juegos utilizan detección de colisiones una vez que esta se ha producido.
    El siguiente juego contiene dos objetos: la tortuga y el objetivo. El jugador tiene que hacer que la tortuga golpee el objetivo, introduciento para ello el ángulo correcto y la distancia.
    Código:
    1. ‘ Copyright (c) Microsoft Corporation.  Todos los derechos reservados.
    2. GraphicsWindow.Hide()
    3. gw = 620
    4. gh = 450
    5. GraphicsWindow.BackgroundColor = “LightBlue”
    6. GraphicsWindow.CanResize = “False”
    7. GraphicsWindow.Width = gw
    8. GraphicsWindow.Height = gh
    9. GraphicsWindow.Top = ( Desktop.Height – gh ) / 2
    10. GraphicsWindow.Left = ( Desktop.Width – gw ) / 2
    11. GraphicsWindow.Title = “Dar en el blanco”
    12. GraphicsWindow.Show()
    13. Turtle.Hide()
    14. rx = 40
    15. ry = 20
    16. tortugaX = 315
    17. tortugaY = 300
    18. ancho = 550
    19. alto = 390
    20. CuadroPuntuaciónX = 400
    21. TeclaEntrar = “Return”
    22. diana = 10
    23. vidas = 3
    24. puntuación = 0
    25. GraphicsWindow.FontSize = 30
    26. GraphicsWindow.DrawText(10, 200, “¡Pulse ENTRAR para comenzar el juego!”)
    27. GraphicsWindow.KeyDown = AlPresionar
    28. Sub AlPresionar
    29. entrar = entrar + 1
    30. If GraphicsWindow.LastKey = TeclaEntrar And entrar = 1 Then
    31. GraphicsWindow.Clear()
    32. GraphicsWindow.FontSize = 12
    33. Interfaz()
    34. MoverFigura()
    35. MostrarPuntuación()
    36. Controls.ButtonClicked
      = Disparar
    37. EndIf 
    38. EndSub
    39. Sub Disparar
    40. ángulo = Math.Round(Controls.GetTextBoxText(ángulotexto))
    41. distancia = Math.Round(Controls.GetTextBoxText(distanciatexto))
    42. presionado = Controls.GetButtonCaption(Controls.LastClickedButton)
    43. If presionado = “Disparar” Then
    44. GraphicsWindow.PenWidth = 0
    45. Turtle.Angle = ángulo
    46. Turtle.Move(distancia)
    47. If Turtle.x > x and Turtle.x < x + 93 and Turtle.y > y and Turtle.y < y + 96 Then
    48. Shapes.HideShape(diana)
    49. puntuación = puntuación + 10
    50. MostrarPuntuación()
    51. Program.Delay(500)
    52. If diana = puntuación Then
      1. TerminarJuego()
      2. EndIf
      3. Controls.SetTextBoxText(ángulotexto, “”)
      4. Controls.SetTextBoxText(distanciatexto, “”)
      5. MoverFigura()
      6. Else
      7. Program.Delay(1000)
      8. If vidas > 1 Then
        1. GraphicsWindow.ShowMessage(“Haga clic en Aceptar para continuar el juego”,”Reintentar”)
        2. presionado = “Reintentar”
        3. Else     
          1. TerminarJuego()
          2. EndIf   
          3. EndIf        
          4. EndIf 
    53. If presionado = “Reintentar” Then   
    54. vidas = vidas – 1
    55. If puntuación >= 10 Then
    56. puntuación = puntuación – 5
    57. EndIf   
    58. MostrarPuntuación()
    59. Controls.SetTextBoxText(ángulotexto, “”)
    60. Controls.SetTextBoxText(distanciatexto, “”)
    61. MoverFigura()
    62. If vidas < 1 Then
    63. TerminarJuego()
    64. EndIf   
    65. EndIf
    66. EndSub
    67. Sub Interfaz
    68. imagen = Program.Directory + “\dibujo.png”
    69. GraphicsWindow.DrawRectangle(rx, ry, ancho, alto)
    70. diana = Shapes.AddImage(imagen)
    71. GraphicsWindow.BrushColor = “Black”
    72. Shapes.Move(diana, 100, 50)
    73. Turtle.Show()
    74. Turtle.X = tortugaX
    75. Turtle.y = tortugaY
    76. Turtle.Angle = 0
    77. GraphicsWindow.DrawText(rx + 5, alto – 10, “Ángulo:”)
    78. ángulotexto = Controls.AddTextBox(tortugaX - 205, tortugaY + 70)
    79. Controls.SetSize(ángulotexto, 40, 30)
    80. GraphicsWindow.DrawText(rx + 140, alto – 10, “Distancia:”)
    81. distanciatexto = Controls.AddTextBox(tortugaX - 60, tortugaY + 70)
    82. Controls.SetSize(distanciatexto, 40, 30)
    83. firebutton = Controls.AddButton(“Disparar”, tortugaX + 20, tortugaY + 70)
    84. Controls.SetSize(firebutton, 80, 30)
    85. Endsub
    86. Sub MoverFigura
    87. Shapes.ShowShape(diana)
    88. Turtle.x = tortugaX
    89. Turtle.Y = tortugaY
    90. Turtle.Angle = 0
    91. x = Math.GetRandomNumber(450)
    92. y = Math.GetRandomNumber(80)
    93. If x <= 40 Then
    94. x = 40
    95. Shapes.Animate(diana, x, y, 1000)
    96. ElseIf y <= 20 Then
    97. y = 20
    98. Shapes.Animate(diana, x, y, 1000)
    99. Else 
    100. Shapes.Animate(diana, x, y, 1000)
    101. EndIf
    102. EndSub
    103. Sub TerminarJuego
    104. GraphicsWindow.ShowMessage(“Puntuación: ” + puntuación, “FIN”)
    105. Program.End()
    106. EndSub
    107. Sub MostrarPuntuación
    108. GraphicsWindow.FontSize = 14
    109. GraphicsWindow.BrushColor = “Gray”
    110. GraphicsWindow.FillRectangle(CuadroPuntuaciónX + 50, CuadroPuntuaciónX – 65, 135, 70)
    111. GraphicsWindow.BrushColor = “White”
    112. GraphicsWindow.DrawText(CuadroPuntuaciónX + 60, CuadroPuntuaciónX – 55, “Puntuación: “)
    113. GraphicsWindow.DrawText(CuadroPuntuaciónX + 150, CuadroPuntuaciónX – 55, puntuación)
    114. GraphicsWindow.DrawText(CuadroPuntuaciónX + 60, CuadroPuntuaciónX – 20, “Vidas: “)
    115. GraphicsWindow.DrawText(CuadroPuntuaciónX + 110, CuadroPuntuaciónX – 20, vidas)
    116. EndSub

    Deja un comentario