elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  problema con cadena de texto
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: problema con cadena de texto  (Leído 3,377 veces)
pedraosone

Desconectado Desconectado

Mensajes: 90


Ver Perfil
problema con cadena de texto
« en: 7 Noviembre 2007, 04:16 am »

hola
nuevamente estoy aqui con otro de mis proyectos a ver si pueden ayudarme
quiero crerar un pequeño juego del ahorcado(esos de adivinar la palabra )
-----------------------------------
la primera duda que se me plantea es la siguiente:
x="avion"             'esto es un ejemplo
label1.caption= len(x)     ' quiero que me ponga tantos "-" como caracteres tenga "X" y no se como hacerlo
-----------------------------------------
la siguiente duda es
que no se como hacer que recorra todos los caracteres de x y si alguno coincide con la letra de text1.text cambie el "_" de ese caracter por la letra del text1.text
--------------------------------------
espero me hayan entendido y puedan ayudarme
gracias de todas formas


En línea

HaDeS, -
WarZone Master

Desconectado Desconectado

Mensajes: 284



Ver Perfil WWW
Re: problema con cadena de texto
« Respuesta #1 en: 7 Noviembre 2007, 05:04 am »

:O
Código
  1. Dim i As Integer
  2.  
  3. Private Sub Command1_Click()
  4. Text2.Text = ""
  5. For i = 1 To Len(Text1.Text)
  6.    Text2.Text = Text2.Text & "_"
  7. Next i
  8. End Sub
  9.  
  10. Private Sub Text3_KeyPress(KeyAscii As Integer)
  11. Dim tmp As String, letra As String
  12. letra = Chr$(KeyAscii)
  13. tmp = Text2.Text
  14. If InStr(1, Text1.Text, letra) <> 0 Then
  15.    For i = 1 To Len(Text1.Text)
  16.        If Mid(tmp, i, 1) = "_" And Mid(Text1.Text, i, 1) = Chr$(KeyAscii) Then
  17.            Mid(tmp, i, 1) = Chr$(KeyAscii)
  18.        End If
  19.    Next i
  20. End If
  21. Text2.Text = tmp
  22. Text3.Text = ""
  23. End Sub
  24.  
No le agregue espacios después del "_" porque se me complicaba la cosa, pero ahí está!
Tenes que agregar tres textbox, el primero es el de la palabra, el segundo donde se dibujan los "____" y el tercero donde metes la letra. También agrega un commandbutton-

Saludos!


En línea

pedraosone

Desconectado Desconectado

Mensajes: 90


Ver Perfil
Re: problema con cadena de texto
« Respuesta #2 en: 7 Noviembre 2007, 07:11 am »

muchas gracias amigo,probare con el y ya comento los resultados
edit1--- funciono mejor de lo que esperaba
nuevamente muchas gracias por la ayuda, ya posteare el programa si lo termino aunque supongo que aun me quedan algunas dudas en el tintero
« Última modificación: 7 Noviembre 2007, 14:59 pm por pedraosone » En línea

pedraosone

Desconectado Desconectado

Mensajes: 90


Ver Perfil
Re: problema con cadena de texto
« Respuesta #3 en: 8 Noviembre 2007, 04:03 am »

me ha surgido una duda repecto a ese codigo amigo
podriamos hacerlo de forma que no distinga si lo que pulsamos es mayusculas o minusculas
es que si por ejemplo la palabra a adivinar esta en mayusculas yel teclado tiene desactivado el bloq mayus pues no funciona el programilla
el problema no es tan grave pues lo soluciono poniendo un aviso de que lo activen antes de comenzar a jugar pero me gustaria saber si es posible que no importe si el caracter pulsado es mayusculas o minusculas
nuevamente gracias
En línea

HaDeS, -
WarZone Master

Desconectado Desconectado

Mensajes: 284



Ver Perfil WWW
Re: problema con cadena de texto
« Respuesta #4 en: 8 Noviembre 2007, 04:50 am »

Claro!, mira, para hacer que se compare sin importar si esta en mayus o en minus, lo que haces es, hacer que la letra insertada se pase a minúsculas con la función Lcase(), y luego donde se comparan las letras "Mid(Text1.Text, i, 1) = Chr$(KeyAscii)", haces que la letra que se sacó del text1.text se ponga también a minúsculas. Así:

