MS Small Basic: Juego “La pelota rebota…” (código)


a1

… en los bloques de color gris. Gana si se deshace de todos los bloques de colores

‘ Copyright (c) Microsoft Corporation. Todos los derechos reservados.

  1.  GraphicsWindow.Hide()
  2. GraphicsWindow.Height = 450
  3. GraphicsWindow.Width = 600
  4. GraphicsWindow.Top = ( Desktop.Height – 450 ) / 2
  5. GraphicsWindow.Left = ( Desktop.Width – 600 ) / 2
  6. GraphicsWindow.CanResize = “False”
  7. GraphicsWindow.Show()
  8. imgPaleta = Program.Directory + “\rectángulo.png”
  9. imgPelota =   Program.Directory + “\círculo.png”
  10. restantes  = 42
  11. yInicialBloq = 35
  12. CrearInterfazUsuario()
  13. golpes = 0
  14. GraphicsWindow.MouseMove = MouseAction
  15. For índice = 0 To 15
  16.   Array.SetValue(“bloquesRosados”, índice, 1)
  17.   Array.SetValue(“bloquesVioleta”, índice, 1)
  18.   Array.SetValue(“bloquesTurquesa”, índice, 1)
  19. Endfor
  20. InicializarBloques()
  21. puntuación = 0
  22. ShowScore()
  23. anVent = GraphicsWindow.Width
  24. alVent = GraphicsWindow.Height
  25. y = anVent – 28
  26. Shapes.Move(pelota, x, y)
  27. dX= 1
  28. dY =-2
  29. Bucle:
  30. x = x + dX
  31. y = y + dY
  32. If x >= anVent – 16 Or x <= 0 Then
  33.   dX= -dX
  34. EndIf
  35. If y <= 0 Then
  36.   dY = -dY
  37. EndIf 
  38. paletaX = Shapes.GetLeft(paleta)
  39. If y >= alVent – 28 + 2 And x >= paletaX And x <= paletaX + 70 Then
  40.   y = alVent – 28 + 2   
  41.   golpes = golpes + 1
  42.   If Math.Remainder(golpes, 3) = 0 Then
  43.     For índice = 0 To 15
  44.       HidePinkBrick()
  45.       HideVioletBrick()
  46.       HideAquaBrick()
  47.     Endfor
  48.     yInicialBloq = yInicialBloq + 20
  49.     InicializarBloques()
  50.   EndIf
  51.  
  52.   TestAqua:
  53.   For índice = 0 To 15
  54.     If Array.GetValue(“bloquesTurquesa”, índice) = 1 Then
  55.       If yInicialBloq > altoVentana – 160 Then
  56.         Goto EndGame
  57.       EndIf
  58.     EndIf
  59.   EndFor
  60.  
  61.   TestViolet:
  62.   For índice = 0 To 15
  63.     If Array.GetValue(“bloquesVioleta”, índice) = 1 Then
  64.       If yInicialBloq > altoVentana – 100 Then
  65.         Goto EndGame
  66.       EndIf
  67.     EndIf
  68.   EndFor
  69.   TestPink:
  70.   For índice = 0 To 15
  71.     If Array.GetValue(“bloquesRosados”, índice) = 1 Then
  72.       If yInicialBloq > altoVentana – 40 Then
  73.         Goto EndGame
  74.       EndIf
  75.     EndIf
  76.   EndFor
  77.   EndTest:
  78.   dX= dX- 2 + (x – paletaX) / 30
  79.   If puntuación = puntuaciónAnterior Then
  80.     If puntuación <> 0 Then
  81.       puntuación = puntuación – 1
  82.     EndIf
  83.   EndIf
  84.   puntuaciónAnterior = puntuación
  85.   ShowScore()
  86.   dY = -dY
  87. EndIf
  88. Shapes.Move(pelota, x, y)
  89. Program.Delay(5)
  90. If y > yInicialBloq – 16 And y < yInicialBloq + 20 Then
  91.   índice = (x+8) / 40
  92.   índice = Math.Floor(índice)
  93.   If Array.GetValue(“bloquesRosados”, índice) = 1 Then        
  94.     If índice=8 Then
  95.     Else
  96.       Array.SetValue(“bloquesRosados”, índice, 0)
  97.       HidePinkBrick()
  98.       restantes = restantes – 1
  99.       puntuación = puntuación + 15
  100.       ShowScore()
  101.     EndIf           
  102.     dY = -dY 
  103.     finJuego()     
  104.   EndIf
  105. EndIf
  106. If y > yInicialBloq + 44 And y < yInicialBloq + 80 Then
  107.   índice = (x + 8) / 40
  108.   índice = Math.Floor(índice)
  109.   If Array.GetValue(“bloquesVioleta”, índice) = 1 Then
  110.     If índice=4 Or índice=11 Then
  111.     Else 
  112.       Array.SetValue(“bloquesVioleta”, índice, 0)
  113.       HideVioletBrick()
  114.       restantes = restantes – 1
  115.       puntuación = puntuación + 10
  116.       ShowScore()
  117.     EndIf    
  118.     dY = -dY
  119.     finJuego()     
  120.   EndIf
  121. EndIf
  122. If y > yInicialBloq + 104 And y < yInicialBloq + 140 Then
  123.   índice = (x + 8) / 40 
  124.   índice = Math.Floor(índice)
  125.   If Array.GetValue(“bloquesTurquesa”, índice) = 1 Then
  126.     If índice = 2 Or índice = 7 Or índice = 13 Then
  127.     Else 
  128.       Array.SetValue(“bloquesTurquesa”, índice, 0)
  129.       HideAquaBrick()
  130.       puntuación = puntuación + 5
  131.       ShowScore()
  132.       restantes = restantes – 1
  133.     EndIf 
  134.     dY = -dY 
  135.     finJuego()
  136.   EndIf
  137. EndIf
  138. If y < altoVentana Then
  139.   Goto Bucle
  140. EndIf 
  141. EndGame:
  142. GraphicsWindow.ShowMessage(“Su puntuación es: ” + puntuación, “FIN”)
  143. Program.End()
  144. Sub CrearInterfazUsuario
  145.   GraphicsWindow.Title = “Juego de paletas”
  146.   GraphicsWindow.FontSize = 14
  147.   paleta = Shapes.AddImage(imgPaleta)
  148.   pelota = Shapes.AddImage(imgPelota)
  149. EndSub
  150. Sub MouseAction
  151.   paletaX = GraphicsWindow.MouseX 
  152.   Shapes.Move(paleta, paletaX – 10, GraphicsWindow.Height – 14)
  153. EndSub
  154. Sub ShowScore
  155.   GraphicsWindow.BrushColor = “White”
  156.   GraphicsWindow.FillRectangle(520, 10, 200, 20)
  157.   GraphicsWindow.BrushColor = “Black”
  158.   GraphicsWindow.DrawText(500, 10, “Puntuación: ” + puntuación)
  159. EndSub
  160. Sub InicializarBloques 
  161.   For índice = 0 To 15    
  162.     If índice = 8 Then
  163.       GraphicsWindow.PenColor = “Black”
  164.       GraphicsWindow.BrushColor = “Gray”
  165.     Else
  166.       If Array.GetValue(“bloquesRosados”, índice) = 1 Then
  167.         GraphicsWindow.PenColor = “Black”
  168.         GraphicsWindow.BrushColor = “Pink”
  169.       Else
  170.         GraphicsWindow.PenColor = “White”
  171.         GraphicsWindow.BrushColor = “White”
  172.       EndIf
  173.     EndIf
  174.    
  175.     GraphicsWindow.FillRectangle(índice * 40, yInicialBloq, 40, 20)
  176.     GraphicsWindow.DrawRectangle(índice * 40, yInicialBloq, 40, 20)
  177.    
  178.     GraphicsWindow.BrushColor = “Violet”
  179.    
  180.     If índice = 4 Or índice=11 Then
  181.       GraphicsWindow.PenColor = “Black”
  182.       GraphicsWindow.BrushColor = “Gray”
  183.     Else
  184.       If Array.GetValue(“bloquesVioleta”, índice) = 1 Then
  185.         GraphicsWindow.PenColor = “Black”
  186.         GraphicsWindow.BrushColor = “Violet”
  187.       Else
  188.         GraphicsWindow.PenColor = “White”
  189.         GraphicsWindow.BrushColor = “White”
  190.       EndIf
  191.     EndIf
  192.    
  193.     GraphicsWindow.FillRectangle(índice * 40, yInicialBloq + 60, 40, 20)
  194.     GraphicsWindow.DrawRectangle(índice * 40, yInicialBloq + 60, 40, 20)
  195.    
  196.     GraphicsWindow.BrushColor = “Aqua”
  197.     If índice = 2 Or índice = 7 Or índice = 13 Then
  198.       GraphicsWindow.PenColor = “Black”
  199.       GraphicsWindow.BrushColor = “Gray”
  200.     Else
  201.       If Array.GetValue(“bloquesTurquesa”, índice) = 1 Then
  202.         GraphicsWindow.PenColor = “Black”
  203.         GraphicsWindow.BrushColor = “Aqua”
  204.       Else
  205.         GraphicsWindow.PenColor = “White”
  206.         GraphicsWindow.BrushColor = “White”
  207.       EndIf
  208.     EndIf
  209.     GraphicsWindow.FillRectangle(índice * 40, yInicialBloq + 120, 40, 20)
  210.     GraphicsWindow.DrawRectangle(índice * 40, yInicialBloq + 120, 40, 20)
  211.   EndFor
  212. EndSub
  213. Sub HidePinkBrick
  214.   GraphicsWindow.PenColor = “White”
  215.   GraphicsWindow.BrushColor = “White”
  216.   GraphicsWindow.FillRectangle(índice * 40, yInicialBloq, 40, 20)
  217.   GraphicsWindow.DrawRectangle(índice * 40, yInicialBloq, 40, 20)
  218. EndSub
  219. Sub HideVioletBrick
  220.   GraphicsWindow.PenColor = “White”
  221.   GraphicsWindow.BrushColor = “White”
  222.   GraphicsWindow.FillRectangle(índice * 40, yInicialBloq + 60, 40, 20)
  223.   GraphicsWindow.DrawRectangle(índice * 40, yInicialBloq + 60, 40, 20)
  224. EndSub
  225. Sub HideAquaBrick
  226.   GraphicsWindow.PenColor = “White”
  227.   GraphicsWindow.BrushColor = “White”
  228.   GraphicsWindow.FillRectangle(índice * 40, yInicialBloq + 120, 40, 20)
  229.   GraphicsWindow.DrawRectangle(índice * 40, yInicialBloq + 120, 40, 20)
  230. EndSub
  231. Sub finJuego
  232.   If restantes = 0 Then
  233.     GraphicsWindow.ShowMessage(“¡Bien hecho! Su puntuación es: ” + puntuación, “FIN”)
  234.     Program.End()  
  235.   EndIf
  236. EndSub
  237.  

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s