Descargar

Operaciones matemáticas para bachilleres (página 4)

Enviado por jaimemontoya


Partes: 1, 2, 3, 4, 5, 6

'Encontrar el numerador y el denominador del "numero2".

Dim longitudcadena2 As Integer = Len(numero2.Text) 'Variable para almacenar la longitud de la cadena que hay en el Textbox "numero2".

Dim caracterevaluado2 As String 'Para evaluar caracter por caracter con el Mid().

Dim posicionpleca2 As Integer 'Para determinar el número de la posición en la que se encuentra la pleca dentro de la cadena.

Dim numerador2 As String 'Almacena el numerador del Textbox que se está evaluando.

Dim denominador2 As String 'Almacena el denominador del Textbox que se está evaluando.

Dim banderapleca2 As Integer 'Bandera o marcador que devolverá 1 si se encontró una pleca en la cadena, y 0 en el caso que no se haya encontrado.

For ciclo As Integer = 1 To longitudcadena2 'Para evaluar caracter por caracter hasta encontrar una "/".

caracterevaluado2 = Mid(numero2.Text, ciclo, 1)

If caracterevaluado2 = "/" Then

posicionpleca2 = ciclo

banderapleca2 = 1

End If

Next

If banderapleca2 = 1 Then 'En el caso que se haya encontrado una pleca en la cadena, lo que indica que el usuario introdujo un número fraccionario.

numerador2 = Mid(numero2.Text, 1, posicionpleca2 – 1) 'El numerador será desde el primer caracter hasta el que está antes de que se digitara la pleca.

denominador2 = Mid(numero2.Text, posicionpleca2 + 1, longitudcadena2 – posicionpleca2) 'El denominador será desde un caracter después de la pleca, hasta el último caracter de la cadena.

Else 'En el caso que no se haya encontrado una pleca en la cadena, lo que indica que el usiario introdujo un número entero. Debido a que no se pueden meter puntos ni espacios ni caracteres especiales debido a la programación del KeyPress, el no encontrar una pleca garantiza que se introdujo un entero.

numerador2 = Mid(numero2.Text, 1, longitudcadena2)

denominador2 = 1

End If

'Convertir los valores de los TextBox a objetos "Fraccion", mediante la clase.

Dim fraccion_numero1 As New Fraccion(numerador1, denominador1)

'Convertir los valores de los TextBox a objetos "Fraccion", mediante la clase.

Dim fraccion_numero2 As New Fraccion(numerador2, denominador2)

Dim fraccion_respuesta As Fraccion 'Variable que almacenará la respuesta.

fraccion_respuesta = fraccion_numero1 * fraccion_numero2

TextBoxoculto.Text = fraccion_respuesta.ToString 'La respuesta es de tipo "Fraccion" (la clase creada) y se transforma a tipo "String" para poder imprimirla en un TextBox.

'Condición para quitar el denominador de 1.

If Strings.Right(TextBoxoculto.Text, 2) = "/1" Then 'Si el número tiene como divisor 1.

TextBoxoculto.Text = Strings.Left(TextBoxoculto.Text, Strings.Len(TextBoxoculto.Text) – 2) 'Con esto se quita el "/1", por ejemplo si fuera "34/1" quedará solamente "34".

End If

While Mid(respuesta.Text, 1, 2) = "00" Or Mid(respuesta.Text, 1, 2) = "01" Or Mid(respuesta.Text, 1, 2) = "02" Or Mid(respuesta.Text, 1, 2) = "03" Or Mid(respuesta.Text, 1, 2) = "04" Or Mid(respuesta.Text, 1, 2) = "05" Or Mid(respuesta.Text, 1, 2) = "06" Or Mid(respuesta.Text, 1, 2) = "07" Or Mid(respuesta.Text, 1, 2) = "08" Or Mid(respuesta.Text, 1, 2) = "09" 'Para que los ceros a la izquierda se borren.

respuesta.Text = Mid(respuesta.Text, 2, Len(respuesta.Text) – 1)

End While

Dim plecaubicacion As Integer 'Para saber en qué parte de la cadena se encuentra la pleca.

For ciclo As Integer = 1 To Len(respuesta.Text)

caracterevaluado1 = Mid(respuesta.Text, ciclo, 1) 'Toma el caracter correspondiente, dependiendo de la iteración en la que vaya el ciclo For.

If caracterevaluado1 = "/" Then

plecaubicacion = ciclo

End If

Next

While Mid(respuesta.Text, plecaubicacion + 1, 2) = "00" Or Mid(respuesta.Text, plecaubicacion + 1, 2) = "01" Or Mid(respuesta.Text, plecaubicacion + 1, 2) = "02" Or Mid(respuesta.Text, plecaubicacion + 1, 2) = "03" Or Mid(respuesta.Text, plecaubicacion + 1, 2) = "04" Or Mid(respuesta.Text, plecaubicacion + 1, 2) = "05" Or Mid(respuesta.Text, plecaubicacion + 1, 2) = "06" Or Mid(respuesta.Text, plecaubicacion + 1, 2) = "07" Or Mid(respuesta.Text, plecaubicacion + 1, 2) = "08" Or Mid(respuesta.Text, plecaubicacion + 1, 2) = "09" 'Para quitar los ceros del denominador.

