Foros del Web » Programando para Internet » PHP »

palabra incompleta

Estas en el tema de palabra incompleta en el foro de PHP en Foros del Web. hola gente, tengo el siguente script, el funcionamiento es el siguiente: se define una palabra, y esta es convertida en un array para luego ir ...
  #1 (permalink)  
Antiguo 27/09/2012, 20:06
Avatar de cadrogui  
Fecha de Ingreso: junio-2003
Mensajes: 875
Antigüedad: 20 años, 10 meses
Puntos: 5
palabra incompleta

hola gente, tengo el siguente script, el funcionamiento es el siguiente:

se define una palabra, y esta es convertida en un array para luego ir colocando cada letra de forma aleatoria, la idea es que se adivine la palabra, pero lo que quiero es que no se repitan las letras que ya aparecieron...

Código PHP:
$palabra "autocuidado";

$t str_split($palabra);
$total count($t);
$random rand(0$total-1);

for(
$i=0$i <= $total -1$i++):
    if(
$random == $i):
         echo 
$t[$random];
        else:
         echo 
" - ";
    endif;
endfor; 
gracias
__________________
La mejor manera de aprender es por medio de un aprendizaje significativo....

http://www.cocert.cl
  #2 (permalink)  
Antiguo 27/09/2012, 20:11
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: palabra incompleta

Con random no tenes posibilidad que yo sepa de que te toque un elemento que no sea el que ya te ha tocado, justamente por eso es random.
Creo que tendrías que almacenar la letra en algún lugar físico y comparar si existe en el lugar físico ya sea un txt o una base de datos, si es así es porque ya apareció y lo que tenes que hacer es volver a tirar random hasta que te devuelva algo que no tengas guardado ya como que apareció.
Puede que mi idea sea erronea, cuidado, veamos que dicen los demas
  #3 (permalink)  
Antiguo 27/09/2012, 20:13
Avatar de cadrogui  
Fecha de Ingreso: junio-2003
Mensajes: 875
Antigüedad: 20 años, 10 meses
Puntos: 5
Respuesta: palabra incompleta

yo pensaba en sesiones.

gracias por la respuesta
__________________
La mejor manera de aprender es por medio de un aprendizaje significativo....

http://www.cocert.cl
  #4 (permalink)  
Antiguo 27/09/2012, 20:14
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: palabra incompleta

MUY BUENA IDEA, sesiones puede funcionar, sencillo pero no se me ocurrió, y creo que es lo mejor, ir agregandole a tu variable de session las letras que hallan aparecido.
  #5 (permalink)  
Antiguo 27/09/2012, 20:15
Avatar de cadrogui  
Fecha de Ingreso: junio-2003
Mensajes: 875
Antigüedad: 20 años, 10 meses
Puntos: 5
Respuesta: palabra incompleta

lo hice asi pero me marie en el camino...

$_SESSION['palabra'] = $_SESSION['palabra']. "" .$t[$random];
__________________
La mejor manera de aprender es por medio de un aprendizaje significativo....

http://www.cocert.cl
  #6 (permalink)  
Antiguo 27/09/2012, 20:24
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: palabra incompleta

porque no haces directamente
Código PHP:
Ver original
  1. $_SESSION['palabra'][] = $t[$random];

o usa array_push también
  #7 (permalink)  
Antiguo 27/09/2012, 20:25
Avatar de cadrogui  
Fecha de Ingreso: junio-2003
Mensajes: 875
Antigüedad: 20 años, 10 meses
Puntos: 5
Respuesta: palabra incompleta

con array_push me tinca y despues puedo hacer in_array pare ver si esta la letra... lo que se me ocurre que podría pasar es que la palabra tenga letras repetidas....

que opinas¿?
__________________
La mejor manera de aprender es por medio de un aprendizaje significativo....

http://www.cocert.cl
  #8 (permalink)  
Antiguo 27/09/2012, 20:53
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: palabra incompleta

bueno si queres que las letras no se repitan, con un for podrías ir recorriendo caracter por caracter de la palabra, y si la letra ya está en la palabra, obviala, o haces lo que quieras, no se
  #9 (permalink)  
Antiguo 27/09/2012, 20:57
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 7 meses
Puntos: 80
Respuesta: palabra incompleta

Capaz te sirva SHUFFLE


Saludos
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp
  #10 (permalink)  
Antiguo 27/09/2012, 21:07
Avatar de Artificium  
Fecha de Ingreso: enero-2011
Mensajes: 492
Antigüedad: 13 años, 3 meses
Puntos: 81
Respuesta: palabra incompleta

Vas a encontrarte con otro problema si haces lo que te dicen, el problema es que la letra "a" por ejemplo se repite dos veces y la "o" también, con otras palabras podría ocurrir algo similar. Entonces? Bueno, como estoy de humor te lo voy a hacer:

Código:
        $palabra = 'autocuidado';
	$arr = str_split($palabra);
	$na = count($arr);
	$nums = array();
	
	for ($p = 0; $p < $na; $p ++) {
		$go = true;
		while ($go) {
			$num = mt_rand(0, $na - 1);
			if (array_search($num, $nums) === false) {
				$nums[] = $num;
				$go = false;
			}
		}
	}
	
	$random = '';
	for ($p = 0; $p < $na; $p ++) {
		$random .= $arr[$nums[$p]];
	}
	echo $random;
  #11 (permalink)  
Antiguo 27/09/2012, 21:10
Avatar de Artificium  
Fecha de Ingreso: enero-2011
Mensajes: 492
Antigüedad: 13 años, 3 meses
Puntos: 81
Respuesta: palabra incompleta

Cita:
Iniciado por portalmana Ver Mensaje
Capaz te sirva SHUFFLE


Saludos
Vaya! siempre hay cosas que aprender, con esa función la cosa queda mas simple:

Código:
        $palabra = 'autocuidado';
	$arr = str_split($palabra);
	
	shuffle($arr);

        $random = implode('', $arr);
	echo $random;
Seguro que esta manera es la más óptima.
  #12 (permalink)  
Antiguo 27/09/2012, 21:19
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 7 meses
Puntos: 80
Respuesta: palabra incompleta

Código PHP:
Ver original
  1. $palabra = str_split('autocuidado') ;
  2. shuffle($palabra);
  3. foreach($palabra as $letra) {
  4.     echo $letra . '<br/>';
  5. }

Suerte y Saludos
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp

Etiquetas: incompleta, palabra
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:52.