Tema: Crucigrama
Ver Mensaje Individual
  #7 (permalink)  
Antiguo 02/10/2006, 11:43
Avatar de seyacat
seyacat
 
Fecha de Ingreso: agosto-2006
Mensajes: 382
Antigüedad: 20 años, 2 meses
Puntos: 0
Continuo estas son las tablas.
Funcionaba con un front end en flash, en crucigrama se almacena los crucigramas generados y como avanzaban las respuestas, simpre generaba un crucigrama automaticamente de reserva, asi siempre tenia nuevos y nuevos y nuevos, no cre que sea tu caso

En diccionario estan las palabras, nunca separe por categorias, Jugador era para almacenar el puntaje y juego para separar sesiones de puntaje. La verdad esas tablas no creo que te sirvan

CREATE TABLE `crucigrama` (
`id_crucigrama` bigint(20) NOT NULL auto_increment,
`crucigrama` text NOT NULL,
`palabras` text NOT NULL,
`resuelto` binary(1) NOT NULL default '0',
PRIMARY KEY (`id_crucigrama`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=9578 ;

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `diccionario`
--

CREATE TABLE `diccionario` (
`id_palabra` bigint(20) NOT NULL auto_increment,
`palabra` varchar(20) NOT NULL default '',
`descripcion` varchar(150) NOT NULL default '',
`categoria` varchar(20) NOT NULL default '',
PRIMARY KEY (`id_palabra`),
UNIQUE KEY `palabra` (`palabra`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=483 ;

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `juego`
--

CREATE TABLE `juego` (
`id` int(10) NOT NULL default '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `jugador`
--

CREATE TABLE `jugador` (
`id_jugador` bigint(20) NOT NULL auto_increment,
`id_juego` bigint(20) NOT NULL default '0',
`numero` varchar(20) NOT NULL default '',
`nick` varchar(20) NOT NULL default '',
`puntos` bigint(20) NOT NULL default '0',
PRIMARY KEY (`id_jugador`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=691 ;

-- --------------------------------------------------------

aqui el codigo de interactividad

Código PHP:
$numero = $_GET['numero'];
$mensaje = $_GET['mensaje'];
$short_num = $_GET['short_num'];
$operator = $_GET['operator'];
$idmsg = $_GET['idmsg'];
$db = 'sin_shortnum';
$mensaje = strtolower($mensaje);
$mensaje = implode("",explode("\"",$mensaje));
$programa = "";
$estado = "";

$query = "SELECT id FROM juego LIMIT 1";
    
$result = mysql_query($query);
    
$juego = mysql_result($result,0);
    
    
$query ="SELECT COUNT(*) FROM jugador WHERE numero = $numero AND id_juego = $juego" ;
    
$result = mysql_query($query);
    
$row = mysql_result($result, 0);
    if(
$row==0){
        
$query ="INSERT INTO `jugador` ( `id_jugador` , `id_juego` , `numero` , `nick` , `puntos`  ) 
        VALUES (
        '', '$juego', '$numero', '', '0'
        )
        "
;
        
$result = mysql_query($query);
        }
//end insert if
        
    
$query = "SELECT palabras FROM crucigrama WHERE resuelto != 1 LIMIT 1;";
    
$result = mysql_query($query);
    
$row = mysql_result($result,0);
    
$mensaje = strtoupper($mensaje);
    
$msg = explode(" ",$mensaje);
    
$nuevas = 0;
    
$viejas = 0;
    
$erradas = 0;
    
$palabras_out = $row;
    foreach(
$msg as $mss){
        
$palabras = explode(";",$palabras_out);
        
$palabras_out = "";
        
$completado=1;
        foreach(
$palabras as $palabra){
            if(
$palabra != ""){
                
$palabra = explode("-",$palabra);
                if(
$palabra[3]==$mss)
                    {
                    if(
$palabra[2]=="1"){
                        
$viejas++;
                        }
                    else{
                        
$palabra[2]=1;
                        
$nuevas++;
                        }
//end elseif
                    
}//end if
                
else{
                    
                    }
                if(
$palabra[2]!="1"){$completado=0;}//revisa si se ha completado
                
$palabra = implode("-",$palabra);
                
$palabras_out .= $palabra.";";
                }
            }
//end foreach
        //$palabras = $palabras_out;
        
}//end foreach mensaje
    
$nummsg = count($msg);
    
$erradas = $nummsg - $nuevas - $viejas;
    
$resp = "";
    if(
$nuevas > 0){$resp .= "$nuevas palabra(s) acertada(s),";}
    if(
$viejas > 0){$resp .= " $viejas palabra(s) ya resuelta(s),";}
    if(
$erradas > 0){$resp .= " $erradas palabra(s) errada(s),";}
    
$resp .= " de $nummsg palabra(s) enviada(s).";
    if(
$nuevas > 0){
        
$query = "UPDATE `crucigrama`
            SET `palabras` = '$palabras_out;' 
            WHERE resuelto != 1 LIMIT 1"
;
            
mysql_query($query);
            
            
$query = "UPDATE `jugador` SET puntos = puntos+$nuevas WHERE numero = $numero AND id_juego = $juego";
            
mysql_query($query);//query de goolll
        
}
    
    if(
$completado == 1){
        
$query = "UPDATE `crucigrama` SET `resuelto` = '1' WHERE resuelto != 1 LIMIT 1";
        
mysql_query($query);
        }
    
$query = "SELECT puntos FROM `jugador`  WHERE id_juego = (SELECT MAX(id_juego) FROM jugador) AND numero = $numero";
    
$result = mysql_query($query);
    
$puntos  = mysql_result($result, 0);
    
$respuesta = "<entel>$resp  Puntaje:$puntos</entel>";
    echo 
$respuesta;
    
    
$query = "SELECT COUNT(*) FROM crucigrama WHERE resuelto = '0'";
    
$result = mysql_query($query);
    
$existe_cruci = mysql_result($result, 0);
    if(
$existe_cruci <= 2){
        
//include("gencruci.php");
        
} 
Y eso es todo, lo unico que te faltaria es el frontend....

Última edición por seyacat; 02/10/2006 a las 11:54