Crear videojuegos utilizando conceptos de Small Basic (código)


 A4

 Utilize GraphicsWindows para crear la interfaz del juego.

Utilize el objeto Shapes para crear el área del juego para las X y O en la ventana de gráficos.

Utilice eventos del mouse y condiciones como If-Else para mostrar las acciones realizadas por el usuario y el ordenador durante el juego.

 ________________________________________________________________________________________________________________

‘ Copyright (c) Microsoft Corporation.  Todos los derechos reservados.
GraphicsWindow.Hide()
anVent = 350
alVent = 350
 
cuadrículaX = 25
cuadrículaY = 25
tamañoCelda = 100
 
GraphicsWindow.CanResize = “False”
GraphicsWindow.Width = anVent
GraphicsWindow.Height = alVent
 
GraphicsWindow.Top = (Desktop.Height – alVent) / 2
GraphicsWindow.Left = (Desktop.Width – anVent) / 2
GraphicsWindow.Title = “Tres en raya”
GraphicsWindow.Show()
 
turnoJugador = “True”
GraphicsWindow.MouseMove = AlMoverMouse
GraphicsWindow.MouseDown = AlPulsarMouse
 
IniciarTablero()
 
bucleJuego:
ComprobarFinJuego()
If finalizado = “True” Then
  Goto TerminarJuego
EndIf
 
If turnoJugador = “True” Then
  Program.Delay(1000)
  Goto bucleJuego
EndIf
 
IntentarGanar()
If filaComp <> -1 And colComp <> -1 Then
  TurnoOrdenador()
  Goto comprobarJuego
EndIf
 
IntentarBloque()
If filaComp <> -1 And colComp <> -1 Then
  TurnoOrdenador()
  Goto comprobarJuego
EndIf
 
‘ Jugar en el centro
If celdas[1][1] = “” Then
  filaComp = 1
  colComp = 1
  TurnoOrdenador()
  Goto comprobarJuego
EndIf
 
‘ Elegir una esquina
ElegirEsquina()
If filaComp <> -1 And colComp <> -1 Then
  TurnoOrdenador()
  Goto comprobarJuego
EndIf
 
‘ Elegir una celda vacía
ElegirUna()
If filaComp <> -1 And colComp <> -1 Then
  TurnoOrdenador()
  Goto comprobarJuego
EndIf
 
comprobarJuego:
ComprobarFinJuego()
If finalizado <> “True” Then
  Goto bucleJuego
EndIf
 
TerminarJuego:
If ganaJugador = “True” Then
  GraphicsWindow.ShowMessage(“¡Ha ganado! Bien hecho.”, “FIN”)
  Program.End()
ElseIf ganaComp = “True” Then
  GraphicsWindow.ShowMessage(“¡Ha perdido! Suerte para la próxima vez.”, “FIN”)
  Program.End()
Else
  GraphicsWindow.ShowMessage(“¡Empate!”, “FIN”)
  Program.End()
EndIf
 
Sub IntentarGanar
  filaComp = -1
  colComp = -1
  For i = 0 to 2
    If celdas[i][0] = “O” And celdas[i][1] = “O” And celdas[i][2] = “” Then
      filaComp = i
      colComp = 2
    ElseIf celdas[i][0] = “O” And celdas[i][1] = “” And celdas[i][2] = “O” Then
      filaComp = i
      colComp = 1
    ElseIf celdas[i][0] = “” And celdas[i][1] = “O” And celdas[i][2] = “O” Then
      filaComp = i
      colComp = 0
    ElseIf celdas[0][i] = “O” And celdas[1][i] = “O” And celdas[2][i] = “” Then
      colComp = i
      filaComp = 2
    ElseIf celdas[0][i] = “O” And celdas[1][i] = “” And celdas[2][i] = “O” Then
      colComp = i
      filaComp = 1
    ElseIf celdas[0][i] = “” And celdas[1][i] = “O” And celdas[2][i] = “O” Then 
      colComp = i
      filaComp = 0
    EndIf   
  EndFor
  If celdas[0][0] = “O” And celdas[1][1] = “O” And celdas[2][2] = “” Then
    colComp = 2
    filaComp = 2
  ElseIf celdas[0][0] = “O” And celdas[1][1] = “” And celdas[2][2] = “O” Then
    colComp = 1
    filaComp = 1
  ElseIf celdas[0][0] = “” And celdas[1][1] = “O” And celdas[2][2] = “O” Then
    colComp = 0
    filaComp = 0
  EndIf
EndSub
 
Sub IntentarBloque
  filaComp = -1
  colComp = -1
  For i = 0 to 2
    If celdas[i][0] = “X” And celdas[i][1] = “X” And celdas[i][2] = “” Then
      filaComp = i
      colComp = 2
    ElseIf celdas[i][0] = “X” And celdas[i][1] = “” And celdas[i][2] = “X” Then
      filaComp = i
      colComp = 1
    ElseIf celdas[i][0] = “” And celdas[i][1] = “X” And celdas[i][2] = “X” Then
      filaComp = i
      colComp = 0
    ElseIf celdas[0][i] = “X” And celdas[1][i] = “X” And celdas[2][i] = “” Then
      colComp = i
      filaComp = 2
    ElseIf celdas[0][i] = “X” And celdas[1][i] = “” And celdas[2][i] = “X” Then
      colComp = i
      filaComp = 1
    ElseIf celdas[0][i] = “” And celdas[1][i] = “X” And celdas[2][i] = “X” Then 
      colComp = i
      filaComp = 0
    EndIf   
  EndFor
  If celdas[0][0] = “X” And celdas[1][1] = “X” And celdas[2][2] = “” Then
    colComp = 2
    filaComp = 2
  ElseIf celdas[0][0] = “X” And celdas[1][1] = “” And celdas[2][2] = “X” Then
    colComp = 1
    filaComp = 1
  ElseIf celdas[0][0] = “” And celdas[1][1] = “X” And celdas[2][2] = “X” Then
    colComp = 0
    filaComp = 0
  EndIf
EndSub
 
Sub ComprobarFinJuego
  For i = 0 to 2
    If celdas[i][0] = “X” And celdas[i][1] = “X” And celdas[i][2] = “X” Then
      ganaJugador = “True”
      finalizado = “True”
    ElseIf celdas[i][0] = “O” And celdas[i][1] = “O” And celdas[i][2] = “O” Then
      ganaComp = “True”
      finalizado = “True”
    ElseIf celdas[0][i] = “X” And celdas[1][i] = “X” And celdas[2][i] = “X” Then
      ganaJugador = “True”
      finalizado = “True”
    ElseIf celdas[0][i] = “O” And celdas[1][i] = “O” And celdas[2][i] = “O” Then
      ganaComp = “True”
      finalizado = “True”
    EndIf
  EndFor
  If celdas[0][0] = “X” And celdas[1][1] = “X” And celdas[2][2] = “X” Then
    ganaJugador = “True”
    finalizado = “True”
  ElseIf celdas[0][0] = “O” And celdas[1][1] = “O” And celdas[2][2] = “O” Then
    ganaComp = “True”
    finalizado = “True”
 ElseIf celdas[0][2] = “O” And celdas[1][1] = “O” And celdas[2][0] = “O” Then
     ganaComp = “True”
     finalizado = “True”  
  ElseIf celdas[0][2] = “X” And celdas[1][1] = “X” And celdas[2][0] = “X” Then
     ganaJugador = “True”
     finalizado = “True” 
  EndIf
 
  If finalizado <> “True” Then
    finalizado = “True”
    For i = 0 to 2
      For j = 0 To 2
        If celdas[i][j] = “” Then
          finalizado = “False”
        EndIf
      EndFor
    EndFor
  EndIf
EndSub
 
Sub ElegirEsquina
  If celdas[0][0] = “X” And celdas[2][2] = “” Then
    filaComp = 2
    colComp = 2
  ElseIf celdas[0][2] = “X” And celdas[2][0] = “” Then
    filaComp = 2
    colComp = 0
  ElseIf celdas[2][0] = “X” And celdas[0][2] = “” Then
    filaComp = 0
    colComp = 2
  ElseIf celdas[2][2] = “X” And celdas[0][0] = “” Then
    filaComp = 2
    colComp = 2
  ElseIf celdas[0][0] = “” Then
    filaComp = 0
    colComp = 0
  ElseIf celdas[0][2] = “” Then
    filaComp = 0
    colComp = 2
  ElseIf celdas[2][0] = “” Then
    filaComp = 2
    colComp = 0
  ElseIf celdas[2][2] = “” Then
    filaComp = 2
    colComp = 2
  EndIf
EndSub
 
Sub ElegirUna
  For i = 0 to 2
    For j = 0 To 2
      If celdas[i][j] = “” Then
        filaComp = i
        colComp = j
        Goto finElegirCualquiera
      EndIf
    EndFor
  EndFor
finElegirCualquiera:
EndSub
 
Sub TurnoOrdenador
  f = filaComp
  c = colComp
 
  celdas[f][c] = “O”
       
  GraphicsWindow.BrushColor = “Black”
  GraphicsWindow.FontSize = 40
  GraphicsWindow.FontBold = “False”
  textoCelda = Shapes.AddText(“O”)
  Shapes.Move(textoCelda, c * tamañoCelda + cuadrículaX + 40, f * tamañoCelda + cuadrículaY + 26)
  turnoJugador = “True”
EndSub
 
Sub AlPulsarMouse
  If turnoJugador = “True” Then
 
    mx = GraphicsWindow.MouseX
    my = GraphicsWindow.MouseY
    If mx > cuadrículaX And my > cuadrículaY And mx < (cuadrículaX + 3 * tamañoCelda) And my < (cuadrículaY + 3 * tamañoCelda) Then
      c = Math.Floor((mx – cuadrículaX) / tamañoCelda)
      f = Math.Floor((my – cuadrículaY) / tamañoCelda)
     
      If celdas[f][c] = “” Then
        celdas[f][c] = “X”
       
        GraphicsWindow.BrushColor = “Black”
        GraphicsWindow.FontSize = 40
        GraphicsWindow.FontBold = “False”
        textoCelda = Shapes.AddText(“X”)
        Shapes.Move(textoCelda, c * tamañoCelda + cuadrículaX + 40, f * tamañoCelda + cuadrículaY + 26)
        turnoJugador = “False”
      EndIf
    EndIf
  EndIf
EndSub
 
Sub AlMoverMouse
  If turnoJugador = “True” Then
    pistaMouse = “False”
    DrawCell()
   
    mx = GraphicsWindow.MouseX
    my = GraphicsWindow.MouseY
    If mx > cuadrículaX And my > cuadrículaY And mx < (cuadrículaX + 3 * tamañoCelda) And my < (cuadrículaY + 3 * tamañoCelda) Then
      col = Math.Floor((mx – cuadrículaX) / tamañoCelda)
      fila = Math.Floor((my – cuadrículaY) / tamañoCelda)
 
      pistaMouse = “True”
      DrawCell()
    EndIf
  EndIf
EndSub
 
Sub IniciarTablero
  pistaMouse = “False”
  For col = 0 to 2
    For fila = 0 To 2
      DrawCell()
    EndFor
  EndFor
 
  fila = -1
  col = -1
EndSub
 
Sub DrawCell
  If fila >= 0 And col >= 0 And fila <= 2 And col <=2 Then
    x = col * tamañoCelda + cuadrículaX
    y = fila * tamañoCelda + cuadrículaY
     
    If pistaMouse = “True” Then
      GraphicsWindow.BrushColor = “Azure”
    Else
      GraphicsWindow.BrushColor = “White”
    EndIf
    GraphicsWindow.FillRectangle(x, y, tamañoCelda, tamañoCelda)
   
    GraphicsWindow.PenColor = “Black”
    GraphicsWindow.DrawRectangle(x, y, tamañoCelda, tamañoCelda)
  EndIf
EndSub
 
 

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