Monografias.com > Uncategorized
Descargar Imprimir Comentar Ver trabajos relacionados

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




Enviado por jaimemontoya



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

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 permiritá introducir en el TextBox
serán los números del 0 al 9 (ASCII del 48 al
57) y se permitirá también usar el Backspace (ASCII
8) para borrar. El signo menos (ASCII 45) se evalúa
más adelante.

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

Else

If (Asc(e.KeyChar)) =
46 Then 'Si se introduce un punto, se evaluará que no
haya más de uno.

Dim contadorpuntos
As Integer 'Para programar
que no se permitan varios signos puntos
en la respuesta.

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

Dim longitudcadena
As Integer = Len(respuesta.Text)
'Variable para almacenar la longitud de la
cadena que hay en el text box "respuesta".

For ciclo
As Integer = 1 To longitudcadena 'Para evaluar caracter por caracter hasta encontrar un
punto.

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

If caracterevaluado
= "." Then

contadorpuntos += 1

End If

Next

If contadorpuntos >
0 Then 'Si ya se ha digitado un signo menos.

e.KeyChar = ""
'Reemplaza la letra o caracter digitado por
un valor
vacío, de manera que no se permita la introducción de más de un
punto.

End If

Else 'Si el
caracter introducido es inválido.

e.KeyChar = ""
'Reemplaza la letra o caracter digitado por
un valor vacío, de manera que no se permita la
introducción de caracteres inválidos.

End If

End If

End Sub

End Class

FORMULARIO
divisionintermedio1

Imports System.Math
'Esto se pone porque será necesario
usar la función
Round(), y si no se pone esta línea no estará
disponible esa función, que servirá para programar
que se usen solamente dos dígitos significativos
(precisión) en las respuestas.

Public Class divisionintermedio1

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
divisionintermedio1_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 division1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles division1.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

Dim
caracterevaluado1 As
String

Dim existepunto
As Boolean = False 'Valdrá 1 si
existe un punto en la respuesta y 0 si no existe.

Dim puntoubicacion
As Integer 'Para saber en
qué parte de la cadena se encuentra el punto
decimal.

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

puntoubicacion = ciclo

existepunto = True

End If

Next

If existepunto =
True Then 'Si existe un punto
decimal se hacen todas las siguientes evaluaciones.

respuesta.Text = Mid(respuesta.Text, 1, puntoubicacion +
2) 'Si se escribió
"343.043243" se transformará a "343.04". Cualquier valor
se deja con 2 decimales.

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, que solamente se permita un cero antes
del punto, si es que se va a escribir un cero.

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

End While

If Mid(respuesta.Text, 2,
3) = ".00" Then 'Si al final de la
respuesta se tiene "2.00", se convertiría en
"2".

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

End If

If Len(respuesta.Text) =
3 And
Mid(respuesta.Text, 2, 2) = ".0" Then
'Si la respuesta es "8.0", se
convertiría en "8".

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

End If

If Mid(respuesta.Text, 1,
1) = "." Then 'Si comienza la
respuesta con ".", concatenarle "0". Por ejemplo, ".34" lo
convertiría en "0.34"

respuesta.Text = "0"
+ respuesta.Text

End If

If Mid(respuesta.Text, 4,
1) = "0" Then 'Si la respuesta es
"1.3" y el usuario escribe "1.30", el sistema se lo
cambiaría a "1.3".

respuesta.Text = Mid(respuesta.Text, 1, 3)

End If

If Mid(respuesta.Text,
Len(respuesta.Text), 1) = "."
Then 'Si al
final de la respuesta hay un punto, por ejemplo "93." lo
convertiría en "93".

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

End If

End If

TextBoxoculto.Text = Round(Val(numero1.Text) /
Val(numero2.Text), 2) 'Se guarda en
el TextBox oculto la respuesta correcta. Se usan dos
dígitos significativos (precisión).

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 permiritá introducir en el TextBox
serán los números del 0 al 9 (ASCII del 48 al 57) y
se permitirá también usar el Backspace (ASCII 8)
para borrar. El signo menos (ASCII 45) se evalúa
más adelante.

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

Else

If (Asc(e.KeyChar)) =
46 Then 'Si se introduce un punto, se evaluará que no
haya más de uno.

Dim contadorpuntos
As Integer 'Para programar
que no se permitan varios signos puntos en la
respuesta.

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

Dim longitudcadena
As Integer = Len(respuesta.Text)
'Variable para almacenar la longitud de la
cadena que hay en el text box "respuesta".

For ciclo
As Integer = 1 To longitudcadena 'Para evaluar caracter por caracter hasta encontrar un
punto.

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