respuesta.Text = Mid(respuesta.Text, 1, plecaubicacion – 1) + "/" + Mid(respuesta.Text, plecaubicacion + 2, Len(respuesta.Text)) 'Para que si el usuario escribe "433/0000432", cambiará a "443/432".

End While

If (respuesta.Text = TextBoxoculto.Text) Then 'Si la respuesta introducida por el usuario es igual a la respuesta correcta.

Dim mensaje As String

mensaje = MsgBox("¡Felicidades, su respuesta es correcta!", MsgBoxStyle.OkOnly, "Juego de Operaciones Matemáticas para Bachilleres")

If mensaje = 1 Then 'Si el botón presionado es el "Ok" (que es el único que se le va a presentar entonces ese se tiene que presionar).

'Generación de números aleatorios.

numero1.Text = obtenernumerorandom(1, 99) + "/" + obtenernumerorandom(1, 99) 'Imprime un número random entre 1 y 99 contatenado con "+" concatenado con un número random entre 1 y 99, para obtener algo como "34/42", y eso se imprime en el TextBox "numero1".

numero2.Text = obtenernumerorandom(1, 99) + "/" + obtenernumerorandom(1, 99) 'Imprime un número random entre 1 y 99 contatenado con "+" concatenado con un número random entre 1 y 99, para obtener algo como "34/42", y eso se imprime en el TextBox "numero2".

respuesta.Text = "" 'Para borrar la respuesta anterior y que el usuario escriba una nueva respuesta.

respuesta.Focus() 'Para que el cursor esté listo y que el usuario escriba su próxima respuesta.

End If

respuestaaciertos += 1 'Suma un acierto.

aciertos.Text = respuestaaciertos 'Imprime el número de aciertos en el TextBox.

If respuestaaciertos + respuestadesaciertos = 20 Then

resultado1.aciertos1.Text = aciertos.Text 'El número de aciertos se manda a imprimir al TextBox "aciertos1" que está en el formulario "resultado1".

resultado1.desaciertos1.Text = desaciertos.Text 'El número de desaciertos se manda a imprimir al TextBox "desaciertos1" que está en el formulario "resultado1".

resultado1.notafinal1.Text = 10 / 20 * Val(aciertos.Text)

resultado1.Show() 'Mandar a llamar al formulario de resultados. El juego ha terminado.

End If

Else 'Si la respuesta introducida por el usuario es diferente de la respuesta correcta.

Dim mensaje As String

mensaje = MsgBox("¡Incorrecto! La respuesta es: " + TextBoxoculto.Text + ".", MsgBoxStyle.OkOnly, "Juego de Operaciones Matemáticas para Bachilleres")

If mensaje = 1 Then 'Si el botón presionado es el "Ok" (que es el único que se le va a presentar entonces ese se tiene que presionar).

'Generación de números aleatorios.

numero1.Text = obtenernumerorandom(1, 99) + "/" + obtenernumerorandom(1, 99) 'Imprime un número random entre 1 y 99 contatenado con "+" concatenado con un número random entre 1 y 99, para obtener algo como "34/42", y eso se imprime en el TextBox "numero1".

numero2.Text = obtenernumerorandom(1, 99) + "/" + obtenernumerorandom(1, 99) 'Imprime un número random entre 1 y 99 contatenado con "+" concatenado con un número random entre 1 y 99, para obtener algo como "34/42", y eso se imprime en el TextBox "numero2".

respuesta.Text = "" 'Para borrar la respuesta anterior y que el usuario escriba una nueva respuesta.

respuesta.Focus() 'Para que el cursor esté listo y que el usuario escriba su próxima respuesta.

End If

respuestadesaciertos += 1 'Suma un desacierto.

desaciertos.Text = respuestadesaciertos 'Imprime el número de desaciertos en el TextBox.

If respuestaaciertos + respuestadesaciertos = 20 Then

resultado1.aciertos1.Text = aciertos.Text 'El número de aciertos se manda a imprimir al TextBox "aciertos1" que está en el formulario "resultado1".

resultado1.desaciertos1.Text = desaciertos.Text 'El número de desaciertos se manda a imprimir al TextBox "desaciertos1" que está en el formulario "resultado1".

resultado1.notafinal1.Text = 10 / 20 * Val(aciertos.Text)

resultado1.Show() 'Mandar a llamar al formulario de resultados. El juego ha terminado.

Me.Hide()

End If

End If

End If

End Sub

Private Sub terminar1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles terminar1.Click

Dim mensaje As String

mensaje = MsgBox("¿Desea realmente terminar este juego?", MsgBoxStyle.YesNo, "Juego de Operaciones Básicas para Bachilleres")

If mensaje = 6 Then

resultado1.aciertos1.Text = aciertos.Text 'El número de aciertos se manda a imprimir al TextBox "aciertos1" que está en el formulario "resultado1".

resultado1.desaciertos1.Text = desaciertos.Text 'El número de desaciertos se manda a imprimir al TextBox "desaciertos1" que está en el formulario "resultado1".

resultado1.notafinal1.Text = 10 / (Val(aciertos.Text) + Val(desaciertos.Text)) * Val(aciertos.Text) 'Determinar e imprimir la nota final.

resultado1.Show() 'Mandar a llamar al formulario de resultados. El juego ha terminado.