Código
  1. Private Sub Text3_KeyPress(KeyAscii As Integer)
  2. Dim tmp As String, letra As String
  3. letra = LCase(Chr$(KeyAscii))
  4. tmp = Text2.Text
  5. If InStr(1, Text1.Text, letra, vbTextCompare) <> 0 Then
  6.    For i = 1 To Len(Text1.Text)
  7.        If Mid(tmp, i, 1) = "_" And LCase(Mid(Text1.Text, i, 1)) = Chr$(KeyAscii) Then
  8.            Mid(tmp, i, 1) = Mid(Text1.Text, i, 1)
  9.        End If
  10.    Next i
  11. End If
  12. Text2.Text = tmp
  13. Text3.Text = ""
  14. End Sub
  15.  

Saludos!
« Última modificación: 8 Noviembre 2007, 04:52 am por HaDeS, - » En línea

pedraosone

Desconectado Desconectado

Mensajes: 90


Ver Perfil
Re: problema con cadena de texto
« Respuesta #5 en: 8 Noviembre 2007, 13:05 pm »

hola neuvamente amigo
he probado eso que me comenntas con el lcasey ocurre lo siguiente
ejemplo
text1 HOla
en el text3 escribo
h =si
O =no
l=si
A=no
es decir que mientras escribo en minusculas el las pasa a mayusculaspara que funcione la comparacion
pero si la escribo directamente en mayusculas no funciona
si no me entiendes prueba el ejemplo y quizas lo veas
de todos modos muchisimas gracia spor tu ayuda
En línea

HaDeS, -
WarZone Master

Desconectado Desconectado

Mensajes: 284



Ver Perfil WWW
Re: problema con cadena de texto
« Respuesta #6 en: 8 Noviembre 2007, 19:53 pm »

Corrije está línea:
Código
  1.        If Mid(tmp, i, 1) = "_" And LCase(Mid(Text1.Text, i, 1)) = Chr$(KeyAscii) Then
  2.  
A:
Código
  1.        If Mid(tmp, i, 1) = "_" And LCase(Mid(Text1.Text, i, 1)) = letra Then
  2.  

Saludos!, ahora lo pruebo que no ando en mi compu ;)
En línea

pedraosone

Desconectado Desconectado

Mensajes: 90


Ver Perfil
Re: problema con cadena de texto
« Respuesta #7 en: 8 Noviembre 2007, 20:28 pm »

ha funcionado perfectamente
muchas gracias
me surge ahora una duda referente  a lo de la palabra aleatoria, veras:
cada vez que inicio el programa empieza siempre en la misma palabra
uso este codigo:
Numero = List1.ListCount '------asignamos a numero el total de registros en la lista
            AZAR = Int(((Numero) * Rnd)) '------asignamos a azar un numero aleatorio de la lista
                List1.ListIndex = AZAR  '-------seleccionamos el item azar
                List2.ListIndex = AZAR  ' ------igual que en el listado1
                    Text1.Text = List1.List(AZAR) '------------- en el text1 tomamos el item azar
                    Text2.Text = ""   '------------dejamos en blanco el text2
                        For i = 1 To Len(Text1.Text) '-----comenzamos un bucle que recorrera el tamaño del text1
                            Text2.Text = Text2.Text & "_" '---------rellena con guiones el text2
                        Next i
----------------------------------------------------------------------------------
como podras ver lo intento explicar linea a linea y eso es para no perderme
nuevamente gracias por la ayuda
« Última modificación: 8 Noviembre 2007, 20:32 pm por pedraosone » En línea

HaDeS, -
WarZone Master

Desconectado Desconectado

Mensajes: 284



Ver Perfil WWW
Re: problema con cadena de texto
« Respuesta #8 en: 8 Noviembre 2007, 21:50 pm »

Bueno, mira un code diferente :P, es que me gusta codear jaja
Código
  1. Private Sub Command1_Click()
  2. Dim Canal%, palabras$, palabra$, palabras_por_separado As Variant, ruta$, x% 'Declaramos todas las variables
  3. Canal = FreeFile 'Abrimos un canal libre de escritura/lectura
  4. Open "c:\palabras.txt" For Input As Canal 'Abrimos el archivo c:\palabras.txt en modo lectura por el canal "canal"
  5. palabras = Input$(LOF(Canal), Canal) 'Leemos todo el contenido del archivo
  6. Close #Canal 'Cerramos el canal
  7. palabras_por_separado = Split(palabras, vbCrLf) 'Guardamos en un array todas las palabras que leimos delimitadas por enter
  8. x = Random(0, UBound(palabras_por_separado)) 'Llamamos a la función Random, y nos retorna un número entre 0 y el número de palabras que hay
  9. palabra = palabras_por_separado(x) 'La palabra (La que metemos en el text1.text) es el numero aleatorio que nos dió la función Random
  10. Text1.Text = palabra
  11. End Sub
  12.  
  13. Private Function Random(ByVal Menor As Variant, ByVal Mayor As Variant) As Single 'Función para retornar un número aleatorio
  14. Randomize 'Inicializamos el generador de números aleatorios
  15. Random = Int((Mayor - Menor + 1) * Rnd + Menor) 'Restamos los do números  mas uno, lo multiplicamos por un valor cualquiera, y se lo sumamos de nuevo al menor, así garantizamos que el numero que multiplicamos no sea menor que el número menor
  16. If Random > Mayor Then Random = Mayor 'Si el número que retorno es mayor que el número mayor, entonces retornamos el número mayor
  17. End Function
  18.  

Ahí te explique mi code, el tuyo tambíen esta bien, si te inicia siempre en la misma palabra, pon un "Randomize" antes de utilizar el "Rnd".

Saludos :)
En línea

pedraosone

Desconectado Desconectado

Mensajes: 90


Ver Perfil
Re: problema con cadena de texto
« Respuesta #9 en: 9 Noviembre 2007, 01:36 am »

muchisimas gracias amigo
he aprovechado parte del codigo que me has puesto y lo he adaptado a mi nesesidad por el sencillo motivo de que noquiero usar un archivo externo pues eso supondria estar creando un instaladoro un archivo de instrucciones para quien no sepa mucho de informatica
en consecuencia solo es un ejecutable el cual lo extraes y lo ejecutas sobre la marcha donde lo tengas y a jugar
noes un gran juego aunque mas bien si que servira para las personas que comienzan estudien su codigo y poder ayudarles a comprender algo mejor como es esto del vbasic
nuevamente muchas gracias y decirte que ya me quedan poquitos detalles y en cuanto lo termine pondre un enlace en este mismo post para quien quiera descargarlo o bien crear un post nuevo (aun no lo he decidido)
espero que sea del agrado de alguno de ustedes  ;)
edtit1...... comunicar que ya he terminado el juego y solo espero la aprobacion de la administracion para publicar el juego y los fuentes
muchas gracias HaDeS por tu ayuda
edit2------ lamento comunicar que me ha surgido un bug en el juego el cual paso a relatar
si no empleo todo el codigo que me has pues sino solo la parte del ramdomice
siempre me hace la misma secuencia de palabras
he probado con ese archivo de texto en la unidad c: y funciona a la perfeccion
cada vez que lo inicio aparece una palabra diferente, ahora bien
mi pregunta del millon es la siguiente
abria modo de conseguir eso mismo sin tener que usar un archivo externo
y en su defecto, abria forma de codificar ese archivo para que no puedan leerlo
es decir convertirlo en una dll o algo asi
es que si no cualquiera podra descubrir todas las palabras facilmente :D
nuevamente muchas gracias y perdon las molestias
edit 3.....amigo se me acaba de ocurrir lo siguiente aunque no se como hacerlo pero supongo que no ha de ser muy complejo
mi idea es la siguiente:
para seleccionar la palabra que en lugar de emplear un numero aleatorio emplee por ejemplo el numero de  minutos + el numero de segundos del sistema en ese momento por ejemplo son las 17:20:15 pues el item seria el 35(20+15) y como a cada palabra acertada se borra ese item   y si el numero fuera mayor que el numero de items pues se repite el proseso pues siempre seria diferente aunque de todos modos no se como podria hacer para tomar en ese momento los minutos y segundos y convertirlos en enteros
en fin espero haberme expresado bien yque me hayas entendido
nuevamente muchas gracias
 edit4...... creo que podria ser algo asi :
..........
azar= minute(time)+second(now)
text1.text = list1.list(azar)
........
espero me puedas corregir si me equivoque en algo
muchas gracias

« Última modificación: 9 Noviembre 2007, 19:40 pm por pedraosone » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
error en cadena de texto en python
Scripting
iPeZ 5 4,521 Último mensaje 12 Enero 2011, 00:25 am
por iPeZ
Seleccionar una letra en una cadena de texto
Programación C/C++
nafhta 8 7,365 Último mensaje 27 Abril 2011, 07:41 am
por <<<-Basura->>>
Ayuda con Webbrowser D: (Leer cadena de texto)
ASM
AdictoxD 4 7,106 Último mensaje 13 Mayo 2011, 09:02 am
por Eternal Idol
Cadena de texto a url string
PHP
[u]nsigned 5 4,697 Último mensaje 30 Julio 2011, 06:53 am
por WHK
Extraer trozos de una cadena de texto en C
Programación C/C++
davidnew 8 30,428 Último mensaje 10 Abril 2012, 15:57 pm
por Synth3tik0
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines