Microsoft Small Basic

Program Listing: BXS854
GraphicsWindow.CanResize=1
GraphicsWindow.BackgroundColor = "Yellow"
GraphicsWindow.Width="750"
GraphicsWindow.Title = "BasicFútbol Ver. 2.0 - Roberto García Iriarte - 2018"
GraphicsWindow.FontBold = "true"
GraphicsWindow.DrawText (265,0,"BIENVENIDO A LA APP 'BasicFútbol'")
GraphicsWindow.FontBold = "false"
GraphicsWindow.DrawText (5,20,"Introduce los siguientes datos y te daré el resultado más probable del partido; dichos datos pueden encontrarse en:")
GraphicsWindow.DrawText (5,40,"http://www.marca.com/futbol/primera-division/clasificacion.html")
GraphicsWindow.FontItalic = "true"
GraphicsWindow.DrawText (5,60,"NOTA: Los algoritmos de esta App son fiables tras al menos 5 partidos jugados.")
GraphicsWindow.DrawText (275,400,"roberto.garcia.iriarte@gmail.com")
GraphicsWindow.FontItalic = "false"
GraphicsWindow.FontBold = "true"
Controls.ButtonClicked = buttClicked


okButton = Controls.AddButton ("Calcula resultado", 305, 280)
resetButton = Controls.AddButton ("Vaciar campos", 315, 320)
closeButton = Controls.AddButton ("Salir", 343, 360)
GraphicsWindow.FontBold = "false"

GraphicsWindow.BrushColor = "Red"

GraphicsWindow.DrawText (5,100,"Equipo local: ")
el = Controls.AddTextBox (280,100)

GraphicsWindow.DrawText (5,120,"Equipo visitante: ")
ev = Controls.AddTextBox (280,120)

GraphicsWindow.DrawText (5,140,"Partidos jugados en casa del equipo local: ")
pjel = Controls.AddTextBox (280,140)

GraphicsWindow.DrawText (5,160,"Goles a favor en casa del equipo local: ")
gfel = Controls.AddTextBox (280,160)

GraphicsWindow.DrawText (5,180,"Goles en contra en casa del equipo local: ")
gcel = Controls.AddTextBox (280,180)

GraphicsWindow.DrawText (5,200,"Partidos jugados fuera del equipo visitante: ")
pjev = Controls.AddTextBox (280,200)

GraphicsWindow.DrawText (5,220,"Goles a favor fuera del equipo visitante: ")
gfev = Controls.AddTextBox (280,220)

GraphicsWindow.DrawText (5,240,"Goles en contra fuera del equipo visitante: ")
gcev = Controls.AddTextBox (280,240)


Sub buttClicked

lastButton = Controls.LastClickedButton
If lastButton = okButton Then
If (Controls.GetTextBoxText(el)) = "" Or (Controls.GetTextBoxText(ev)) = "" Or (Controls.GetTextBoxText(pjel)) = "" Or (Controls.GetTextBoxText(gfel)) = "" Or (Controls.GetTextBoxText(gcel)) = "" Or (Controls.GetTextBoxText(pjev)) = "" Or (Controls.GetTextBoxText(gfev)) = "" Or (Controls.GetTextBoxText(gcev)) = "" Then
GraphicsWindow.ShowMessage("Por favor, cerciórate que has rellenado todos los campos.","Error") 'Aquí chequeo que ningún campo esté vacío.

Else
If (Controls.GetTextBoxText(pjel)) > 0 And (Controls.GetTextBoxText(pjev)) > 0 Then
If (Controls.GetTextBoxText(gfel)+0 = Controls.GetTextBoxText(gfel) And Controls.GetTextBoxText(gcel)+0 = Controls.GetTextBoxText(gcel) And Controls.GetTextBoxText(gfev)+0 = Controls.GetTextBoxText(gfev) And Controls.GetTextBoxText(gcev)+0 = Controls.GetTextBoxText(gcev)) Then
basicfutbol() 'Antes pregunto si los campos que deben llevar dígitos, realmente llevan dígitos y no por ejemplo letras. Tamibén que los partidos jugados no lleven cero porque si no, da error de dividor por cero. Si todo es OK, ya ejecuto el proceso 'basicfutbol() que realiza los algoritmos y muestra el resultado.