End If

End Sub

Private Sub respuesta_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles respuesta.KeyPress

Dim contadorplecas As Integer

Dim longitudcadena As Integer = Len(respuesta.Text) 'Variable para almacenar la longitud de la cadena que hay en un Textbox.

Dim caracterevaluado As String 'Para evaluar caracter por caracter con el Mid().

For ciclo As Integer = 1 To longitudcadena 'Para evaluar caracter por caracter hasta encontrar una "/".

caracterevaluado = Mid(respuesta.Text, ciclo, 1)

If caracterevaluado = "/" Then

contadorplecas = contadorplecas + 1

End If

Next

If (Asc(e.KeyChar) >= 47 And Asc(e.KeyChar) <= 57) Or Asc(e.KeyChar) = 8 Then 'Los únicos caracteres que se permitirá introducir en el Textbox serán los números del 0 al 9 (ASCII del 48 al 57); la pleca ("/"), que es el ASCII 47; el signo menos ("-"), y el retroceso de espacio o backspace para borrar texto introducido, que es el ASCII 8.

If (Asc(e.KeyChar) = 47) Then 'Si se presione la tecla de la pleca ("/").

If (contadorplecas > 0) Then 'Cuando se pretenda introducir una segunda pleca.

e.KeyChar = "" 'Reemplaza la tecla digitada con el valor de nada para que no se puedan introducir caracteres inválidos.

End If

End If

Else

e.KeyChar = "" 'Reemplaza la tecla digitada con el valor de nada para que no se puedan introducir caracteres inválidos.

End If

End Sub

End Class

FORMULARIO multiplicacionbasico1

Public Class multiplicacionbasico1

Protected Overrides Sub OnPaint(ByVal Pintar As PaintEventArgs)

Dim Elipse As New Drawing2D.GraphicsPath()

Dim Rectangulo As New Rectangle(8, 28, Me.Width – 13, Me.Height – 40) 'La coordenada "x" de la esquina superior izquierda del rectángulo tiene el valor de 7 para que n o se vea el borde izquierdo del formulario. La coordenada "y" de la esquina superior izquierda del rectángulo tiene el valor de 26, con lo cual se logra que no aparezca la barra de título en el formulario. El ancho del rectángulo es "Me.Width – 13" para que no se vea el borde derecho del formulario. El alto del rectángulo es "Me.Height – 31" para que no se vea la línea inferior del borde.

Elipse.AddEllipse(Rectangulo)

Me.Region = New Region(Elipse)

End Sub

'Las siguientes variables deben ser públicas para que vayan almacenando valores y que los pierdan hasta que explícitamente se programe un cambio de valores o cuando se cierre el formulario.

Public respuestaaciertos As Integer 'Variable que contabiliza el número de aciertos.

Public respuestadesaciertos As Integer 'Variable que contabiliza el número de desaciertos.

Private Sub multiplicacionbasico1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

'Al cargar el formulario ya deben aparecer números:

numero1.Text = obtenernumerorandom(1, 999) 'Imprime un número random entre 1 y 999 en el TextBox "numero1".

numero2.Text = obtenernumerorandom(1, 999) 'Imprime un número random entre 1 y 999 en el TextBox "numero2".

aciertos.Text = "0"

desaciertos.Text = "0"

End Sub

Private Sub menu1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles menu1.Click

Dim mensaje As String

mensaje = MsgBox("Regresar al menú cancelará su juego actual. ¿Desea continuar?", MsgBoxStyle.YesNo, "Juego de Operaciones Básicas para Bachilleres")

If mensaje = 6 Then

menu2.Show() 'Llama al formulario "menu2".

Me.Close() 'Cierra el formulario actual.

Else

'No hace nada porque no se ha decidido por parte del usuario regresar al menú.

End If

End Sub

Private Sub terminar1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles terminar1.Click

Dim mensaje As String

mensaje = MsgBox("¿Desea realmente terminar este juego?", MsgBoxStyle.YesNo, "Juego de Operaciones Básicas para Bachilleres")

If mensaje = 6 Then

resultado1.aciertos1.Text = aciertos.Text 'El número de aciertos se manda a imprimir al TextBox "aciertos1" que está en el formulario "resultado1".

resultado1.desaciertos1.Text = desaciertos.Text 'El número de desaciertos se manda a imprimir al TextBox "desaciertos1" que está en el formulario "resultado1".

resultado1.notafinal1.Text = 10 / (Val(aciertos.Text) + Val(desaciertos.Text)) * Val(aciertos.Text) 'Determinar e imprimir la nota final.

resultado1.Show() 'Mandar a llamar al formulario de resultados. El juego ha terminado.

End If

End Sub

Private Sub multiplicacion1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles multiplicacion1.Click

If respuesta.Text = "" Then 'Si el usuario no ha escrito una respuesta.

MsgBox("Escriba la respuesta que considere correcta.", MsgBoxStyle.Exclamation, "Juego de Operaciones Matemáticas para Bachilleres")

respuesta.Focus() 'Se ubica el cursor en el cuadro de texto de respuestas para que el usuario escriba su respuesta.

Else

TextBoxoculto.Text = Val(numero1.Text) * Val(numero2.Text) 'Se guarda en el TextBox oculto la respuesta correcta.

While Mid(respuesta.Text, 1, 2) = "00" Or Mid(respuesta.Text, 1, 2) = "01" Or Mid(respuesta.Text, 1, 2) = "02" Or Mid(respuesta.Text, 1, 2) = "03" Or Mid(respuesta.Text, 1, 2) = "04" Or Mid(respuesta.Text, 1, 2) = "05" Or Mid(respuesta.Text, 1, 2) = "06" Or Mid(respuesta.Text, 1, 2) = "07" Or Mid(respuesta.Text, 1, 2) = "08" Or Mid(respuesta.Text, 1, 2) = "09" 'Para que los ceros a la izquierda se borren.

respuesta.Text = Mid(respuesta.Text, 2, Len(respuesta.Text) – 1)

End While

If (respuesta.Text = TextBoxoculto.Text) Then 'Si la respuesta introducida por el usuario es igual a la respuesta correcta.

Dim mensaje As String

mensaje = MsgBox("¡Felicidades, su respuesta es correcta!", MsgBoxStyle.OkOnly, "Juego de Operaciones Matemáticas para Bachilleres")

If mensaje = 1 Then 'Si el botón presionado es el "Ok" (que es el único que se le va a presentar entonces ese se tiene que presionar).

'Generación de números aleatorios.

numero1.Text = obtenernumerorandom(1, 999) 'Imprime un número random entre 1 y 999 en el TextBox "numero1".

numero2.Text = obtenernumerorandom(1, 999) 'Imprime un número random entre 1 y 999 en el TextBox "numero2".

respuesta.Text = "" 'Para borrar la respuesta anterior y que el usuario escriba una nueva respuesta.

respuesta.Focus() 'Para que el cursor esté listo y que el usuario escriba su próxima respuesta.

End If

respuestaaciertos += 1 'Suma un acierto.

aciertos.Text = respuestaaciertos 'Imprime el número de aciertos en el TextBox.

If respuestaaciertos + respuestadesaciertos = 20 Then

resultado1.aciertos1.Text = aciertos.Text 'El número de aciertos se manda a imprimir al TextBox "aciertos1" que está en el formulario "resultado1".

resultado1.desaciertos1.Text = desaciertos.Text 'El número de desaciertos se manda a imprimir al TextBox "desaciertos1" que está en el formulario "resultado1".

resultado1.notafinal1.Text = 10 / 20 * Val(aciertos.Text)

resultado1.Show() 'Mandar a llamar al formulario de resultados. El juego ha terminado.

Me.Close() 'Cierra el formulario actual.

End If

Else

Dim mensaje As String

mensaje = MsgBox("¡Incorrecto! La respuesta es: " + TextBoxoculto.Text + ".", MsgBoxStyle.OkOnly, "Juego de Operaciones Matemáticas para Bachilleres")

If mensaje = 1 Then 'Si el botón presionado es el "Ok" (que es el único que se le va a presentar entonces ese se tiene que presionar).

'Generación de números aleatorios.

numero1.Text = obtenernumerorandom(1, 999) 'Imprime un número random entre 1 y 999 en el TextBox "numero1".

numero2.Text = obtenernumerorandom(1, 999) 'Imprime un número random entre 1 y 999 en el TextBox "numero2".

respuesta.Text = "" 'Para borrar la respuesta anterior y que el usuario escriba una nueva respuesta.

respuesta.Focus() 'Para que el cursor esté listo y que el usuario escriba su próxima respuesta.

End If

respuestadesaciertos += 1 'Suma un desacierto.

desaciertos.Text = respuestadesaciertos 'Imprime el número de desaciertos en el TextBox.

If respuestaaciertos + respuestadesaciertos = 20 Then

resultado1.aciertos1.Text = aciertos.Text 'El número de aciertos se manda a imprimir al TextBox "aciertos1" que está en el formulario "resultado1".

resultado1.desaciertos1.Text = desaciertos.Text 'El número de desaciertos se manda a imprimir al TextBox "desaciertos1" que está en el formulario "resultado1".

resultado1.notafinal1.Text = 10 / 20 * Val(aciertos.Text)

resultado1.Show() 'Mandar a llamar al formulario de resultados. El juego ha terminado.

Me.Close() 'Cierra el formulario actual.

End If

End If

End If

End Sub

Private Sub respuesta_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles respuesta.KeyPress

If (Asc(e.KeyChar) >= 48 And Asc(e.KeyChar) <= 57) Or (Asc(e.KeyChar) = 8) Then 'Los únicos caracteres que se permitirá introducir en el TextBox serán los números del 0 al 9 (ASCII del 48 al 57).

'No se hace nada porque el caracter presionado es válido.

Else

e.KeyChar = "" 'Reemplaza la tecla digitada con un valor Void o vacío, para que no puedan introducir caracteres inválidos.

End If

End Sub

End Class

FORMULARIO multiplicacionintermedio1

Public Class multiplicacionintermedio1

Protected Overrides Sub OnPaint(ByVal Pintar As PaintEventArgs)

Dim Elipse As New Drawing2D.GraphicsPath()

Dim Rectangulo As New Rectangle(8, 28, Me.Width – 13, Me.Height – 40) 'La coordenada "x" de la esquina superior izquierda del rectángulo tiene el valor de 7 para que n o se vea el borde izquierdo del formulario. La coordenada "y" de la esquina superior izquierda del rectángulo tiene el valor de 26, con lo cual se logra que no aparezca la barra de título en el formulario. El ancho del rectángulo es "Me.Width – 13" para que no se vea el borde derecho del formulario. El alto del rectángulo es "Me.Height – 31" para que no se vea la línea inferior del borde.

Elipse.AddEllipse(Rectangulo)

Me.Region = New Region(Elipse)

End Sub

'Las siguientes variables deben ser públicas para que vayan almacenando valores y que los pierdan hasta que explícitamente se programe un cambio de valores o cuando se cierre el formulario.

Public respuestaaciertos As Integer 'Variable que contabiliza el número de aciertos.

Public respuestadesaciertos As Integer 'Variable que contabiliza el número de desaciertos.

Private Sub multiplicacionintermedio1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

'Al cargar el formulario ya deben aparecer números:

numero1.Text = obtenernumerorandom(100, 999999) 'Imprime un número random entre 100 y 999999 en el TextBox "numero1".

numero2.Text = obtenernumerorandom(100, 999999) 'Imprime un número random entre 100 y 999999 en el TextBox "numero2".

aciertos.Text = "0"

desaciertos.Text = "0"

End Sub

Private Sub menu1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles menu1.Click

Dim mensaje As String

mensaje = MsgBox("Regresar al menú cancelará su juego actual. ¿Desea continuar?", MsgBoxStyle.YesNo, "Juego de Operaciones Básicas para Bachilleres")

If mensaje = 6 Then

menu2.Show() 'Llama al formulario "menu2".

Me.Close() 'Cierra el formulario actual.

Else

'No hace nada porque no se ha decidido por parte del usuario regresar al menú.

End If

End Sub

Private Sub terminar1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles terminar1.Click

Dim mensaje As String

mensaje = MsgBox("¿Desea realmente terminar este juego?", MsgBoxStyle.YesNo, "Juego de Operaciones Básicas para Bachilleres")

If mensaje = 6 Then

resultado1.aciertos1.Text = aciertos.Text 'El número de aciertos se manda a imprimir al TextBox "aciertos1" que está en el formulario "resultado1".

resultado1.desaciertos1.Text = desaciertos.Text 'El número de desaciertos se manda a imprimir al TextBox "desaciertos1" que está en el formulario "resultado1".

resultado1.notafinal1.Text = 10 / (Val(aciertos.Text) + Val(desaciertos.Text)) * Val(aciertos.Text) 'Determinar e imprimir la nota final.

resultado1.Show() 'Mandar a llamar al formulario de resultados. El juego ha terminado.

End If

End Sub

Private Sub multiplicacion1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles multiplicacion1.Click

If respuesta.Text = "" Then 'Si el usuario no ha escrito una respuesta.

MsgBox("Escriba la respuesta que considere correcta.", MsgBoxStyle.Exclamation, "Juego de Operaciones Matemáticas para Bachilleres")

respuesta.Focus() 'Se ubica el cursor en el cuadro de texto de respuestas para que el usuario escriba su respuesta.

Else

TextBoxoculto.Text = Val(numero1.Text) * Val(numero2.Text) 'Se guarda en el TextBox oculto la respuesta correcta.

While Mid(respuesta.Text, 1, 2) = "00" Or Mid(respuesta.Text, 1, 2) = "01" Or Mid(respuesta.Text, 1, 2) = "02" Or Mid(respuesta.Text, 1, 2) = "03" Or Mid(respuesta.Text, 1, 2) = "04" Or Mid(respuesta.Text, 1, 2) = "05" Or Mid(respuesta.Text, 1, 2) = "06" Or Mid(respuesta.Text, 1, 2) = "07" Or Mid(respuesta.Text, 1, 2) = "08" Or Mid(respuesta.Text, 1, 2) = "09" 'Para que los ceros a la izquierda se borren.

respuesta.Text = Mid(respuesta.Text, 2, Len(respuesta.Text) – 1)

End While

If (respuesta.Text = TextBoxoculto.Text) Then 'Si la respuesta introducida por el usuario es igual a la respuesta correcta.

Dim mensaje As String

mensaje = MsgBox("¡Felicidades, su respuesta es correcta!", MsgBoxStyle.OkOnly, "Juego de Operaciones Matemáticas para Bachilleres")

If mensaje = 1 Then 'Si el botón presionado es el "Ok" (que es el único que se le va a presentar entonces ese se tiene que presionar).

'Generación de números aleatorios.

numero1.Text = obtenernumerorandom(100, 999999) 'Imprime un número random entre 100 y 999999 en el TextBox "numero1".

numero2.Text = obtenernumerorandom(100, 999999) 'Imprime un número random entre 100 y 999999 en el TextBox "numero2".

respuesta.Text = "" 'Para borrar la respuesta anterior y que el usuario escriba una nueva respuesta.

respuesta.Focus() 'Para que el cursor esté listo y que el usuario escriba su próxima respuesta.

End If

respuestaaciertos += 1 'Suma un acierto.

aciertos.Text = respuestaaciertos 'Imprime el número de aciertos en el TextBox.

If respuestaaciertos + respuestadesaciertos = 20 Then

