Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Número Mágico (programita)
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Número Mágico (programita) 
 
adivinum

  Mas vale tarde que nunca.... este es un clásico programa donde el programa elije un número y el usuario intenta descubrirlo con 10 posibilidades, el programa nos da la única pista que consiste en decir si el número que tenemos que descubrir es menor o mayor. Le agregue mas dificultad por medio de niveles el nivel 1 el programa elige entre 1 y 50, el nivel dos de 1 a 200, nivel 3 de 1 a 500, nivel 4 de 1 a 700 y el nivel mas difícil de 1 a mil.

Tiene una lista de usuarios que acertaron y los ordena de mayor a menor(bueno ese detalle todavía no lo resuelvo, espero que a ustedes se les ocurra una brillante idea y la compartan) donde los puntos se dan asi: 1000 porque juega en el nivel 5, 700 porque juega en el nivel 4 y asi sucesivamente, agregando a esas cifras el número de intentos que no se uso. Ejemplo: postapase  juega en el nivel 5 y acierta en el primer intento son 10 puntos mas (1010), otro usuario juega en el nivel 3 y acierta en el 5 intento, los punto son 505 y así con lo demás. Bueno algo es algo

Fmain....

Código: [Descargar] [Ocultar]
  1. código
  2.  
  3. ' gambas class file
  4.  
  5. Public espandir As Boolean = False
  6. Public offniveles As Boolean = True
  7. Public Nmagico As Float
  8. Public Ningresado As Integer
  9. Public intentos As Integer
  10.  
  11. Public puntaje As Integer
  12. Public nomJugador As String
  13. Public Const N1 As Integer = 50
  14. Public Const N2 As Integer = 200
  15. Public Const N3 As Integer = 500
  16. Public Const N4 As Integer = 700
  17. Public Const N5 As Integer = 1000
  18. Public nivelelegido As Integer
  19.  
  20.  
  21. Public Sub Form_Open()
  22.   
  23.  Me.Center
  24.  Me.Width = 210
  25.   ValueBox1.Enabled = False
  26.   nivelelegido = N1
  27.   nivel1.Checked = True
  28.   intentos = 10
  29.   Labintentos.Visible = False
  30.   offniveles = False
  31.  End
  32.  
  33. Public Function nivelesNO(offniveles As Boolean) As Boolean
  34.  If offniveles = True Then
  35.    nivel1.Enabled = False
  36.    nivel2.Enabled = False
  37.    nivel3.Enabled = False
  38.    nivel4.Enabled = False
  39.    nivel5.Enabled = False
  40.  Else
  41.    nivel1.Enabled = True
  42.    nivel2.Enabled = True
  43.    nivel3.Enabled = True
  44.    nivel4.Enabled = True
  45.    nivel5.Enabled = True
  46.  Endif
  47.     Return
  48. End
  49.  
  50. Public Sub btnborrar_Click()
  51. ValueBox1.Value = 0
  52.   ValueBox1.SetFocus
  53. End
  54.  
  55.  
  56. Public Sub btnVer_Click()
  57.  
  58.  Dim agrandar, achicar As Integer
  59.  If espandir = True Then
  60.     For achicar = 595 To 210 Step -1
  61.       FMain.Width = achicar
  62.       Wait 0.00049
  63.     Next
  64.   espandir = False
  65.   btnVer.Text = "V\nE\nR\n" "\nR\nE\nC\nO\nR\nE\nS"
  66.  Else
  67.     For agrandar = 210 To 595 Step 1
  68.       FMain.Width = agrandar
  69.       Wait 0.00049
  70.     Next
  71.     espandir = True
  72.     btnVer.Text = "O\nC\nU\nL\nT\nA\nR"
  73.  Endif
  74. End
  75.  
  76. Public Sub btnSalir_Click()
  77.  Me.Close
  78. End
  79.  
  80. Public Sub btnComenzar_Click()
  81. Dim achicar As Integer
  82. Labinfo.Text = ""
  83. Labintentos.Text = ""
  84.  
  85.  
  86. If espandir = True Then
  87.     For achicar = 595 To 210 Step -1
  88.       FMain.Width = achicar
  89.       Wait 0.00049
  90.     Next
  91.   espandir = False
  92.   btnVer.Text = "V\nE\nR\n" "\nR\nE\nC\nO\nR\nE\nS"
  93.   usuario.Show
  94.  Else
  95.    btnVer.Enabled = False
  96. Labintentos.Caption = ""
  97. Labinfo.Caption = ""
  98. usuario.Show
  99. intentos = 10
  100.  Randomize
  101.   Nmagico = Int(Rnd(1, nivelelegido))
  102. ValueBox1.SetFocus
  103.    Print Nmagico
  104.    Print nivelelegido
  105.     Endif
  106.  
  107.  
  108. End
  109.  
  110. Public Sub btnIngresar_Click()
  111. Dim level As Integer
  112. If ValueBox1.Text = 0 Then
  113.  Message.Info("El numero mínimo es 1")
  114.   ValueBox1.Value = 1
  115.  Else
  116.     
  117.  
  118. If ValueBox1.Text = Null Then
  119.  Message.Info("ingrese un número para continuar")
  120.   ValueBox1.Text = ""
  121.   ValueBox1.SetFocus
  122.  Return
  123.  Else
  124. Labintentos.Caption = nomJugador & "\nTe quedan " & intentos & "\n restantes para adivinar\n el número Magico"
  125. Ningresado = ValueBox1.Text
  126.  
  127. If Ningresado = " " Then
  128.  Message.Info("Ingrese un numero")
  129.  Else
  130.     If intentos = 1 Then
  131.        Labinfo.Caption = "Has perdido"
  132.        Labintentos.Caption = nomJugador & "\n suerte para\n el próximo juego" 
  133.       ValueBox1.Text = 0
  134.       
  135.        btnborrar.Enabled = False
  136.        btnIngresar.Enabled = False
  137.       ValueBox1.Enabled = False
  138.       btnComenzar.Enabled = True
  139.       nivelesNO(False)
  140.       
  141.    Else
  142.      If Ningresado > nivelelegido Then
  143.        Select Case nivelelegido
  144.          Case 50
  145.          level = 1
  146.          Case 200
  147.          level = 2
  148.          Case 500
  149.          level = 3
  150.          Case 700
  151.          level = 4 
  152.          Case 1000
  153.          level = 5
  154.         End Select 
  155.        Message.Info("Esta jugando en nivel: " & level & "\n" & "eliga un número menor o igual a " & nivelelegido)
  156.        ValueBox1.Text = ""
  157.        ValueBox1.SetFocus
  158.       Else
  159.  
  160.         If Ningresado >= 1001 Then
  161.            Message.Info("Elija un número entre 1 y 1000")
  162.         Else
  163.           
  164.           Select Case Ningresado
  165.              Case Nmagico
  166.                Labintentos.Caption = "FELICITACIONES \n HAS ACERTADO!!!"
  167.              Labinfo.Caption = "GANASTE!!!"
  168.              puntaje = nivelelegido + intentos
  169.             ListBox1.Add(puntaje & " <nomJugador> Nmagico Then
  170.              Labinfo.Caption = "numero menor"
  171.             Dec intentos
  172.             Labintentos.Caption = nomJugador & "\nTe quedan " & intentos & "\n restantes para adivinar\n el número Magico"
  173.           Else
  174.             Labinfo.Caption = "numero mayor"
  175.              Dec intentos
  176.             Labintentos.Caption = nomJugador & "\nTe quedan " & intentos & "\n restantes para adivinar\n el número Magico"
  177.             Labintentos.Refresh
  178.             
  179.          Endif
  180.         End Select
  181.         Endif
  182.      Endif
  183.  Endif
  184. Endif
  185. Endif
  186. Endif
  187. Print intentos
  188. End
  189.  
  190.  
  191. Public Sub Form_KeyRelease() ' bueno al final solucione con este código, ya se que esta redesprolijo el programa pero...
  192. ' ta así nos salen las cosas a los novatos, la prolijidad de un programa viene con el tiempo y la experiencia
  193.  If ValueBox1.Text > 1000 Then
  194.     ValueBox1.Text = 0
  195.     Else
  196.       Return
  197.  Endif
  198.  
  199. End
  200.  



usuario...
Código: [Descargar] [Ocultar]
  1.  
  2. ' gambas class file
  3. Public Sub btnAceptar_Click()
  4. If Txtnombre.Text = Null Then
  5.  Message.Info("Ingrese su nombre para continuar")
  6.  Return
  7.  Else
  8.   FMain.intentos = 10    ' agregue esta línea pues mostraba los intentos que restaban al jugador anterior  :oops:
  9.     FMain.btnborrar.Enabled = True
  10.     FMain.Enabled = True
  11.     FMain.nomJugador = UCase$(Txtnombre.Text)
  12.     FMain.Labintentos.Visible = True
  13.     FMain.Labintentos.Caption = FMain.nomJugador & "\nTe quedan " & FMain.intentos & "\n restantes para adivinar\n el número Magico"
  14.     FMain.btnComenzar.Enabled = False
  15.     FMain.offniveles = True
  16.     FMain.nivelesNO(FMain.offniveles)
  17. Endif
  18. FMain.ValueBox1.Enabled = True
  19. FMain.ValueBox1.SetFocus
  20. FMain.btnIngresar.Enabled = True
  21. Me.Close
  22. End
  23.  
  24. Public Sub Form_Open()
  25.   FMain.Enabled = False
  26.  Me.Center
  27.  Me.Title = "Ingrese su nombre"
  28. End
  29.  
  30. Public Sub btnCancelar_Click()
  31.  Me.Close
  32.   FMain.Enabled = True
  33.   FMain.btnVer.Enabled = False
  34. End
  35.  
  36.  


info....

Código: [Descargar] [Ocultar]
  1.  
  2. ' gambas class file
  3.  
  4. Public Sub Form_Open()
  5. Me.Center
  6. End
  7.  
  8. Public Sub Form_Leave()
  9.  Me.Close
  10. End
  11.  
  12.  
  13.  




Código fuente:    AdivinarNumero-0.0.1.tar.gz


Nota: tengo dos problemas
1. no se como limitar un valuebox a 4 dígitos
2. como ordenar números de mayor a menor en un listbox

estoy haciendo una tabla de record que es algo asi:
1000 si jugas en nivel 5
700 si jugas en nivel 4
500   si jugas en nivel 3
200 si jugas en nivel 2
50 si jugas en nivel 1
mas el factor intentos:
1 intentos= 10-1 (9)
2 intentos= 10-2 (8)
........
....


1010 <323> 06/09/2013
510 <MARIA> 06/09/2013
54 <CRISTINA> 06/09/2013    <----------- aquí esta mal aquí deberían ir los 60 despues los 59,58 etc... no se como ordenar aquí
56 <FABRICIO> 06/09/2013
57 <MARIANA> 06/09/2013
58 <CLAUDIA> 06/09/2013
58 <JULIANA> 06/09/2013
59 <FFF> 06/09/2013
59 <XXXXXXXXXXXXXXXX> 06/09/2013
60 <30> 06/09/2013
60 <45> 06/09/2013
60 <FFFFFFF> 06/09/2013
60 <HHHHHHHHHHHH> 06/09/2013
60 <JORGE> 06/09/2013
60 <LUCIA> 06/09/2013
60 <= ññññññññññññññññ => 06/09/2013

Le agregue una lista de los numeros ingresados,
guarda recores en un archivo *.lst
sigue con errores pero.... se lo dejo para que practiquen modificaciones o agregados

AdivinarNumero-0.0.2.tar.gz
.no se como anadir los ultimos item de un listbox a un archivo siemple de texto (ya resolví)

3.jajaja acepto sugerencias
4. saludos

AdivinarNumero-0.0.3.tar.gz
 




===================
Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
 
última edición por v3ctor el Martes, 11 Junio 2013, 02:45; editado 14 veces 
v3ctor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Número Mágico (programita) 
 
Este mensaje no lo había visto.

Antes de nada, decirte es mejor decir siempre que hace la aplicación al principio.

Es que no me entero, si se trata de adivinar un número o es mas bien una cosa matemática con números,
que los hay. A estas horas no recuerdo, pero eran propiedades curiosas de los números.Cuadrados, perfectos,
la matemática es muy grande.

Es que el mensaje es grande.  

Voy a verlo un poco. Mejor bajo la aplicación.

No se ahora mismo si es posible limitar el número de dígitos en un valuebox, no lo parece.
TextBox creo que es mucho mejor para hacer esto. Como es una cadena, tienes que comprobar siempre su longitud con la
función LEN .

Además, también puedes en el mismo textbox hacer que solo te acepte números.
Tienes las dos posibilidades, números y longitud. Que solo te acepte números tienes
dos posibilidades:

PUBLIC SUB MyTextBox_KeyPress()
  IF Instr("0123456789", Key.Text) = 0 THEN
   STOP EVENT
 ENDIF
END SUB
 


Este de arriba es muy interesante. Fíjate en la función Instr,
tienes un texto que va del 0 al 9 y al pulsar la tecla se busca en este
texto, si se encuentra lo deja escribir si no anula el evento de la tecla

O también usando el código de caracteres:

PUBLIC SUB TextBox1_KeyPress()
   IF key.Code >= 48 AND key.Code <= 57 THEN
   ELSE IF key.Code = key.BackSpace THEN
   ELSE IF key.Code = key.Delete THEN
   ELSE
     STOP EVENT
 ENDIF
END
PUBLIC SUB Form_Open()
 ME.Text = "Solo números!"
END
 


Este de arriba te permite borrar los números, cosa que el otro no.
Como ves TextBox para estas cosas tienes mas "magia".

Para la siguiente cuestión:
Para ordenar un ListBox tienes que usar la propiedad .Sort

Prueba la propiedad. Hay otras maneras. Que puede que te gusten mas, usando un GridView.
Te subo el ejemplo. Lo aprendí de nuestro compañero Julio.

Esta es una imagen:

 tablarecord

Dale un nombre y una puntuación, agrégalo a la tabla, ve jugando con los puntos, mas o menos puntos y veras como se ordenan.
Espero haberte dado mas ideas.

Saludos

TablaRecord.tar.gz
Descripción:  
Descargar
Nombre del archivo: TablaRecord.tar.gz
Tamaño: 6.18 KB
Descargado: 33 veces
TablaRecord.tar.gz
Descripción:  
Descargar
Nombre del archivo: TablaRecord.tar.gz
Tamaño: 6.18 KB
Descargado: 33 veces
TablaRecord.tar.gz
Descripción:  
Descargar
Nombre del archivo: TablaRecord.tar.gz
Tamaño: 6.18 KB
Descargado: 33 veces

 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Lunes, 10 Junio 2013, 09:12; editado 1 vez 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Número Mágico (programita) 
 
Una forma indirecta, no de limitar sino de comprobar que no lo hagan(escribir números de más de 4 dígitos), es comprobar con un if si el número escrito es mayor a 9999, en cuyo caso puedes por ejemplo, limpiar el control y darle el foco, además de mostrar un mensaje avisando que no se pueden escribir números de más de 4 dígitos. Pero creo que la idea de Shell de usasr un texbox puede ser mejor, poniendo su propiedad MaxLentgh en 4.
Saludos
 




===================
Migrando desde visual basic, el Gambas de Ms
Mi blog gambero
 
última edición por Dani26 el Lunes, 10 Junio 2013, 21:58; editado 1 vez 
Dani26 - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Número Mágico (programita) 
 
Dani26 y Shell gracias por sus aportes sigo experimentando
 




===================
Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
 
v3ctor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Número O Letra Shell General 9 Lunes, 12 Octobre 2015, 10:16 Ver último mensaje
vuott
No hay nuevos mensajes Averiguar Si Un Número Es Una Potencia De 2 vuott Aplicaciones/Fragmentos de Código 2 Martes, 16 Agosto 2016, 23:41 Ver último mensaje
vuott
No hay nuevos mensajes Número Aleatorio didier18 Aplicaciones/Fragmentos de Código 9 Martes, 18 Octobre 2016, 22:53 Ver último mensaje
vuott
No hay nuevos mensajes Saber El Número De Día De La Semana calcena General 5 Viernes, 06 Octobre 2017, 22:27 Ver último mensaje
vuott
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron