Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: eva87 en 18 Abril 2012, 16:59 pm



Título: Programa que no funciona para adivinar un numero
Publicado por: eva87 en 18 Abril 2012, 16:59 pm
Buenas tardes.
Estoy intentando crear un programa que calcule un aleatorio y te de varias oportunidades para acertarlo, el problema es que no puedo encontrar la manera de que el numero sea aleatorio al iniciar el programa pero se mantenga constante a lo largo de la ejecucion del mismo,  y ademas de eso quiero que una vez dicho un numero me de la opcion de decir otro, pero e puesto un bucle que no me funciona como querria
 muchas gracias de antemano ;D :huh:

Código
  1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  2.        Dim k
  3.        k = ALEAT()
  4.        Const a =
  5.        TextBox1.Text() = "Pon el numero aqui "
  6.    End Sub
  7.  
  8.    Public Function ALEAT() As Integer
  9.        Dim Aleatorio, max
  10.        max = 1000
  11.        Randomize()
  12.        a = Int((max - 1) * Rnd() + 1)
  13.    End Function
  14.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  15.        Dim numero, num, max, cont, bol, al
  16.        al = a
  17.        num = 0
  18.        cont = 1
  19.        bol = True
  20.        num = TextBox1.Text
  21.        Do While num <> al And cont < 10
  22.            'msgbox("intento numero " & cont)
  23.            If num > al Then
  24.                MsgBox("Intento numero " & cont & ". Es menor. Prueba otra vez")
  25.                num = TextBox1.Text
  26.            Else
  27.                MsgBox("Intento numero " & cont & ". Es mayor. Prueba otra vez")
  28.                num = TextBox1.Text
  29.            End If
  30.            cont = cont + 1
  31.        Loop
  32.        If num = al Then
  33.            bol = False
  34.        End If
  35.        If bol = True Then
  36.            MsgBox("Has fallado, era el " & al)
  37.        Else
  38.            MsgBox("Acertastes, era el " & al & " Numero de intentos " & cont)
  39.        End If
  40.    End Sub
  41.  


Título: Re: Programa que no funciona para adivinar un numero
Publicado por: $Edu$ en 19 Abril 2012, 00:28 am
La idea la tenes, pero te confundes con el uso de funciones, si haces una funcion aparte para que genere un numero aleatorio, esta funcion tiene que devolver el numero, asi a la variable "al" le asignas la funcion. Por ejemplo haria estos cambios en la funcion y en el valor que toma "al" ..

Código
  1. Public Function ALEAT() As Integer
  2.        Dim Aleatorio, max
  3.        max = 1000
  4.        Randomize()
  5.        ALEAT = Int((max - 1) * Rnd() + 1)
  6.    End Function

Entonces luego asignas asi:

Código
  1. al = ALEAT()
  2.  


Tal vez con eso ya te funciona lo que quieres.. pero tienes cosas mal, o cosas insolitas, como la variable k. Tambien tu forma de plantearte el problema.. yo te recomiendo unas cosas:

- Leerte un buen tutorial de vb.net completo, de esos largos, pero aprenderas muchisimo, si no te gusta leer intentalo y practica con cada cosa que leas.

- Plantearte los problemas en un papel con lapicera antes de empezar a codear.

- Las dudas que tengas, como en este caso tuviste antes, de como generar el numero aleatorio para que genere lo que de verdad queres, te las podes sacar creando un proyecto nuevo siempre y haciendo pruebas ahi, porque eso de sumarle 1 y restarle y eso, es como que lo arreglaste una vez que viste q no te generaba lo que querias, prueba por ejemplo que pasa si en vez de Int le pones Cint.

Luego que hayas hecho estas cosas podras hacer el resto sin problemas