Witam, uczę się programować w JavaScript a dokładniej w reakcie, próbuje zrobić grę 2048, zrobiłem już wygląd w html i css a teraz próbuje zrobić funkcję, na start stwierdziłem że zrobię funkcję by po kliknięciu przesuwały się liczby w odpowiednim kierunku i dodawaniu do siebie problem polega na tym że wykonuje się tylko dla jednego rzędu i nie wiem jak to naprawić, w jakiś sposób ify psują program, wysyłam kod najpierw cały a potem jeszcze raz konkretną funkcję http://www.fotosik.pl/zdjecie/4c4f52353e54aae4
http://www.fotosik.pl/zdjecie/pelne/c2b8d7af36bcecfc
import React, { Component } from 'react';
class Game extends Component {
constructor() {
super()
this.state={
score: "",
high_score: ""
}
}
roll_r() {
for(var i=1; i<=4; i++) {
for(var j=4; j>1; j--) {
for(var x=1; j-x>=0; x++) {
if(document.getElementById(i*10+j).innerHTML == false) {
document.getElementById(i*10+j).innerHTML=document.getElementById(i*10+(j-x)).innerHTML;
document.getElementById(i*10+(j-x)).innerHTML=null;
console.log("if zrobiony");
}
else if(document.getElementById(i*10+j).innerHTML == document.getElementById(i*10+j-x).innerHTML) {
document.getElementById(i*10+j).innerHTML=parseInt(document.getElementById(i*10+j-x).innerHTML)*2;
this.setState ({
score: parseInt(this.state.score+document.getElementById(i*10+j).innerHTML)
})
document.getElementById(i*10+j-x).innerHTML=null;
break;
console.log("if 2 zrobiony");
}
if(this.state.high_score<this.state.score) {
this.setState ({
high_score: this.state.score
})
}
console.log(i,j,x)
}
}
}
}
render() {
return (
<div>
<div className="Conteiner">
<div className="TopConteiner">
<div className="Header">
<div className="Name">2048</div>
<div className="Score">Score <br /> {this.state.score}</div>
<div className="Score">High Score <br /> {this.state.high_score}</div>
<div className="Clear"></div>
</div>
<div className="Tools">
</div>
</div>
<div className="BottomConteiner">
<div className="Block" id="11">8</div>
<div className="Block" id="12">2</div>
<div className="Block" id="13">2</div>
<div className="Block" id="14">2</div>
<div className="Clear"></div>
<div className="Block" id="21">2</div>
<div className="Block" id="22">2</div>
<div className="Block" id="23">2</div>
<div className="Block" id="24">2</div>
<div className="Clear"></div>
<div className="Block" id="31">31</div>
<div className="Block" id="32">32</div>
<div className="Block" id="33">33</div>
<div className="Block" id="34">34</div>
<div className="Clear"></div>
<div className="Block" id="41">41</div>
<div className="Block" id="42">42</div>
<div className="Block" id="43">43</div>
<div className="Block" id="44">44</div>
</div>
</div>
<div className="Control">
<div className="Arrow_u" onClick={()=> this.roll_u()}></div>
<div className="Arrow_l" onClick={()=> this.roll_l()}></div>
<div className="Arrow_r" onClick={()=> this.roll_r()}></div>
<div className="Arrow_d" onClick={()=> this.roll_d()}></div>
</div>
</div>
);
}
}
export default Game;
roll_r() {
for(var i=1; i<=4; i++) {
for(var j=4; j>1; j--) {
for(var x=1; j-x>=0; x++) {
if(document.getElementById(i*10+j).innerHTML == false) {
document.getElementById(i*10+j).innerHTML=document.getElementById(i*10+(j-x)).innerHTML;
document.getElementById(i*10+(j-x)).innerHTML=null;
console.log("if zrobiony");
}
else if(document.getElementById(i*10+j).innerHTML == document.getElementById(i*10+j-x).innerHTML) {
document.getElementById(i*10+j).innerHTML=parseInt(document.getElementById(i*10+j-x).innerHTML)*2;
this.setState ({
score: parseInt(this.state.score+document.getElementById(i*10+j).innerHTML)
})
document.getElementById(i*10+j-x).innerHTML=null;
break;
console.log("if 2 zrobiony");
}
if(this.state.high_score<this.state.score) {
this.setState ({
high_score: this.state.score
})
}
console.log(i,j,x)
}
}
}
}