If caracterevaluado
= "." Then

contadorpuntos += 1

End If

Next

If contadorpuntos >
0 Then 'Si ya se ha digitado un signo menos.

e.KeyChar = ""
'Reemplaza la letra o caracter digitado por
un valor vacío, de manera que no se permita la
introducción de más de un punto.

End If

Else 'Si el
caracter introducido es inválido.

e.KeyChar = ""
'Reemplaza la letra o caracter digitado por
un valor vacío, de manera que no se permita la
introducción de caracteres inválidos.

End If

End If

End Sub

End Class

FORMULARIO Form1

Public Class Form1

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 Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

suma.Visible = False

resta.Visible = True

Timer1.Enabled = False 'Para
desactivarlo.

End Sub

Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick

resta.Visible = False

multiplicacion.Visible = True

Timer2.Enabled = False 'Para
desactivarlo.

End Sub

Private Sub Timer3_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer3.Tick

multiplicacion.Visible = False

division.Visible = True

Timer3.Enabled = False 'Para
desactivarlo.

End Sub

Private Sub Timer4_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer4.Tick

division.Visible = False

fraccionmultiplicacion.Visible = True

Timer4.Enabled = False 'Para
desactivarlo.

End Sub

Private Sub Timer5_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer5.Tick

fraccionmultiplicacion.Visible = False

fracciondivision.Visible = True

Timer5.Enabled = False 'Para
desactivarlo.

End Sub

Private Sub Timer6_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer6.Tick

fracciondivision.Visible = False

suma.Visible = True

Timer6.Enabled = False 'Para
desactivarlo.

End Sub

Private Sub Timer7_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer7.Tick

suma.Visible = False

resta.Visible = True

Timer7.Enabled = False 'Para
desactivarlo.

End Sub

Private Sub Timer8_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer8.Tick

resta.Visible = False

multiplicacion.Visible = True

Timer8.Enabled = False 'Para
desactivarlo.

End Sub

Private Sub Timer9_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer9.Tick

multiplicacion.Visible = False

division.Visible = True

Timer9.Enabled = False 'Para
desactivarlo.

End Sub

Private Sub Timer10_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer10.Tick

division.Visible = False

fraccionmultiplicacion.Visible = True

Timer10.Enabled = False 'Para
desactivarlo.

End Sub

Private Sub Timer11_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer11.Tick

fraccionmultiplicacion.Visible = False

fracciondivision.Visible = True

Timer11.Enabled = False 'Para
desactivarlo.

End Sub

Private Sub Timer12_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer12.Tick

fracciondivision.Visible = False

bienvenido.Visible = True

AxShockwaveFlash1.Visible = False

botonentrar.Visible = True

botonentrar.Select() 'Para
que automáticamente esté seleccionado el
botón "botonentrar" cuando desaparezca la animación
y desaparezca también el elemento flash que dice
"Cargando…", y que simplemente presionando Enter pueda el
usuario entrar al siguiente formulario sin tener que utilizar el
mouse.

End Sub

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

suma.Visible = True

resta.Visible = False

multiplicacion.Visible = False

division.Visible = False

fraccionmultiplicacion.Visible = False

fracciondivision.Visible = False

bienvenido.Visible = False

End Sub

Private Sub botonentrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles botonentrar.Click

portada1.Show() 'Llama al
formulario "portada".

Me.Hide()
'Oculta el formulario actual.

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

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

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

Me.Hide()
'Oculta el formulario actual.

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

portada1.Show() 'Llama al
formulario "portada".

Me.Hide()
'Oculta el formulario actual.

End Sub

End Class

MÓDULO
fracción

Public Structure Fraccion 'Pudo haber sido también "Public Class Fraccion"
y los resultados hubiesen sido los mismos.

' Las dos partes de una
fracción.

Public Denominador
As Integer

Public Numerador
As Integer

Public Sub New(ByVal numerador As Integer, ByVal denominador As Integer)

Me.Numerador =
numerador

Me.Denominador =
denominador

End Sub

Public Shared Operator
+(ByVal x
As Fraccion,
ByVal y As Fraccion) _

As Fraccion

Return
Normalizar(x.Numerador * y.Denominador + _

y.Numerador * x.Denominador, x.Denominador *
y.Denominador)

End Operator

Public Shared Operator
-(ByVal x
As Fraccion,
ByVal y As Fraccion) _

As Fraccion

Return
Normalizar(x.Numerador * y.Denominador – _

y.Numerador * x.Denominador, x.Denominador *
y.Denominador)

End Operator

Public Shared Operator
*(ByVal x
As Fraccion,
ByVal y As Fraccion) _

