Bienvenidos a el tercer tutorial sobre Visual Basic 2010, lenguaje principalmente gráfico y que facilita mucho la programación, lo cual no impide crear grandes aplicaciones e incluso juegos. A lo largo de este tutorial os enseñare otro ejemplo muy básico y que os servirá para seguir familiarizandos con el entorno de programación y el lenguaje, se trata de Clickbutton, un juego el objetivo del cual sera a través de clicks, averiguar hasta que numero eres capaz de llegar sin parar de clikear, para este tutorial usaremos por primera vez las variables y las matemáticas, sin mas allá vamos.
Bien, como todo proyecto nuevo lo primero que vamos a hacer va a ser crear un nuevo proyecto del tipo windows form como vimos en el anterior tutorial, seguidamente (al igual que con el "Hello Word"), vamos a dejar lista lo que es la parte gráfica. Para este juego vamos a necesitar en su mayoría un "button", algún que otro "timer" y un "textbox" entre otros. Bien pues simplemente los localizamos en el ya conocido cuadro de herramientas y los arrastramos hasta nuestra ventana. Nos quedaría algo así:
claro esta, esto es el cuerpo del juego, luego cuando ya tengamos terminado el juego en si, haremos un menú para que quede mejor y no sea simplemente abrir y jugar.
Bueno como veis consta básicamente de un botón, un textbox, un label (informando) y un timer que aunque no se ve esta, al igual que los botones y cualquier otra herramienta lo encontrareis en la caja de herramientas, tan solo lo arrastráis hasta vuestra ventana (da igual la posición) y os aparecerá abajo el icono.
Dejada ya lista la parte gráfica de lo que es el cuerpo del juego, os voy a explicar un poco lo que haremos. Crearemos una variable del tipo integer (para almacenar números enteros) que contendrá el contenido del textbox (0) y cada vez que pulsemos el botón, le sumaremos uno a la variable, de manera que vaya en aumento, y vosotros diréis "buaa que fácil cualquiera podrá llegar hasta 1000 haciendo pausas" y yo os diré "el timer evitara esto", usaremos el timer para que si se deja de pulsar el botón durante mas de 3 segundos active un texto que nos diga que hemos perdido y nos devuelva al menú.
Así que ahora que ya tenemos la parte gráfica y una idea de lo que vamos a hacer solo queda ponernos manos a la obra con el código.
Primero que nada explicaros que para declarar una variable se ha de poner "Dim", seguido del nombre que le queráis poner y por ultimo el tipo de variable que sea, un ejemplo:
Dim numero as integer = 0
esta nos servirá para nuestro juego así que ya podéis ir poniéndola:
Public Class Form1 Dim numero As Integer = 0 Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load End Sub
Aclaración: los otros dos tipos de variables son double (decimales) y string (texto), mas adelante haremos uso de ellas.
Bien y ahora de momento vamos a poner el código necesario para que el botón haga su trabajo, doble y click y escribimos:
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click numero = numero + 1 End Sub
Simplemente lo que hacemos es decir que al pulsar el botón la variable numero sea igual a la variable numero mas uno, y ahora para que funcione del todo nos faltara asignar al textbox que su contenido sea igual a la variable numero:
Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick TextBox1.Text = numero End Sub
Para ello he usado el timer que tiene una cuenta atrás de unas milésimas y al llegar a 0 muestra la variable en el textbox, si creéis que me complico es solo que lo hago para que aprendáis mas el uso de las variables y a salir de situaciones complicadas.
Aclaración: El timer al principio aparece en false por lo que deberemos cambiarlo para que este en true, de esta manera cuando se ejecute la aplicación empezara la cuenta atrás, para ello solo tenemos que hacer click encima de el e ir a el cuadro de propiedades.
Como veis los parámetros mas importantes son enabled (del ya hablado) y interval (el contador de el timer, donde 1s = 1000).
Bueno pues ahora podemos ejecutarlo y probarlo, sin lugar a duda funcionara correctamente, el único inconveniente sera el de que puedes hacer pausas y por lo tanto "trampas" en el juego, así que vamos a solucionarlo añadiendo otro timer que tendrá una cuenta atrás de 3 segundos (3000) y se activara cuando pulsemos en el botón. Haremos algo así como que cada vez que se pulsa el botón se reinicie el contador de manera que si no pulsas el botón en 3s pierdes.
Sin mas, añadimos el otro timer y pulsamos doble click (en el botón), y a continuación de la suma de variable escribimos:
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click numero = numero + 1 Timer2.Stop() Timer2.Start() End Sub
y ahora doble click en el timer (2) y escribimos:
Private Sub Timer2_Tick(sender As System.Object, e As System.EventArgs) Handles Timer2.Tick MsgBox("pierdes") Me.Close() End Sub
Vale, os voy a explicar que hemos hecho, Cada vez que pulsemos el botón, sumaremos uno a la variable y al mismo tiempo el timer se parara y empezara (reinicio) y entonces si se cumple la condición de cuenta atrás del timer2 se mostrara un mensaje diciendo que has perdido (MsgBox) y se cerrara la ventana (o en su defecto volveremos al menú).
Pues nada aquí lo tenéis, vuestro primer juego, como comprobareis todo funcionara tal como hemos previsto y si dejamos de pulsar durante tres segundos perderemos.
Bueno antes de despedirme quisiera acercaros un posible menú para el juego :
Para ello simplemente vamos a el explorador de soluciones y pulsamos botón derecho encima del nombre de nuestro juego (Clickbuttpn) -> agregar -> windows form
Ahora tendremos dos windows form, uno el menú y otro el cuerpo del juego, por mi parte para no liarnos le he cambiado el nombre de manera que quede asi:
Aclaración: He llamado al menú antecuerpo porque menú ya es una función en Visual Basic y por tanto podríamos tener problemas mas adelante a la hora de llamar al menú.
Ahora toca modificar el windows form del menú como mejor os parezca, por mi parte lo dejare de esta manera:
No esta muy trabajado, pero por el momento nos servirá. Lo único que cabe aclarar del menú es que usaremos [me.visible = false] para que cuando pulsemos en nuevo, el menú desaparezca y no se quede abierto y [cuerpo.show] para mostrar el cuerpo del juego, de manera que nos quedaría algo así (adaptado a mi menú):
Public Class Menu Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Me.Visible = False Cuerpo.Show() End Sub Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click MsgBox("Version 1.0") End Sub Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click Me.Close() End Sub End Class
Bien pues ahora ya solo queda modificar para que cuando perdamos la partida en vez de cerrarse la ventana, vuelva al menú, para ello retomamos el código del timer2 y seguido de [me.close] pondremos:
Private Sub Timer2_Tick(sender As System.Object, e As System.EventArgs) Handles Timer2.Tick MsgBox("pierdes") Me.Close() Antecuerpo.Visible = True End Sub
Y bueno ahora si que si ya lo tenemos, por ultimo para que al ejecutar el juego se nos muestre primero el menú (en nuestro caso como hemos empezado por el cuerpo del juego pues primero mostrara este, pero como de normal se empieza por el menú pues este se mostrara primero) iremos a Proyecto -> propiedades de ClickButton (o como hayáis llamado a vuestra aplicación) y en formulario de inicio seleccionamos antecuerpo, guardamos, probamos y listo.
Os espero en la siguiente entrega donde complicaremos un poco mas el juego, poniendo niveles y ademas os enseñare también a crear un auto-instalador para vuestro juego/aplicación.
Comentarios
si quiero hacer una calculadora segun formula?
lo que pasa esque quiero crear una aplicacion, donde haya espacios donde uno pueda poner numeros (ej: x,y,z), y luego, al colocar todos los numeros, la aplicacion siga una formula predeterminada dentro del codigo de esta (ej: (x + (x*y))/z), como tengo que programarla??, que pasos tengo que segir??
espero haberme dado a entender, y que me puedan responder lo mas pronto y claro posible :)
mmmm, lo voi a poner de otra
mmmm, lo voi a poner de otra manera:
en el programa pongo 2 RichTextBox, en las cuales se puedan poner numeros, debe haber un boton en el programa, que indique que sume los numeros de las 2 RichTextBox y los muestre en una TextBox, el problema esque nose como hacer que el boton sume ambos, porque lo unico que me queda en la TextBox es RichTextBox1 + RichTextBox2, y no quiero eso... si alguien fuera tan amable de ayudarme porfavor :)
Es muy sencillo
Tan solo debes poner TextBox1.Text = RichTextBox1.Text + RichTextBox2.Text
Eso solo es para hacer una suma 'literal', si quieres hacer una numerica, haces lo mismo con los RichTextBox llamando a int.Parse(string loquequierasparsear) y haciendo un convert de Int a String.
Saludos!
Proxima entrega?
bueno, yo aun sigo esperando que hagan una proxima entrega... o un tutorial para crear un instalador, como los que uno descarga de internet y te da multiples opciones de instalacion, rutas, etc....
Los instaladores
Normalmente los instaladores no se programan, si no que ya vienen hechos. Hay diversos programas que los hacen automaticamente, gratuitos y de pago. El mejor que hay para Windows es InstallShield Wizard, aunque es de pago.
Excelente, ¿cuando viene la
Excelente, ¿cuando viene la tercera entrega?
Con esto
Con esto ya tenéis mucho para hacer, lo mejor ahora es practicar y ir descubriendo las distintas funciones que te ofrece Visual Basic .Net
programa externo
que hago para que al apretar un boton me habra un programa externo??
(creo que esta pregunta no va aqui, pero no se donde ponerla)
Usa
Usa Shell
shell("RUTA Y ARCHIVO")
muchas gracias, si me
muchas gracias, si me funciono
.
Exacto jaja
Gracias muchas gracias Muy
Gracias muchas gracias Muy bueno el juego Me entretuve ratote Y no me ha costado ni un centimo Algo que me gustaria añadir es que seria bueno añadir esto Timer2.Stop() en el timer2 Ya que si no apareceran MSGBox cada 3 segundos Saludos Y gracias
buena acotación
buena acotación, en que parte del codigo iria el Timer2.Stop()????....no me funciona...y los msgbox siguen y siguen apareciendo....gracias
Los timers
Son para contar, no para hacer este tipo de cosas. Usando timers pierdes rendimiento a raudales, y ocurren cosas como estas. Lo mejor para estos casos es el uso de Threads (Multihilado) y bucles.
.
ya pero se supone que esta hecho de una manera sencilla y de fácil entendimiento, así como esta hecho va a la perfección no tiene problemas... que se podría mejorar el code no me cabe ninguna duda pero por el momento creo que esta bien.
Sal2!
-> Creaciones <-
Os invito a probar el lol xD
http://signup.leagueoflegends.com/?ref=50814a20894be236637679
Bueno
Yo solo te recomendaría que pusieras el codigo lo mejor optimizado y mas correctamente que pudieras, ya que si algun usuario luego sigue tus tutoriales, aunque lo pongas mas tarde, seguramente cojeran lo de los timers por sencillez. Te doy la razón, es mas sencillo, pero lo mejor es que se acostumbren a un Visual Basic mas optimizado.