<commit_before>import React, {Component} from "react";
import PropTypes from "prop-types";
import { Meteor } from 'meteor/meteor';
import { Link, Redirect } from 'react-router-dom';

import "../styles/Juego.css";

import Cuadro from "./Cuadro.jsx";

class Juego extends Component{

    constructor(props){
        super(props);
        this.state = {
            filas:[0,1,2,3,4,5,6],
            posActual:{}
        }
    }    

    mover(cuadro){
        cambiar=false;
        if(this.state.posActual.x === undefined){
            if((cuadro.x==1 && cuadro.y==0)&& this.props.partida.laberinto.layout[0].derecha==0){
                cambiar=true;
            }
            else if((cuadro.y==1 && cuadro.x==0) && this.props.partida.laberinto.layout[0].abajo==0){
                cambiar=true;
            }            
        }
        else{
            if((cuadro.x-this.state.posActual.x==1)&&(cuadro.y-this.state.posActual.y==0)&&(this.state.posActual.derecha==0)){
                cambiar=true;               
            }
            else if((cuadro.x-this.state.posActual.x==-1)&&(cuadro.y-this.state.posActual.y==0)&&(this.state.posActual.izquierda==0)){
                cambiar=true;               
            }
            else if((cuadro.x-this.state.posActual.x==0)&&(cuadro.y-this.state.posActual.y==1)&&(this.state.posActual.abajo==0)){
                cambiar=true;               
            }            
            else if((cuadro.x-this.state.posActual.x==0)&&(cuadro.y-this.state.posActual.y==-1)&&(this.state.posActual.arriba==0)){
                cambiar=true;               
            }            
        }
        if(cambiar){
            pos={
                x:cuadro.x,
                y:cuadro.y
            };
            this.props.mover(this.props.partida, this.props.jugador, pos);
            this.setState({
                posActual:cuadro
            });
        }      
    }

    renderFila(num){
        return this.props.partida.laberinto.layout.filter(t => (t.y==num)).map((t,i)=>{
            if(this.props.partida.posJugador1.x == t.x && this.props.partida.posJugador1.y == t.y){              
                return (
                    <td key={i}>
                         <Cuadro 
                             cuadro ={t}
                             mostrar = {true}
                             mover={(cuadro) => { this.mover(cuadro) }}                              
                         ></Cuadro>
                    </td>                                                
                );
            }  
            else{
                return(
                    <td key={i}>
                        <Cuadro 
                            cuadro ={t}
                            mostrar = {false}
                            mover={(cuadro) => { this.mover(cuadro) }}                              
                        ></Cuadro>
                    </td>                                               
                );              
            }                   
        });
    }
    renderJuego(){
        if(this.props.partida.laberinto){
            return this.state.filas.map((t,i) =>{
                return (<tr key={i}>
                    {this.renderFila(t)}
                </tr>);
            });
        }
    }

	render(){
		return (
			<div className="Juego">
			    <h1>Juega</h1>
			    {(this.props.partida!== undefined && this.props.partida.tipo !== undefined)?
			        <Link to={{
                      pathname: '/inicio'
                    }}><button onClick = {() => { this.props.terminar(this.props.partida)}}> Salir </button>
                    </Link>
			    :
                     <Redirect to="/Unexistent Game"></Redirect>
			    }
			    <table id="tablero">
                    <tbody>
                        {this.renderJuego()}
                    </tbody>
			    </table>
			</div>
		);
	}
}

Juego.PropTypes={
    partida: PropTypes.object.isRequired,
    jugador: PropTypes.object.isRequired,    
    terminar: PropTypes.func.isRequired,   <commit_msg>#gana<commit_after>import React, {Component} from "react";
import PropTypes from "prop-types";
import { Meteor } from 'meteor/meteor';
import { Link, Redirect } from 'react-router-dom';

import "../styles/Juego.css";

import Cuadro from "./Cuadro.jsx";

class Juego extends Component{

    constructor(props){
        super(props);
        this.state = {
            filas:[0,1,2,3,4,5,6],
            posActual:{}
        }
    }    

    mover(cuadro){
        cambiar=false;
        console.log(this.state.posActual);
        if(this.state.posActual.x === undefined){
            if((cuadro.x==1 && cuadro.y==0)&& this.props.partida.laberinto.layout[0].derecha==0){
                cambiar=true;
            }
            else if((cuadro.y==1 && cuadro.x==0) && this.props.partida.laberinto.layout[0].abajo==0){
                cambiar=true;
            }            
        }
        else{
            if((cuadro.x-this.state.posActual.x==1)&&(cuadro.y-this.state.posActual.y==0)&&(this.state.posActual.derecha==0)){
                cambiar=true;               
            }
            else if((cuadro.x-this.state.posActual.x==-1)&&(cuadro.y-this.state.posActual.y==0)&&(this.state.posActual.izquierda==0)){
                cambiar=true;               
            }
            else if((cuadro.x-this.state.posActual.x==0)&&(cuadro.y-this.state.posActual.y==1)&&(this.state.posActual.abajo==0)){
                cambiar=true;               
            }            
            else if((cuadro.x-this.state.posActual.x==0)&&(cuadro.y-this.state.posActual.y==-1)&&(this.state.posActual.arriba==0)){
                cambiar=true;               
            }            
        }
        if(cambiar){
            pos={
                x:cuadro.x,
                y:cuadro.y
            };
            this.props.mover(this.props.partida, this.props.jugador, pos);
            this.setState({
                posActual:cuadro
            });
            if(cuadro.x===3 && cuadro.y===3){
                alert("Ganaste! :D");
                this.props.terminar(this.props.partida);
            }
        }      
    }

    renderFila(num){
        return this.props.partida.laberinto.layout.filter(t => (t.y==num)).map((t,i)=>{
            if(this.props.partida.posJugador1.x == t.x && this.props.partida.posJugador1.y == t.y){              
                return (
                    <td key={i}>
                         <Cuadro 
                             cuadro ={t}
                             mostrar = {true}
                             mover={(cuadro) => { this.mover(cuadro) }}                              
                         ></Cuadro>
                    </td>                                                
                );
            }  
            else{
                return(
                    <td key={i}>
                        <Cuadro 
                            cuadro ={t}
                            mostrar = {false}
                            mover={(cuadro) => { this.mover(cuadro) }}                              
                        ></Cuadro>
                    </td>                                               
                );              
            }                   
        });
    }
    renderJuego(){
        if(this.props.partida.laberinto){
            return this.state.filas.map((t,i) =>{
                return (<tr key={i}>
                    {this.renderFila(t)}
                </tr>);
            });
        }
    }

	render(){
		return (
			<div className="Juego">
			    <h1>Juega</h1>
			    {(this.props.partida!== undefined && this.props.partida.tipo !== undefined)?
			        <Link to={{
                      pathname: '/inicio'
                    }}><button onClick = {() => { this.props.terminar(this.props.partida)}}> Salir </button>
                    </Link>
			    :(this.props.jugador!==0)? <Redirect to="/Inicio"></Redirect>:
                     <Redirect to="/Unexistent Game"></Redirect>
			    }
			    <table id="tablero">
                    <tbody>
                        {this.renderJuego()}
                    </tbody>
			    </table>
			</div>
		);
	}
}

Juego.PropTypes={
    partida: PropTypes.object.isRequired,
    jugador: PropTypes.object.isRequired,    
    terminar: PropTypes.func.isRequired,   
{'fraction_non_alphanumeric': 0.14578126859454957, 'fraction_numerical': 0.00773533261930263, 'mean_word_length': 1.0999500249875063, 'pattern_counts': {'":': 0, '<': 53, '<?xml version=': 0, '>': 65, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 8, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6177922', 'n_tokens_mistral': 2674, 'n_tokens_neox': 2523, 'n_words': 299}