resultado1.aciertos1.Text = aciertos.Text 'El número de aciertos se manda a imprimir al TextBox "aciertos1" que está en el formulario "resultado1".

resultado1.desaciertos1.Text = desaciertos.Text 'El número de desaciertos se manda a imprimir al TextBox "desaciertos1" que está en el formulario "resultado1".

resultado1.notafinal1.Text = 10 / 20 * Val(aciertos.Text)

resultado1.Show() 'Mandar a llamar al formulario de resultados. El juego ha terminado.

Me.Close() 'Cierra el formulario actual.

End If

Else

Dim mensaje As String

mensaje = MsgBox("¡Incorrecto! La respuesta es: " + TextBoxoculto.Text + ".", MsgBoxStyle.OkOnly, "Juego de Operaciones Matemáticas para Bachilleres")

If mensaje = 1 Then 'Si el botón presionado es el "Ok" (que es el único que se le va a presentar entonces ese se tiene que presionar).

'Generación de números aleatorios.

numero1.Text = obtenernumerorandom(100, 999999) 'Imprime un número random entre 100 y 999999 en el TextBox "numero1".

numero2.Text = obtenernumerorandom(100, 999999) 'Imprime un número random entre 100 y 999999 en el TextBox "numero2".

respuesta.Text = "" 'Para borrar la respuesta anterior y que el usuario escriba una nueva respuesta.

respuesta.Focus() 'Para que el cursor esté listo y que el usuario escriba su próxima respuesta.

End If

respuestadesaciertos += 1 'Suma un desacierto.

desaciertos.Text = respuestadesaciertos 'Imprime el número de desaciertos en el TextBox.

If respuestaaciertos + respuestadesaciertos = 20 Then

resultado1.aciertos1.Text = aciertos.Text 'El número de aciertos se manda a imprimir al TextBox "aciertos1" que está en el formulario "resultado1".

resultado1.desaciertos1.Text = desaciertos.Text 'El número de desaciertos se manda a imprimir al TextBox "desaciertos1" que está en el formulario "resultado1".

resultado1.notafinal1.Text = 10 / 20 * Val(aciertos.Text)

resultado1.Show() 'Mandar a llamar al formulario de resultados. El juego ha terminado.

Me.Close() 'Cierra el formulario actual.

End If

End If

End If

End Sub

Private Sub respuesta_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles respuesta.KeyPress

If (Asc(e.KeyChar) >= 48 And Asc(e.KeyChar) <= 57) Or (Asc(e.KeyChar) = 8) Then 'Los únicos caracteres que se permitirá introducir en el TextBox serán los números del 0 al 9 (ASCII del 48 al 57).

'No se hace nada porque el caracter presionado es válido.

Else

e.KeyChar = "" 'Reemplaza la tecla digitada con un valor Void o vacío, para que no puedan introducir caracteres inválidos.

End If

End Sub

End Class

FORMULARIO portada1

Public Class portada1

Protected Overrides Sub OnPaint(ByVal Pintar As PaintEventArgs)

Dim Elipse As New Drawing2D.GraphicsPath()

Dim Rectangulo As New Rectangle(8, 28, Me.Width – 13, Me.Height – 40) 'La coordenada "x" de la esquina superior izquierda del rectángulo tiene el valor de 7 para que n o se vea el borde izquierdo del formulario. La coordenada "y" de la esquina superior izquierda del rectángulo tiene el valor de 26, con lo cual se logra que no aparezca la barra de título en el formulario. El ancho del rectángulo es "Me.Width – 13" para que no se vea el borde derecho del formulario. El alto del rectángulo es "Me.Height – 31" para que no se vea la línea inferior del borde.

Elipse.AddEllipse(Rectangulo)

Me.Region = New Region(Elipse)

End Sub

Private Sub botoncomenzar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles botoncomenzar.Click

menu2.Show() 'Llama al formulario "menu2".

Me.Hide() 'Oculta el formulario actual.

menu2.portada.Select() 'Para que automáticamente esté seleccionado el botón "basico" cuando la persona se vaya al formulario del menú, de manera que simplemente presionando Enter pueda el usuario entrar al siguiente formulario sin tener que utilizar el mouse. Si le pone "menu1." al inicio porque se está invocando o haciendo referencia a un objeto de un formulario externo, entonces promero se especifica el formulario en el que se encuentra el objeto y luego el objeto en sí.

End Sub

Private Sub acercade_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles acercade.Click

acercade1.Show() 'Muestra el formulario "acercade1".

Me.Hide() 'Oculta el formulario actual.

End Sub

End Class

FORMULARIO restaavanzado1

Public Class restaavanzado1

Protected Overrides Sub OnPaint(ByVal Pintar As PaintEventArgs)

Dim Elipse As New Drawing2D.GraphicsPath()

Dim Rectangulo As New Rectangle(8, 28, Me.Width – 13, Me.Height – 40) 'La coordenada "x" de la esquina superior izquierda del rectángulo tiene el valor de 7 para que n o se vea el borde izquierdo del formulario. La coordenada "y" de la esquina superior izquierda del rectángulo tiene el valor de 26, con lo cual se logra que no aparezca la barra de título en el formulario. El ancho del rectángulo es "Me.Width – 13" para que no se vea el borde derecho del formulario. El alto del rectángulo es "Me.Height – 31" para que no se vea la línea inferior del borde.

Elipse.AddEllipse(Rectangulo)

Me.Region = New Region(Elipse)

End Sub

'Las siguientes variables deben ser públicas para que vayan almacenando valores y que los pierdan hasta que explícitamente se programe un cambio de valores o cuando se cierre el formulario.

Public respuestaaciertos As Integer 'Variable que contabiliza el número de aciertos.

Public respuestadesaciertos As Integer 'Variable que contabiliza el número de desaciertos.

Private Sub restaavanzado1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

'Al cargar el formulario ya deben aparecer números:

numero1.Text = obtenernumerorandom(1, 99) + "/" + obtenernumerorandom(1, 99) 'Imprime un número random entre 1 y 99 contatenado con "+" concatenado con un número random entre 1 y 99, para obtener algo como "33/32", y eso se imprime en el TextBox "numero1".

numero2.Text = obtenernumerorandom(1, 99) + "/" + obtenernumerorandom(1, 99) 'Imprime un número random entre 1 y 99 contatenado con "+" concatenado con un número random entre 1 y 99, para obtener algo como "34/32", y eso se imprime en el TextBox "numero2".

aciertos.Text = "0"

desaciertos.Text = "0"

End Sub

Private Sub menu1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles menu1.Click

Dim mensaje As String

mensaje = MsgBox("Regresar al menú cancelará su juego actual. ¿Desea continuar?", MsgBoxStyle.YesNo, "Juego de Operaciones Básicas para Bachilleres")

If mensaje = 6 Then

menu2.Show() 'Llama al formulario "menu2".

Me.Close() 'Cierra el formulario actual.

Else

'No hace nada porque no se ha decidido por parte del usuario regresar al menú.

End If

End Sub

Private Sub restar1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles restar1.Click

If respuesta.Text = "" Then 'Si el usuario no ha escrito una respuesta.

MsgBox("Escriba la respuesta que considere correcta.", MsgBoxStyle.Exclamation, "Juego de Operaciones Matemáticas para Bachilleres")

respuesta.Focus() 'Se ubica el cursor en el cuadro de texto de respuestas para que el usuario escriba su respuesta.

Else

'Encontrar el numerador y el denominador del "numero1".

Dim longitudcadena1 As Integer = Len(numero1.Text) 'Variable para almacenar la longitud de la cadena que hay en el Textbox "numero1".

Dim caracterevaluado1 As String 'Para evaluar caracter por caracter con el Mid().

Dim posicionpleca1 As Integer 'Para determinar el número de la posición en la que se encuentra la pleca dentro de la cadena.

Dim numerador1 As String 'Almacena el numerador del Textbox que se está evaluando.

Dim denominador1 As String 'Almacena el denominador del Textbox que se está evaluando.

Dim banderapleca1 As Integer 'Bandera o marcador que devolverá 1 si se encontró una pleca en la cadena, y 0 en el caso que no se haya encontrado.

For ciclo As Integer = 1 To longitudcadena1 'Para evaluar caracter por caracter hasta encontrar una "/".

caracterevaluado1 = Mid(numero1.Text, ciclo, 1)

If caracterevaluado1 = "/" Then

posicionpleca1 = ciclo

banderapleca1 = 1

End If

Next

If banderapleca1 = 1 Then 'En el caso que se haya encontrado una pleca en la cadena, lo que indica que el usuario introdujo un número fraccionario.

numerador1 = Mid(numero1.Text, 1, posicionpleca1 – 1) 'El numerador será desde el primer caracter hasta el que está antes de que se digitara la pleca.

denominador1 = Mid(numero1.Text, posicionpleca1 + 1, longitudcadena1 – posicionpleca1) 'El denominador será desde un caracter después de la pleca, hasta el último caracter de la cadena.

Else 'En el caso que no se haya encontrado una pleca en la cadena, lo que indica que el usiario introdujo un número entero. Debido a que no se pueden meter puntos ni espacios ni caracteres especiales debido a la programación del KeyPress, el no encontrar una pleca garantiza que se introdujo un entero.

numerador1 = Mid(numero1.Text, 1, longitudcadena1)

denominador1 = 1

End If

'Encontrar el numerador y el denominador del "numero2".

Dim longitudcadena2 As Integer = Len(numero2.Text) 'Variable para almacenar la longitud de la cadena que hay en el Textbox "numero2".

Dim caracterevaluado2 As String 'Para evaluar caracter por caracter con el Mid().

Dim posicionpleca2 As Integer 'Para determinar el número de la posición en la que se encuentra la pleca dentro de la cadena.

Dim numerador2 As String 'Almacena el numerador del Textbox que se está evaluando.

Dim denominador2 As String 'Almacena el denominador del Textbox que se está evaluando.

Dim banderapleca2 As Integer 'Bandera o marcador que devolverá 1 si se encontró una pleca en la cadena, y 0 en el caso que no se haya encontrado.

For ciclo As Integer = 1 To longitudcadena2 'Para evaluar caracter por caracter hasta encontrar una "/".

caracterevaluado2 = Mid(numero2.Text, ciclo, 1)

If caracterevaluado2 = "/" Then

posicionpleca2 = ciclo

banderapleca2 = 1

End If

Next

If banderapleca2 = 1 Then 'En el caso que se haya encontrado una pleca en la cadena, lo que indica que el usuario introdujo un número fraccionario.

numerador2 = Mid(numero2.Text, 1, posicionpleca2 – 1) 'El numerador será desde el primer caracter hasta el que está antes de que se digitara la pleca.

denominador2 = Mid(numero2.Text, posicionpleca2 + 1, longitudcadena2 – posicionpleca2) 'El denominador será desde un caracter después de la pleca, hasta el último caracter de la cadena.

Else 'En el caso que no se haya encontrado una pleca en la cadena, lo que indica que el usiario introdujo un número entero. Debido a que no se pueden meter puntos ni espacios ni caracteres especiales debido a la programación del KeyPress, el no encontrar una pleca garantiza que se introdujo un entero.

numerador2 = Mid(numero2.Text, 1, longitudcadena2)

denominador2 = 1

End If

'Convertir los valores de los TextBox a objetos "Fraccion", mediante la clase.

Dim fraccion_numero1 As New Fraccion(numerador1, denominador1)

'Convertir los valores de los TextBox a objetos "Fraccion", mediante la clase.

Dim fraccion_numero2 As New Fraccion(numerador2, denominador2)

Dim fraccion_respuesta As Fraccion 'Variable que almacenará la respuesta.

fraccion_respuesta = fraccion_numero1 – fraccion_numero2

TextBoxoculto.Text = fraccion_respuesta.ToString 'La respuesta es de tipo "Fraccion" (la clase creada) y se transforma a tipo "String" para poder imprimirla en un TextBox.

'Condición para quitar el denominador de 1.

If Strings.Right(TextBoxoculto.Text, 2) = "/1" Then 'Si el número tiene como divisor 1.

TextBoxoculto.Text = Strings.Left(TextBoxoculto.Text, Strings.Len(TextBoxoculto.Text) – 2) 'Con esto se quita el "/1", por ejemplo si fuera "34/1" quedará solamente "34".

End If

Dim plecaubicacion As Integer 'Para saber en qué parte de la cadena se encuentra la pleca.

For ciclo As Integer = 1 To Len(respuesta.Text)

caracterevaluado1 = Mid(respuesta.Text, ciclo, 1) 'Toma el caracter correspondiente, dependiendo de la iteración en la que vaya el ciclo For.

If caracterevaluado1 = "/" Then

plecaubicacion = ciclo

End If

Next

If Mid(respuesta.Text, plecaubicacion + 1, 1) = "-" Then 'Si el signo menos viene con el denominador.

respuesta.Text = "-" + Mid(respuesta.Text, 1, plecaubicacion – 1) + "/" + Mid(respuesta.Text, plecaubicacion + 2, Len(respuesta.Text)) 'Si se escribiera "423/-42" se cambiaría por "-423/42".

End If

If Mid(respuesta.Text, 1, 1) = "-" Then 'Si el número es negativo.

respuesta.Text = Mid(respuesta.Text, 2, Len(respuesta.Text))

While Mid(respuesta.Text, 1, 2) = "00" Or Mid(respuesta.Text, 1, 2) = "01" Or Mid(respuesta.Text, 1, 2) = "02" Or Mid(respuesta.Text, 1, 2) = "03" Or Mid(respuesta.Text, 1, 2) = "04" Or Mid(respuesta.Text, 1, 2) = "05" Or Mid(respuesta.Text, 1, 2) = "06" Or Mid(respuesta.Text, 1, 2) = "07" Or Mid(respuesta.Text, 1, 2) = "08" Or Mid(respuesta.Text, 1, 2) = "09" 'Para que los ceros a la izquierda se borren.

respuesta.Text = Mid(respuesta.Text, 2, Len(respuesta.Text) – 1)

End While

For ciclo As Integer = 1 To Len(respuesta.Text)

caracterevaluado1 = Mid(respuesta.Text, ciclo, 1) 'Toma el caracter correspondiente, dependiendo de la iteración en la que vaya el ciclo For.

If caracterevaluado1 = "/" Then

plecaubicacion = ciclo

End If

Next

While Mid(respuesta.Text, plecaubicacion + 1, 2) = "00" Or Mid(respuesta.Text, plecaubicacion + 1, 2) = "01" Or Mid(respuesta.Text, plecaubicacion + 1, 2) = "02" Or Mid(respuesta.Text, plecaubicacion + 1, 2) = "03" Or Mid(respuesta.Text, plecaubicacion + 1, 2) = "04" Or Mid(respuesta.Text, plecaubicacion + 1, 2) = "05" Or Mid(respuesta.Text, plecaubicacion + 1, 2) = "06" Or Mid(respuesta.Text, plecaubicacion + 1, 2) = "07" Or Mid(respuesta.Text, plecaubicacion + 1, 2) = "08" Or Mid(respuesta.Text, plecaubicacion + 1, 2) = "09" 'Para quitar los ceros del denominador.

respuesta.Text = Mid(respuesta.Text, 1, plecaubicacion – 1) + "/" + Mid(respuesta.Text, plecaubicacion + 2, Len(respuesta.Text)) 'Para que si el usuario escribe "433/0000432", cambiará a "443/432".

End While

Partes: 1, 2, 3, 4, 5, 6
 Página anterior Volver al principio del trabajoPágina siguiente