Else
GraphicsWindow.ShowMessage("Hay campos que solo deben cumplimentarse con dígitos.","Error")
EndIf
Else
GraphicsWindow.ShowMessage("En 'Partidos jugados' de indicarse '1' o superior.","Error")
EndIf
EndIf

ElseIf lastButton = resetButton Then

'dejo los campos de entrada de text vacíos
Controls.SetTextBoxText(el,"")
Controls.SetTextBoxText(ev,"")
Controls.SetTextBoxText(pjel,"")
Controls.SetTextBoxText(gfel,"")
Controls.SetTextBoxText(gcel,"")
Controls.SetTextBoxText(pjev,"")
Controls.SetTextBoxText(gfev,"")
Controls.SetTextBoxText(gcev,"")


ElseIf lastButton = closeButton Then
Program.End()

EndIf


EndSub


Sub basicfutbol
'algoritmos

gfelpp = Controls.GetTextBoxText(gfel)/Controls.GetTextBoxText(pjel) 'defino una nueva variable (gfelpp) donde obtengo media de goles a favor por partido jugado del equipo local solo como local
gcelpp = Controls.GetTextBoxText(gcel)/Controls.GetTextBoxText(pjel) 'defino una nueva variable (gcelpp) donde obtengo media de goles en contra por partido del equipo local solo como local

gfevpp = Controls.GetTextBoxText(gfev)/Controls.GetTextBoxText(pjev) 'defino una nueva variable (gfevpp) donde obtengo media de goles a favor por partido del equipo visitante solo como visitante
gcevpp = Controls.GetTextBoxText(gcev)/Controls.GetTextBoxText(pjev) 'defino una nueva variable (gcevpp) donde obtengo media de goles en contra por partido del equipo visitante solo como visitante

rgfel_decimales = (gfelpp + gcevpp) / 2 ' defino una nueva variable (rgfel_decimales) donde obtengo resultado de los goles que meterá el equipo local. Sumo gf del equipo local como local y gc del equipo visitante como visitante y divido entre 2.
rgfev_decimales = (gcelpp + gfevpp) / 2 ' defino una nueva variable (rgfev_decimales) donde obtengo resultado de los goles que meterá el equipo visitante. Sumo gf del equipo visitante como visitante y gc del equipo local como local y divido entre 2.

rgfel = Math.Round(rgfel_decimales) 'defino una nueva variable (rgfel) ya que como puede dar decimales, para dar un resultado real de partido de fútbol, redondeo. (p.ej. si da 2,4 o menos, quedará 2; si es 2,5 o más, quedará 3)
rgfev = Math.Round(rgfev_decimales) 'defino una nueva variable (rgfev) ya que como puede dar decimales, para dar un resultado real de partido de fútbol, redondeo. (p.ej. si da 2,4 o menos, quedará 2; si es 2,5 o más, quedará 3)

texto_resumen =""
If rgfel > rgfev Then 'pregunto si el resultado del equipo local es superior al del equipo visitante y, si es así, procedo:
texto_resumen = "Victoria por tanto del " + el + " en su estadio. En la Quiniela sería un '1'."

Else 'si el resultado del equipo local no es superior al del equipo visitante hago una nueva pregunta:
If rgfel = rgfev Then 'pregunto si el resultado de uno y de otro es igual y, si es así, procedo:
texto_resumen = "Partido muy igualado y que acabará en empate, una 'X' en la Quiniela."

Else 'si tampoco es así, entonces necesariamente el resultado del equipo visitante es supeior al del local:
texto_resumen = "Derrota en su estadio del " + el + "ante el " + ev + ", por lo que supone un '2' en la Quiniela."

EndIf 'se cierra el segundo "if"
EndIf 'se cierra el primer "if"

'fin algoritmos

equipo_local = Controls.GetTextBoxText(el)
equipo_visitante = Controls.GetTextBoxText(ev)


GraphicsWindow.ShowMessage("El resultado será: " + equipo_local + " " + rgfel + " - " + rgfev + " " + equipo_visitante + Text.GetCharacter(010) + texto_resumen, "Resultado")
EndSub