Juego del Reloj - Mejorado.

Ir abajo

Juego del Reloj - Mejorado.

Mensaje por Toyz el 1/8/2016, 5:21 pm


Necesitarán ver este thread: http://www.servers-argentum.org/t35741-juego-del-reloj

Código mejorado:

Código:
Option Explicit

Private Type tPlayer
 
    Ganadas As Integer
    Perdidas As Integer
    Partidas As Long
    Racha As Integer
    MejorRacha As Integer
    PeorRacha As Integer
    MalaRacha As Integer
    WinRatio As Double
 
End Type

Private Type tReloj

    Velocidad As Byte
    Elegido As Byte
    Rotacion As Byte
    Player As tPlayer

End Type

Private Reloj As tReloj
'_
 
Private Sub Command1_Click()
 
    If Timer1.Enabled = False Then
 
        Command1.Caption = "Stop"
   
        If Not IsNumeric(Text1.Text) Then 'Si no es un número nos saca del juego.
            MsgBox ("Tenés que escribir un número."), vbCritical, "ERROR"
            Text1.Text = ""
            Exit Sub
        End If
   
        If Text1.Text > 12 Or Text1.Text <= 0 Then 'Si es mayor o menor a 12 nos saca inicia el juego
            MsgBox ("Tenés que elegir un número menor a 12 o mayor a 1"), vbCritical, "ERROR"
            Text1.Text = ""
            Exit Sub
        End If
   
        With Reloj
   
          .Player.Partidas = .Player.Partidas + 1
       
          Label6.Caption = "Partidas jugadas: " & .Player.Partidas
       
          Elegido = Val(Text1.Text) 'le asignamos el número que elegimos y lo transformamos en byte.
       
          Label3.Caption = "Número elegido: " & .Elegido 'le decimos que número eligió, por si se olvida.
       
          Call Pintar(vbRed) 'pintamos
       
          Timer1.Enabled = True 'activamos la rotación
   
      Else
       
          Command1.Caption = "Start"
       
          Timer1.Enabled = False  ' paramos la rotación
       
          ' partidas = Ganadas + Perdidas
       
          If .Elegido = .Rotacion Then ' Si el número que elegimos es el que quedó pintado en el reloj:
           
              .Player.Ganadas = .Player.Ganadas + 1 'incremetamos las veces que ganó
           
              Label13.Caption = "Victorias: " & .Player.Ganadas
              .Player.Racha = .Player.Racha + 1
           
              If .Player.MejorRacha < .Player.Racha Then
                  .Player.MejorRacha = .Player.Racha
              End If
           
              .Player.MalaRacha = 0
           
          Else
           
              .Player.Perdidas = .Player.Perdidas + 1 'incrementamos las veces que perdió
              .Player.MalaRacha = .Player.MalaRacha + 1
           
              If .Player.PeorRacha < .Player.MalaRacha Then
                  .Player.PeorRacha = .Player.MalaRacha
              End If
           
              Label14.Caption = "Derrotas: " & .Player.Perdidas 'lo ponemos en el label
              .Player.Racha = 0
           
          End If
   
          .Player.WinRatio = FormatNumber((.Player.Ganadas / .Player.Partidas) * 100, 2)
       
          Label2.Caption = "WinRatio: % " & .Player.WinRatio
       
          If .Player.Racha > 2 Then
              Label4.Caption = "Estás en racha, vas ganando " & .Player.Racha & " seguidas"
              Label4.Visible = True
           
          Else
              Label4.Visible = False
          End If
       
          If .Player.MalaRacha > 2 Then
              Label8.Caption = "Estás en mala racha, vas perdiendo " & .Player.MalaRacha & " veces seguidas."
              Label8.Visible = True
           
          Else
              Label8.Visible = False
          End If
       
          Label5.Caption = "Más victorias consecutivas: " & .Player.MejorRacha
       
          ' Timer1.Enabled = True
       
          If .Player.PeorRacha > 2 Then
       
              Label7.Caption = "Más derrotas consecutivas: " & .Player.PeorRacha
       
          End If
       
       
          .Rotacion = RandomNumber(1, 3) 'Cuando paramos siempre va a iniciar en 1, por lo tanto _
                                          si elegímos 1 y apretamos muchas veces stop - start - stop _
                                          siempre va a ganar. Para eso puse el RandomNumber. _
                                          Ahora empieza aleatoriamente entre 1 o 3
                           
          .Velocidad = 10 'no poner valores mayores a 255 _
                          Esto sirve para que empiece más rápido
          Timer1.Interval = .Velocidad 'actualizamos el nuevo intervalo
      End If
   
    End With
   
