Tutorial Crear Una Prueba Matematica en Visual Studio C#
Tutorial Crear Una Prueba Matematica en Visual Studio C#
Tutorial Crear Una Prueba Matematica en Visual Studio C#
Visual Studio 2010 El primer paso para crear una prueba matemtica es crear el proyecto y agregar etiquetas al formulario.
de 5
6. A continuacin, arrastre otro control Label desde el Cuadro de herramientas y establezca sus propiedades: a. Cambie el tamao de fuente a 15,75. b. Establezca la propiedad Text en Tiempo restante. c. Arrstrelo para alinearlo a la izquierda de la etiqueta timeLabel. 7. Ahora, agregue los controles para el problema de suma. Arrastre un control Label desde el cuadro de herramientas y, a continuacin, establezca sus propiedades: a. Establezca la propiedad Text en ? (signo de interrogacin). b. Establezca la propiedad AutoSize en False. c. Establezca la propiedad Size en 60, 50. d. Cambie el tamao de fuente a 18. e. Cambie la propiedad TextAlign a MiddleCenter. f. Cambie la propiedad Location a 75, 75 para colocarlo en el formulario. g. Cambie la propiedad (Name) propiedad a plusLeftLabel. 8. Seleccione la etiqueta plusLeftLabel y cpiela. (Presione Ctrl+C o bien seleccione Copiar en el men Edicin.) A continuacin, realice las acciones siguientes: a. Pguelo tres veces. (Presione Ctrl+V, o bien seleccione Pegar en el men Edicin.) b. Organice las tres nuevas etiquetas para que los cuadros estn en fila a la derecha de la etiqueta plusLeftLabel, utilizando las lneas de separacin para separarlas y alinearlas. c. Cambie la propiedad Text de la segunda etiqueta a + (signo ms). d. Cambie la propiedad (Name) de la tercera etiqueta a plusRightLabel. e. Cambie la propiedad Text de la cuarta etiqueta a = (signo igual). 9. Arrastre un control NumericUpDown desde el Cuadro de herramientas y, a continuacin, haga lo siguiente:
a. Cambie el tamao de fuente a 18 y, a continuacin, estrchelo para que el ancho sea 100. b. Arrstrelo hasta que se alinee con los controles Label del problema de suma. c. Cambie la propiedad (Name) a suma. (Aprenderemos ms cosas acerca del control NumericUpDown ms adelante.) Ahora, la prueba tiene una primera fila, como se muestra en la siguiente imagen. Primera fila de la prueba matemtica
10. Seleccione los cinco controles del problema de suma (los cuatro controles Label y el control NumericUpDown) y cpielos. A continuacin, realice las acciones siguientes: a. Pegue los controles, con lo que se deberan agregar cinco nuevos controles al formulario. b. Los controles deberan seguir estando seleccionados, de modo que pueda hacer clic en uno de ellos y arrastrarlos a su lugar para que queden alineados debajo de los controles de suma. Utilice las lneas de separacin para proporcionar una distancia suficiente entre las dos filas. c. Cambie la propiedad Text de la segunda etiqueta a - (signo menos). d. Cambie el nombre de la primera etiqueta del signo de interrogacin a minusLeftLabel. e. Cambie el nombre de la segunda etiqueta de signo de interrogacin a minusRightLabel. f. Cambie el nombre del control NumericUpDown a diferencia. 11. Pegue los cinco controlan dos veces ms y, a continuacin, haga lo siguiente: a. Para la tercera fila, cambie el nombre de la primera etiqueta a timesLeftLabel, cambie la propiedad Text de la segunda etiqueta a (signo de multiplicacin), cambie el nombre de la tercera etiqueta a timesRightLabel y cambie el nombre del control NumericUpDown a producto. b. Para la cuarta fila, cambie el nombre de la primera etiqueta a dividedLeftLabel, cambie la propiedad Text de la segunda etiqueta a (signo de divisin), cambie el nombre de la tercera etiqueta a dividedRightLabel y cambie el nombre del control NumericUpDown a cociente. Nota Puede copiar el signo de multiplicacin y el signo de divisin de este tutorial y pegarlos en el IDE.
de 5
12. Se necesita un control ms en el formulario: un botn para iniciar la prueba. Arrastre un control
Button desde el Cuadro de herramientas y, a continuacin, establezca sus propiedades: a. Establezca la propiedad (Name) en startButton. b. Establezca la propiedad Text en Iniciar la prueba. c. Establezca el tamao de fuente en 14. d. Establezca la propiedad AutoSize en True, para que el tamao del botn se ajuste automticamente al texto. e. Arrastre el botn hasta la parte inferior del formulario y muvalo para que quede centrado. 13. Por ltimo, haga clic en el control startButton y, a continuacin, haga lo siguiente: a. Establezca la propiedad TabIndex en 1. b. Haga clic en el control NumericUpDown de suma. c. Establezca la propiedad TabIndex en 2. d. Establezca los dems controles NumericUpDown: establezca la propiedad TabIndex del control de diferencia en 3, la propiedad TabIndex del control de producto en 4, y la propiedad TabIndex del control de cociente en 5. Ahora, el formulario debera tener un aspecto similar a la siguiente imagen. Formulario de prueba matemtica inicial
Nota La finalidad de la propiedad TabIndex es establecer el orden de los controles cuando el usuario presiona la tecla TAB. Abra cualquier cuadro de dilogo (por ejemplo, en el men Archivo, seleccione Abrir) y presione la tecla TAB varias veces. Observe cmo se mueve el cursor de un control a otro cada vez que se presiona la tecla TAB. Al disear este formulario originalmente, un programador decidi el orden.
14. Para ver cmo funciona la propiedad TabIndex, guarde el programa, ejectelo y, a continuacin, presione la tecla TAB varias veces.
Visual Studio 2010 La prueba necesita problemas de matemticas. Si la prueba repite los mismos problemas, no supone ningn reto. Por ello, es interesante incluir nmeros aleatorios. Agregue un mtodo denominado StartTheQuiz() que rellena los problemas e inicia el temporizador de cuenta atrs. Para este paso, agregaremos un problema de suma aleatoria. Los dems problemas de matemticas y el temporizador de cuenta atrs se agregan en pasos posteriores de este tutorial. En el tutorial 2, hemos creado varios elementos SoundPlayer para un juego de laberinto. Para la prueba matemtica hacemos lo mismo, salvo que en lugar de la clase SoundPlayer, utilizaremos la clase Random.
Ahora, hemos agregado un objeto Random al formulario y lo hemos denominado randomizer. Nota En el tutorial del laberinto, creamos dos componentes SoundPlayer mediante la instruccin new. Esto hace algo similar. La nica diferencia es que, al contrario que SoundPlayer, Random no es un componente ni un control, de modo que no podemos llamarlo as. Se denomina objeto. Probablemente habr odo la palabra objeto antes. Obtendr ms informacin sobre lo que significa en los prximos tutoriales. De momento, todo lo que necesita saber es que cuando el programa utiliza una instruccin new para crear botones, etiquetas, paneles, elementos OpenFileDialog, ColorDialog, SoundPlayer o Random, e incluso formularios, el elemento que se crea se denomina objeto. Los tutoriales posteriores muestran mucha ms informacin sobre cmo funcionan estos objetos.
2. Ahora, al iniciar el formulario, crea un nuevo objeto Random y le da el nombre randomizer. Como con los elementos SoundPlayer, si entramos en un mtodo y comenzamos a escribir randomizer con un punto (.) a continuacin, se abre una ventana IntelliSense que muestra todos los mtodos del objeto Random a los que se puede llamar. El mtodo Next() se utiliza como se indica a continuacin. Mtodo Next
de 5
Cuando se llama a random.Next(50), se obtiene un nmero aleatorio que es menor que 50 (del 0 al 49). 3. Pronto compilaremos un mtodo para comprobar las respuestas, de modo que el programa tiene que recordar qu nmeros ha elegido para los problemas. Agregue un valor de tipo integer (denominado valor de tipo int en C# o Integer en Visual Basic) denominado addend1 y otro denominado addend2 al formulario (igual que agreg el objeto Random denominado randomizer), como sigue. C# // Create a Random object to generate random numbers. Random randomizer = new Random(); // These ints will store the numbers // for the addition problem. int addend1; int addend2;
Nota Un valor de tipo int (Integer) se utiliza para almacenar un valor numrico positivo o negativo. Puede contener cualquier nmero comprendido entre el -2147483648 y el 2147483647. Slo puede almacenar los nmeros enteros y no los decimales.
4. Luego, agregue un mtodo denominado StartTheQuiz() que utiliza el mtodo Next() del objeto Random para elegir dos nmeros y colocarlos en las etiquetas. Gradualmente ir rellenando todos los problemas e iniciar el temporizador, as que debe agregar un comentario. Debe tener este aspecto: C# /// <summary> /// Start the quiz by filling in all of the problems /// and starting the timer. /// </summary> public void StartTheQuiz() { // Fill in the addition problem. addend1 =
de 5
Nota Recuerde que ha llamado a randomizer.Next(51). El motivo de utilizar 51 y no 50 es que los dos nmeros sumen una respuesta que est comprendida entre el 0 y el 100. Si pasa 50 al mtodo Next(), elegir un nmero del 0 al 49, de modo que mayor respuesta posible sera 98, y no 100. Despus de ejecutarse las dos primeras instrucciones del mtodo, cada uno de los dos valores de tipo int (Integer), addend1 y addend2, contiene un nmero aleatorio del 0 al 50.
Las instrucciones establecen las propiedades Text de las dos etiquetas plus, plusLeftLabel y plusRightLabel, para que muestren los dos nmeros aleatorios. Hay que utilizar el mtodo ToString() del valor int (Integer) para convertirlo en texto (en programacin, string, o cadena, significa texto), porque los controles Label nicamente muestran texto, y no nmeros. 5. El botn de inicio debe iniciar la prueba. Para ello, vaya al Diseador de Windows Forms y haga doble clic en el botn, a fin de agregar un controlador de eventos Click. A continuacin, agregue las dos instrucciones siguientes. C# private void startButton_Click(object sender, EventArgs e) { startButton.Enabled = false; StartTheQuiz(); }
Ya sabe lo que hace la segunda instruccin: llama al nuevo mtodo StartTheQuiz(). La primera instruccin establece la propiedad Enabled del control startButton en False. Con ello se deshabilita el botn, de modo que el usuario no pueda hacer clic en l. De esta forma, el usuario puede hacer clic en el botn de inicio una sola vez. A continuacin, el botn aparece atenuado y no est disponible, y el usuario debe finalizar la prueba antes de que se agote el tiempo (o cerrar el programa). 6. Ahora, guarde y ejecute el programa. Haga clic en el botn de inicio. Debe aparecer un problema de suma aleatoria, como se muestra en la siguiente imagen.
Contenido de la comunidad
Probablemente no sea un error de sintaxis
Ya que parece que el texto viene del ingls lo ms probable es que sea un error de traduccin, adems el ide te avisa donde hay un error ya que ese objeto o variable no existe de todas maneras
Sin embargo el compilador al probar dice que hay un error en la inicializacin de "suma":
sum.Value = 0;
Se soluciona sustituyendo esta expresin por la correcta, ya que hemos llamado a la casilla "suma" y no "sum":
suma.Value = 0;
de 5
Visual Studio 2010 Como esta prueba tiene lmite de tiempo, vamos a agregar un temporizador de la cuenta atrs. Es preciso que el programa realice el seguimiento del nmero de segundos que quedan a medida que el juego progresa.
2. Ahora, hay que agregar algo que cuente el tiempo de verdad, como un temporizador. Vaya al Diseador de Windows Forms y arrastre un control Timer del Cuadro de herramientas (en la categora Componentes) hasta el formulario. Aparecer en el rea gris de la parte inferior del Diseador de Windows Forms. 3. Haga clic en el icono timer1 que acaba de agregar y establezca la propiedad Interval en 1000. Esto hace que el evento Tick se desencadene cada segundo. A continuacin, haga doble clic en el icono para agregar el controlador de eventos Tick. El IDE cambiar al editor de cdigo y saltar al nuevo mtodo de control de eventos. Agregue las instrucciones siguientes. C# private void timer1_Tick(object sender, EventArgs e) { if (timeLeft > 0) { // Display the new time left // by updating the Time Left label. timeLeft = timeLeft 1; timeLabel.Text = timeLeft + " seconds"; } else {
// If the user ran out of time, stop the timer, show // a MessageBox, and fill in the answers. timer1.Stop(); timeLabel.Text = "Time's up!"; MessageBox.Show("You didn't finish in time.", "Sorry"); sum.Value = addend1 + addend2; startButton.Enabled = true;
Segn lo que hemos agregado, cada segundo el temporizador comprobar si se ha agotado el tiempo. Para ello, comprueba si el valor de tipo int (Integer) de timeLeft es mayor que 0. Si lo es, queda tiempo. En primer lugar, el temporizador resta 1 a timeLeft y, a continuacin, actualiza la propiedad Text del control timeLabel para mostrar al usuario cuntos segundos quedan. Si no queda tiempo, el temporizador se detiene y cambia el texto del control timeLabel de modo que muestre que se agot el tiempo. Aparecer un cuadro de mensaje que indicar al usuario que la prueba ha finalizado. Se revela la respuesta. En este caso, se suman addend1 y addend2. La propiedad Enabled del control startButton se establece en true, para que botn vuelva a estar disponible. De ese modo, el usuario puede volver a empezar la prueba. Hemos agregado una instruccin if else, que es la manera de indicar a los programas que tomen decisiones. Una instruccin if else tiene el siguiente aspecto. VB If (something your program will check) Then ' statements that will get executed ' if the thing that the program checked is true Else ' statements that will get executed ' if the thing that the program checked is NOT true End If C# if (something your program will check) { // statements that will get executed // if the thing that the program checked is true } else { // statements that will get executed // if the thing that the program checked is NOT true } Vamos a fijarnos con ms atencin en la instruccin que hemos agregado en el bloque else, para mostrar la respuesta al problema de suma. C# sum.Value = addend1 + addend2;
Como probablemente sabr, addend1 + addend2 suma los dos valores.La primera parte (sum.Value) utiliza la propiedad Value del control NumericUpDown para mostrar la respuesta de 4
correcta.La propiedad Value se utiliza de nuevo ms tarde, para comprobar las respuestas de la prueba. Un control NumericUpDown facilita al usuario la escritura de nmeros. Este es el motivo por el que se utiliza este control para las respuestas a los problemas de matemticas.Dado que todas las respuestas son nmeros del 0 al 100, se dejan las propiedades predeterminadas Minimum y Maximum establecidas en 0 y 100.Esto hace que el control nicamente permita al usuario escribir un nmero del 0 al 100.Como las respuestas solo pueden ser nmeros enteros, la propiedad DecimalPlaces se deja establecida en 0, lo que significa que el usuario no puede escribir decimales.(Si desea permitir que el usuario escriba 3,141 pero no 3,1415, podra establecer la propiedad DecimalPlaces en 3.) 4. Agregue tres lneas al final de mtodo StartTheQuiz(), de modo que el cdigo tenga este aspecto. C# /// <summary> /// Start the quiz by filling in all of the problems /// and starting the timer. /// </summary> public void StartTheQuiz() { // Fill in the addition problem. addend1 = randomizer.Next(51); addend2 = randomizer.Next(51); plusLeftLabel.Text = addend1.ToString(); plusRightLabel.Text = addend2.ToString(); sum.Value = 0; // Start the timer. timeLeft = 30; timeLabel.Text = "30 seconds"; timer1.Start();
Ahora, al empezar la prueba, establece el valor de tipo int (Integer) de timeLeft en 30 y cambia la propiedad Text del control timeLabel a 30 segundos. A continuacin, llama al mtodo Start() del control Timer para iniciar la cuenta atrs. (Todava no comprueba la respuesta, esto viene despus.) 5. Guarde y ejecute el programa. Al hacer clic en el botn de inicio, el temporizador debera iniciar la cuenta atrs. Cuando se agota el tiempo, la prueba finaliza y se muestra la respuesta. En la siguiente imagen se muestra la prueba en marcha. Prueba matemtica en marcha
Tabla de vnculos
1http://msdn.microsoft.com/es-es/library/dd492165.aspx 2http://msdn.microsoft.com/es-es/library/dd492147.aspx
Contenido de la comunidad
Problema de sum.Value (C#)
En el cdigo de los pasos 3 y 4 hay que sustituir la expresin:
sum.Value
por la correcta:
suma.Value
de 4
Este artculo se tradujo de forma manual. Mueva el puntero sobre las frases del artculo para ver el texto original.
Visual Studio 2010 Es preciso que la prueba compruebe si el usuario responde correctamente. Afortunadamente, escribir mtodos que realizan un clculo simple, como el mtodo CheckTheAnswer(), no es difcil. Nota Para quienes estn realizando este tutorial en Visual Basic, cabe destacar que, como este mtodo devuelve un valor, en lugar de la palabra clave Sub usual debern utilizar la palabra clave Function. Realmente es as de sencillo: las subrutinas no devuelven valores, las funciones, s.
El programa debe llamar a este mtodo para comprobar si el usuario respondi correctamente. Para ello, se agrega if else a la instruccin. La instruccin tiene un aspecto parecido al siguiente. C# if (CheckTheAnswer()) { // statements that will get executed // if the answer is correct } else if (timeLeft > 0) { // statements that will get executed // if there's still time left on the timer }
(d=printer).aspx
else { }
2. Luego, se modifica el controlador de eventos Tick del temporizador para comprobar la respuesta. El nuevo controlador de eventos con comprobacin de respuesta debera incluir lo siguiente. C# private void timer1_Tick(object sender, EventArgs e) { if (CheckTheAnswer()) { // If the user got the answer right, stop the timer // and show a MessageBox. timer1.Stop(); MessageBox.Show("You got all the answers right!", "Congratulations"); startButton.Enabled = true; } else if (timeLeft > 0) { // Decrease the time left by one second and display // the new time left by updating the Time Left label. timeLeft; timeLabel.Text = timeLeft + " seconds"; } else { // If the user ran out of time, stop the timer, show // a MessageBox, and fill in the answers. timer1.Stop(); timeLabel.Text = "Time's up!"; MessageBox.Show("You didn't finish in time.", "Sorry"); sum.Value = addend1 + addend2; startButton.Enabled = true; } }
Ahora, si el controlador de eventos del temporizador detecta que el usuario respondi correctamente, detiene el temporizador, muestra un mensaje de felicitacin y hace que el botn de inicio vuelva a estar disponible. 3. Guarde y ejecute el programa. Inicie el juego y escriba la respuesta correcta al problema de suma. Nota Al escribir la respuesta, puede que observe algo extrao en el control NumericUpDown. Si empieza a escribir sin seleccionar toda la respuesta, el cero no desaparece y hay que eliminarlo manualmente. Corregiremos esto ms adelante en este tutorial.
de 3
volver a estar disponible el botn de inicio. Haga clic de nuevo en el botn de inicio para asegurarse de que suceda as.
Tabla de vnculos
1http://msdn.microsoft.com/es-es/library/dd492138.aspx 2http://msdn.microsoft.com/es-es/library/dd492144.aspx
Contenido de la comunidad
2012 Microsoft. Reservados todos los derechos.
(d=printer).aspx
Este artculo se tradujo de forma manual. Mueva el puntero sobre las frases del artculo para ver el texto original.
Visual Studio 2010 Posiblemente se habr fijado en que al escribir nmeros en el control NumericUpDown sucede algo extrao. Para corregirlo, se agrega un controlador de eventos Enter.
de 3
El cdigo debe tener este aspecto. C# private void answer_Enter(object sender, EventArgs e) { // Select the whole answer in the NumericUpDown control. NumericUpDown answerBox = sender as NumericUpDown; if (answerBox != null) { int lengthOfAnswer = answerBox.Value.ToString().Length; answerBox.Select(0, lengthOfAnswer); }
Aunque inicialmente parezca complejo, resulta ms fcil de entender si se examina paso a paso. En primer lugar, fjese en la parte superior del mtodo: object sender en C# o sender As System.Object en Visual Basic. Esto significa que dentro del mtodo, cada vez que se utiliza sender, hace referencia al control NumericUpDown cuyo evento Enter se desencadena. As que, en la primera lnea del mtodo, se especifica que no se trata de un simple objeto, sino que es concretamente un control NumericUpDown. (Cada control NumericUpDown es un objeto, pero no todos los objetos son un control NumericUpDown.) En la lnea siguiente se comprueba si se ha llevado a cabo correctamente la conversin (de tipos) de answerBox: de un objeto a un control NumericUpDown. Si la conversin de tipos no ha sido correcta, su valor sera null (C#) o Nothing (Visual Basic). En la tercer lnea se busca la longitud de la respuesta que se muestra actualmente en el control NumericUpDown. En la cuarta lnea se ordena al control NumericUpDown que seleccione la respuesta. Ahora, cuando el usuario navega al control, desencadena este evento, lo que provoca que se seleccione la respuesta. En cuanto el usuario empieza a escribir, se borra la respuesta anterior y se reemplaza con la nueva. 2. Una vez que se haya implementado este controlador de eventos, vaya al Diseador de Windows Forms y seleccione el control NumericUpDown de diferencia. Vaya a la pgina Eventos del cuadro de dilogo Propiedades, desplcese hacia abajo hasta el evento Enter y seleccione el controlador de eventos que acaba de agregar. 3. A continuacin, haga lo mismo para los controles NumericUpDown del producto y del cociente.
(d=printer).aspx
Tabla de vnculos
1http://msdn.microsoft.com/es-es/library/dd492142.aspx 2http://msdn.microsoft.com/es-es/library/dd492165.aspx
Contenido de la comunidad
2012 Microsoft. Reservados todos los derechos.
de 3
Este artculo se tradujo de forma manual. Mueva el puntero sobre las frases del artculo para ver el texto original.
Visual Studio 2010 Para agregar un problema de resta, necesita: resta. Generar nmeros aleatorios para el problema (y asegurarse de que la respuesta est comprendida entre 0 y 100). Actualizar el mtodo que comprueba las respuestas para que compruebe tambin el nuevo problema de resta. Actualizar el controlador eventos Tick del temporizador para que rellene la respuesta correcta cuando se agote el tiempo. Almacenar los valores de
Nota Los nombres de los nuevos valores int (minuend y subtrahend, minuendo y sustraendo) no son trminos de Visual C#, ni siquiera trminos de programacin. Se trata de los nombres utilizados tradicionalmente en aritmtica para el nmero que se resta (el substraendo) y el nmero del que se resta (el minuendo). La diferencia es el minuendo menos el sustraendo. Puede utilizar otros nombres, porque el programa no requiere nombres especficos para los valores de tipo int,
o 6: Agregar un problema de resta (d=printer).aspx los controles, los componentes o los mtodos. Hay algunas reglas (por ejemplo, los nombres no pueden comenzar con dgitos), pero en general, podra utilizar nombres como x1, x2, x3, x4, etc.
de 5
Sin embargo, sera difcil leer el cdigo y casi imposible realizar el seguimiento de los problemas. Ms adelante en este tutorial utilizaremos los trminos tradicionales para la multiplicacin (multiplicand multiplier = product, multiplicando multiplicador = producto) y la divisin (dividend divisor = quotient, dividendo divisor = cociente).
2. A continuacin, modifique el mtodo StartTheQuiz() para rellenar un problema de resta aleatorio. El nuevo cdigo aparece tras el comentario "Fill in the subtraction problem". El cdigo debe tener este aspecto. C# /// <summary> /// Start the quiz by filling in all of the problems /// and starting the timer. /// </summary> public void StartTheQuiz() { // Fill in the addition problem. addend1 = randomizer.Next(51); addend2 = randomizer.Next(51); plusLeftLabel.Text = addend1.ToString(); plusRightLabel.Text = addend2.ToString(); sum.Value = 0; // Fill in the subtraction problem. minuend = randomizer.Next(1, 101); subtrahend = randomizer.Next(1, minuend); minusLeftLabel.Text = minuend.ToString(); minusRightLabel.Text = subtrahend.ToString(); difference.Value = 0; // Start the timer. timeLeft = 30; timeLabel.Text = "30 seconds"; timer1.Start();
Este cdigo utiliza el mtodo Next() de la clase Random de una forma algo distinta. Al darle dos valores, elige al azar uno que sea mayor o igual que el primero y menor que el segundo. La siguiente lnea elige un nmero aleatorio del 1 al 100 y lo almacena en el minuendo. C# minuend = randomizer.Next(1, 101);
Se puede llamar al mtodo Next() de la clase Random de varias formas. Cuando se puede llamar a un mtodo de ms de una manera, se denomina mtodo sobrecargado. Puede utilizar IntelliSense para explorar esta posibilidad. Fijmonos de nuevo en la informacin sobre herramientas de la ventana IntelliSense del mtodo Next(). Informacin sobre herramientas de la ventana IntelliSense
(d=printer).aspx
Observe que la informacin sobre herramientas muestra (+ 2 sobrecargas). Esto significa que hay dos formas ms de llamar al mtodo Next(). Al escribir el nuevo cdigo para el mtodo StartTheQuiz(), puede ver ms informacin. En cuanto escriba randomizer.Next(, aparecer la ventana IntelliSense. Presione las teclas de direccin ARRIBA y ABAJO para recorrer cclicamente las sobrecargas, como se muestra en la siguiente imagen. Sobrecargas en la ventana IntelliSense
La de la imagen anterior es la que deseamos utilizar, porque permite especificar un valor mnimo y mximo. 3. Modifique el mtodo CheckTheAnswer() para que compruebe si la respuesta de la resta es correcta. El cdigo debe tener este aspecto. C# /// <summary> /// Check the answer to see if the user got everything right. /// </summary> /// <returns>True if the answer's correct, false otherwise.</returns> private bool CheckTheAnswer() { if ((addend1 + addend2 == sum.Value) && (minuend subtrahend == difference.Value)) return true; else return false; }
&& es el operador logical and de Visual C#. En Visual Basic, el operador equivalente es AndAlso. Equivale a decir, "Si addend1 ms addend2 es igual al valor de la suma NumericUpDown, y si el minuendo menos el sustraendo es igual al valor de la diferencia NumericUpDown". El mtodo CheckTheAnswer() devuelve true nicamente si el problema de suma es correcto y el problema de resta es correcto. de 5
4. Cambie la ltima parte del controlador de evento Tick del temporizador de modo que rellene la respuesta correcta cuando se agote el tiempo. El cdigo debe tener este aspecto. C# else { // If the user ran out of time, stop the timer, show // a MessageBox, and fill in the answers. timer1.Stop(); timeLabel.Text = "Time's up!"; MessageBox.Show("You didn't finish in time.", "Sorry"); sum.Value = addend1 + addend2; difference.Value = minuend subtrahend; startButton.Enabled = true; }
5. Guarde y ejecute el cdigo. Ahora, el programa deber incluir un problema de resta, como se muestra en la siguiente imagen. Cuestionario de matemticas con un problema de resta
Tabla de vnculos
1http://msdn.microsoft.com/es-es/library/dd492175.aspx 2http://msdn.microsoft.com/es-es/library/dd492138.aspx
Contenido de la comunidad
(d=printer).aspx
de 5
Este artculo se tradujo de forma manual. Mueva el puntero sobre las frases del artculo para ver el texto original.
Visual Studio 2010 Antes de comenzar este procedimiento, piense en cmo agregar los problemas de multiplicacin y divisin. Piense en el paso inicial, que requiere almacenar valores.
2. Al igual que antes, modifique el mtodo StartTheQuiz() para rellenar problemas de multiplicaciones y divisiones aleatorias. El cdigo debe tener este aspecto. C# /// <summary> /// Start the quiz by filling in all of the problems /// and starting the timer. /// </summary> public void StartTheQuiz() { // Fill in the addition problem. addend1 = randomizer.Next(51); addend2 = randomizer.Next(51); plusLeftLabel.Text = addend1.ToString();
(d=printer).aspx
plusRightLabel.Text = addend2.ToString(); sum.Value = 0; // Fill in the subtraction problem. minuend = randomizer.Next(1, 101); subtrahend = randomizer.Next(1, minuend); minusLeftLabel.Text = minuend.ToString(); minusRightLabel.Text = subtrahend.ToString(); difference.Value = 0; // Fill in the multiplication problem. multiplicand = randomizer.Next(2, 11); multiplier = randomizer.Next(2, 11); timesLeftLabel.Text = multiplicand.ToString(); timesRightLabel.Text = multiplier.ToString(); product.Value = 0; // Fill in the division problem. divisor = randomizer.Next(2, 11); int temporaryQuotient = randomizer.Next(2, 11); dividend = divisor * temporaryQuotient; dividedLeftLabel.Text = dividend.ToString(); dividedRightLabel.Text = divisor.ToString(); quotient.Value = 0; // Start the timer. timeLeft = 30; timeLabel.Text = "30 seconds"; timer1.Start();
3. Modifique el mtodo CheckTheAnswer() para que tambin compruebe los problemas de divisin y multiplicacin. El cdigo debe tener este aspecto. C# /// <summary> /// Check the answer to see if the user got everything right. /// </summary> /// <returns>True if the answer's correct, false otherwise.</returns> private bool CheckTheAnswer() { if ((addend1 + addend2 == sum.Value) && (minuend subtrahend == difference.Value) && (multiplicand * multiplier == product.Value) && (dividend / divisor == quotient.Value)) return true; else return false; }
Nota
de 4
Dado que no hay ninguna manera simple de escribir el signo de multiplicacin () y el signo de divisin () mediante el teclado, Visual C# y Visual Basic utilizan el asterisco (*) para la
(d=printer).aspx
4. Cambie la ltima parte del controlador de evento Tick del temporizador de modo que rellene la respuesta correcta cuando se agote el tiempo. El cdigo debe tener este aspecto. C# else { // If the user ran out of time, stop the timer, show // a MessageBox, and fill in the answers. timer1.Stop(); timeLabel.Text = "Time's up!"; MessageBox.Show("You didn't finish in time.", "Sorry"); sum.Value = addend1 + addend2; difference.Value = minuend subtrahend; product.Value = multiplicand * multiplier; quotient.Value = dividend / divisor; } startButton.Enabled = true;
5. Guarde y ejecute el programa. Ahora, hay que responder a cuatro problemas para completar la prueba, como se muestra en la siguiente imagen. Prueba matemtica con cuatro problemas
Tabla de vnculos
1http://msdn.microsoft.com/es-es/library/dd492174.aspx 2http://msdn.microsoft.com/es-es/library/dd492142.aspx de 4
Contenido de la comunidad
2012 Microsoft. Reservados todos los derechos.
(d=printer).aspx
Este artculo se tradujo de forma manual. Mueva el puntero sobre las frases del artculo para ver el texto original.
Visual Studio 2010 Piense en cmo el programa crea un problema de divisin aleatoria. Piense por qu el programa no crea un problema en que la respuesta sea una fraccin. Para aprender ms, intente cambiar el color del control timeLabel y proporcionar al usuario alguna sugerencia.
Tabla de vnculos
1http://msdn.microsoft.com/es-es/library/dd553235.aspx 2http://msdn.microsoft.com/es-es/library/dd492175.aspx
Contenido de la comunidad
2012 Microsoft. Reservados todos los derechos.
1 de 1