As Fraccion

Return
Normalizar(x.Numerador * y.Numerador, _

x.Denominador * y.Denominador)

End Operator

Public Shared Operator
/(ByVal x
As Fraccion,
ByVal y As Fraccion) _

As Fraccion

Return
Normalizar(x.Numerador * y.Denominador, _

x.Denominador * y.Numerador)

End Operator

' Reducir a fracción.

Private Shared Function
Normalizar(ByVal
numerador As
Integer, _

ByVal denominador
As Integer) As Fraccion

If (numerador <>
0) And (denominador
<> 0) Then

' Arreglar los signos.

If denominador <
0 Then

denominador *= -1

numerador *= -1

End If

Dim divisor
As Integer = MCD(numerador,
denominador)

numerador = divisor

denominador = divisor

End If

Return New Fraccion(numerador,
denominador)

End Function

' Retorna el máximo común
divisor usando el algoritmo de
Euclides.

Private Shared Function
MCD(ByVal
x As Integer, ByVal y As Integer)
_

As Integer

Dim temp
As Integer

x = Math.Abs(x)

y = Math.Abs(y)

Do While (y <> 0)

temp = x Mod
y

x = y

y = temp

Loop

Return x

End Function

' Convierte la fracción a la
forma decimal.

Public Function ObtenerDouble()
As Double

Return CType(Me.Numerador, Double) / _

CType(Me.Denominador, Double)

End Function

' Obtener una cadena que represente a la
fracción.

Public Overrides Function
ToString() As
String

Return Me.Numerador.ToString &
"/" & Me.Denominador.ToString

End Function

End Structure 'Aquí
hubiese sido "End Class" si se hubiera usado "Public Class
Fraction" en vez de "Public Structure Fraction"

FORMULARIO
intermedio1

Public Class intermedio1

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 regresar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles menu.Click, menu.Click

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

Me.Hide()
'Oculta el formulario actual.

End Sub

Private Sub seleccionar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles seleccionar.Click

If RadioButtonsuma.Checked
= True Then

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

Me.Hide()
'Oculta el formulario actual.

End If

If RadioButtonresta.Checked
= True Then

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

Me.Hide()
'Oculta el formulario actual.

End If

If
RadioButtonmultiplicacion.Checked = True Then

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

Me.Hide()
'Oculta el formulario actual.

End If

If
RadioButtondivision.Checked = True Then

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

Me.Hide()
'Oculta el formulario actual.

End If

If (RadioButtonsuma.Checked
= False)
And (RadioButtonresta.Checked
= False)
And
(RadioButtonmultiplicacion.Checked = False) And (RadioButtondivision.Checked =
False) Then

MsgBox("Seleccione la
operación matemática
que desea realizar", MsgBoxStyle.Exclamation,
"Juego de Operaciones Matemáticas
para Bachilleres")

End If

End Sub

End Class

FORMULARIO menu2

Public Class menu2

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 portada_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles portada.Click

portada1.Show() 'Llama al
formulario "portada".

Me.Hide()
'Oculta el formulario actual.

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

End Sub

Private Sub basico_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles basico.Click

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

Me.Hide()
'Oculta el formulario actual.

End Sub

Private Sub intermedio_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles intermedio.Click

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

Me.Hide()
'Oculta el formulario actual.

End Sub

Private Sub avanzado_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles avanzado.Click

avanzado1.Show() 'Llama al
formulario "basico1".

Me.Hide()
'Oculta el formulario actual.

End Sub

Private Sub salir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles salir.Click

Dim mensaje
As String

mensaje = MsgBox("¿Desea realmente salir del programa?", MsgBoxStyle.YesNo,
"Juego de Operaciones Básicas para
Bachilleres")

If mensaje = 6
Then

End

End If

End Sub

End Class

MÓDULO
Module1

Module Module1

Public Function
obtenernumerorandom(ByVal numerominimo As Integer, ByVal numeromaximo As Integer) As String

'Cuando el formulario "sumabasico1"
carga:

Randomize() 'Fijar la
semilla aleatoria para usarla con la función
Rnd().

'La función Rnd() devuelve un
número random menor que 1 pero mayor que 0.

'La siguiente línea de código
devuelve un valor random entre el "numerominimo" y el
"numeromaximo" que son pasados como argumentos de esta
función.

obtenernumerorandom = CInt(Int((numeromaximo – numerominimo + 1)
* Rnd() + numerominimo))

End Function

End Module

FORMULARIO
multiplicacionavanzado1

Public Class multiplicacionavanzado1

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
multiplicacionavanzado1_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 "34/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 "33/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
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

'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

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

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter