У меня есть таблица 6x7, и когда я щелкаю по определенной ячейке, мне нужно проверить:
- 4 последовательных ячейки в одной строке или
- 4 последовательных ячейки в одном столбце или
- 4 последовательных ячейки на одной диагонали имеют класс атрибута синего цвета.
Я сделал снимок, и похоже, что горизонтальные и вертикальные проверки работают нормально. Но не диагональный. Есть идеи?
$(".circle").click(function() {
var colindex = $(this).closest('td').index() + 1;
var rowindex = $(this).closest('tr').index() + 1;
if(checkHorizontally() || checkVertically() || checkDiagonally()){
console.log("Blue wins");
}
function checkHorizontally(){
var sum;
for(i=6;i>0;i--){
for(j=1;j<=7;j++){
var cell = $('tr:nth-child('+i+') td:nth-child('+j+')');
if (cell.find('div').css('background-color')==='rgb(0, 0, 255)'){
sum+=1;
}
else{
sum=0;
}
if(sum>=4){
console.log("blue wins horizontally");
return true;
}
}
sum=0;
}
}
function checkVertically(){
var sum;
for(i=1;i<=7;i++){
for(j=1;j<=6;j++){
var cell = $('tr:nth-child('+j+') td:nth-child('+i+')');
if (cell.find('div').css('background-color')==='rgb(0, 0, 255)'){
sum+=1;
}
else{
sum=0;
}
if(sum>=4){
console.log("blue wins vertically");
return true;
}
}
sum=0;
}
}
function checkDiagonally(){
var sum;
for(k=1;k<=7;k++){
for(var y=1, x=k; x<7 ; y++,x++){
var cell = $('tr:nth-child('+y+') td:nth-child('+x+')');
if (cell.find('div').css('background-color')==='rgb(0, 0, 255)'){
sum+=1;
}
else{
sum=0;
}
if(sum>=4){
console.log("blue wins diagonally");
return true;
}
}
sum=0;
}
}
});
.circle {
width: 30px;
height: 30px;
-moz-border-radius: 50px;
-webkit-border-radius: 50px;
border-radius: 50px;
background: #706e6e;
border: 2px solid black;
}
.circle.blue {
background-color: blue;
}
<table>
<tr>
<td><div class="circle"></div></td>
<td><div class="circle"></div></td>
<td><div class="circle"></div></td>
<td><div class="circle"></div></td>
<td><div class="circle"></div></td>
<td><div class="circle"></div></td>
<td><div class="circle"></div></td>
</tr>
<tr>
<td><div class="circle"></div></td>
<td><div class="circle"></div></td>
<td><div class="circle"></div></td>
<td><div class="circle"></div></td>
<td><div class="circle"></div></td>
<td><div class="circle"></div></td>
<td><div class="circle"></div></td>
</tr>
<tr>
<td><div class="circle"></div></td>
<td><div class="circle"></div></td>
<td><div class="circle"></div></td>
<td><div class="circle"></div></td>
<td><div class="circle"></div></td>
<td><div class="circle"></div></td>
<td><div class="circle"></div></td>
</tr>
<tr>
<td><div class="circle"></div></td>
<td><div class="circle"></div></td>
<td><div class="circle"></div></td>
<td><div class="circle"></div></td>
<td><div class="circle"></div></td>
<td><div class="circle"></div></td>
<td><div class="circle"></div></td>
</tr>
<tr>
<td><div class="circle"></div></td>
<td><div class="circle"></div></td>
<td><div class="circle"></div></td>
<td><div class="circle"></div></td>
<td><div class="circle"></div></td>
<td><div class="circle"></div></td>
<td><div class="circle"></div></td>
</tr>
<tr>
<td><div class="circle"></div></td>
<td><div class="circle"></div></td>
<td><div class="circle"></div></td>
<td><div class="circle"></div></td>
<td><div class="circle"></div></td>
<td><div class="circle"></div></td>
<td><div class="circle"></div></td>
</tr>
</table>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>