End Sub


Private Sub reset_Click()

    With Reloj.Player

        .WinRatio = 0
        .Racha = 0
        .MejorRacha = 0
        .PeorRacha = 0
        .MalaRacha = 0
        .Partidas = 0
        .Ganadas = 0
        .Perdidas = 0

    End With

    With Reloj

        .Rotacion = 0
        .Velocidad = 10
        .Elegido = 0
        .Rotacion = 0

    End With
   
    Label13.Caption = ""
    Label14.Caption = ""

    Text1.Text = ""
    Label3.Caption = ""

    Timer1.Enabled = False

    Call Pintar(vbWhite)

    Label6.Caption = ""
    Label7.Caption = ""
    Label5.Caption = ""
    Label2.Caption = ""
    Label13.Caption = ""
    Label14.Caption = ""

    Command1.Caption = "Start"

End Sub
 
Private Sub Form_Load()
 
    Reset.Caption = "Reset"
    Velocidad = 10 'no poner valores mayoreas a 255
    Timer1.Interval = Velocidad 'Acá determinamos a la velocidad que queremos que vaya la rotación
 
End Sub
 
Private Sub Timer1_Timer()
   
    With Reloj
   
      'Print Velocidad
      If .Rotacion = 12 Then 'si rotación llega a 12, lo hacemos volver a 0
          .Rotacion = 0 'RandomNumber(1, 3)
      End If
   
        If Rotacion = 6 Then 'cuando va por el número 6 le ponemos de vuelta la velocidad normal.
          'Velocidad Anterior: 10
       
          .Velocidad = 50 'no poner valores mayoreas a 255
          Timer1.Interval = .Velocidad 'actualizamos el nuevo intervalo
      End If
   
      .Rotacion = .Rotacion + 1
   
      Label1(.Rotacion).ForeColor = vbGreen 'Le hacemos el 'efecto' de rotación
   
      If .Rotacion > 2 Then 'Si supera a 2 le damos el color rojo al anterior
   
          Label1(.Rotacion - 1).ForeColor = vbRed
       
      End If
   
      If .Rotacion = 2 Then 'Si la rotacion llega a 2, le damos el color rojo al 1.
   
          Label1(1).ForeColor = vbRed
   
      End If
   
      If .Rotacion > 0 And .Rotacion < 5 Then 'Si la rotación llega a 1, le damos el color rojo al 12.
   
          Label1(12).ForeColor = vbRed
   
      End If
 
    End With
 
End Sub
 
Private Sub Pintar(ByVal color As String)
 
    Dim i As Long
 
    For i = 1 To 12 'bucle para pintar los labels
 
        Label1(i).ForeColor = color 'pintamos
   
    Next i
 
End Sub
 
Private Function RandomNumber(ByVal LowerBound As Long, ByVal UpperBound As Long) As Long
    'Randomize Timer
    'Función sacada del AO.
    RandomNumber = (UpperBound - LowerBound) * Rnd + LowerBound
 
End Function
 

También le agregué algunas cosas.

avatar
Toyz
Administrador
Administrador

¿BANEADO? : No.
Premios :
[1er puesto] Usuario del año 2016
Cantidad de envíos : 5045
Edad : 17
Localización : Global.
Fecha de inscripción : 28/09/2014

Ver perfil de usuario

Volver arriba Ir abajo

Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.