Search This Blog

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








    Thursday 27 June 2013

    Objeto Program

    Objeto Program

    program


    Cuando se crean programas y se trabaja con varios objetos y operaciones que ofrece en el entorno .NET, es posible que desee controlar la ejecución de su programa. Puede utilizar el objeto Program para manipular la forma en que su programa se ejecuta
    Puede controlar la ejecución de un programa mediante el objeto Program en Small Basic. Observe el ejemplo en pantalla.
    1. Primero, se usa la operación Directory para      mostrar el directorio actual del programa de ejecución. Para mostrar la      ruta al directorio, use el objeto TextWindow con la operación WriteLine.
    2. A continuación, para retrasar la ejecución      del programa por cinco segundos, se usa la operación Delay y se      define el parámetro de tiempo en milisegundos.
    3. La declaración Program.End() hace      que el programa termine.
    Revise los resultados del programa haciendo clic en el botón Ejecutar de la barra de herramientas o presionando la tecla F5. La ventana de texto muestra el directorio del programa y, después de un retraso de cinco segundos, el programa termina.


    TextWindow.WriteLine(“Carpeta del programa ” + Program.Directory)
    TextWindow.WriteLine(“Este programa se ejecuta durante 5 segundos.”)
    Program.Delay(5000)
    Program.End()


    Código Visual Basic graduado

    program1

    Deja un comentario