Обловатный курсовая — различия между версиями

Материал из Department of Theoretical and Applied Mechanics
Перейти к: навигация, поиск
(Новая страница: «{{#widget:Iframe | url=http://tm.spbstu.ru/htmlets/js2020/Radeon/index.html | width=1000 | height= 1000 | border=0}}»)
 
(top)
 
(не показаны 2 промежуточные версии этого же участника)
Строка 1: Строка 1:
{{#widget:Iframe | url=http://tm.spbstu.ru/htmlets/js2020/Radeon/index.html | width=1000 | height= 1000 | border=0}}
+
==Описание==
 +
 
 +
Реализация компьютерной игры "3 в ряд" на языке программирования JavaScript
 +
 
 +
Исполнитель: [[Обловатный Родион|Обловатный Родион]] и [[Гусика Никита|Гусика Никита]]
 +
 
 +
Группа 3630103/90001, Кафедра Теоретической механики
 +
 
 +
 
 +
==Визуализация==
 +
{{#widget:Iframe |url=http://tm.spbstu.ru/htmlets/js2020/Radeon/index.html | width=1000 | height= 1000 | border=0 }}
 +
==Код программы==
 +
<div class="mw-collapsible mw-collapsed">
 +
'''Код программы на языке JavaScript:''' <div class="mw-collapsible-content">
 +
<syntaxhighlight lang="javascript" line start="1" enclose="div">
 +
var mode=0;
 +
var maxstep=200;
 +
var maxtime=10;
 +
 
 +
var cell_x = 8;
 +
var cell_y = 8;
 +
 
 +
var colors=5;
 +
 
 +
var cell_bc1 = "rgba(230,230,230,0.5)";
 +
var cell_bc2 = "rgba(200,200,200,0.5)";
 +
var cell_size = 80; //Размер клетки
 +
 
 +
var bv = 0.01;
 +
 
 +
var bw  = 20;
 +
var bc  = 4;
 +
var bb  = "rgba(200,255,200,0.7)";
 +
var bcc = "rgba(111,111,111,0.9)";
 +
 
 +
var speed=100;
 +
 
 +
var ctx = cnv.getContext('2d');
 +
var score=0;
 +
var w = 2*(bw+bc)+cell_x*cell_size;
 +
var h = 2*(bw+bc)+cell_y*cell_size;
 +
 
 +
var timer= new Date()/1000;
 +
var steps=0;
 +
 
 +
var img1=new Image();
 +
var img2=new Image();
 +
var img3=new Image();
 +
var img4=new Image();
 +
var img5=new Image();
 +
var imgb=new Image();
 +
var explodeimg =new Image();
 +
var arr = [];
 +
 
 +
var play=true;
 +
 
 +
var pressed=false;
 +
var g_x;
 +
var g_y;
 +
var l_x;
 +
var l_y;
 +
 
 +
window.onload = function (){
 +
img1.src='img/1.png';
 +
img2.src='img/2.png';
 +
img3.src='img/3.png';
 +
img4.src='img/4.png';
 +
img5.src='img/5.png';
 +
imgb.src='img/bonus.png';
 +
explodeimg.src='img/explode.png';
 +
cnv.width  = w;
 +
cnv.height = h;
 +
draw_back();
 +
add_start_stones();
 +
score=0;
 +
if(mode==1){
 +
steper_t.innerHTML="Шагов осталось";
 +
}
 +
else{
 +
steper_t.innerHTML="Шаги";
 +
}
 +
if(mode==2){
 +
timer_t.innerHTML="Осталось секунд";
 +
}
 +
else{
 +
timer_t.innerHTML="Время";
 +
}
 +
checker=setInterval(play_checker,speed);
 +
}
 +
 
 +
function draw_current_stones(){
 +
for(var x=0;x<cell_x;x++){
 +
for(var y=0;y<cell_y;y++){
 +
if(arr[x][y].alive){
 +
ctx.drawImage(arr[x][y].img,bw+bc+(x)*cell_size,bw+bc+(y)*cell_size,cell_size,cell_size);
 +
if(arr[x][y].img==explodeimg){
 +
arr[x][y].alive=false;
 +
}
 +
}
 +
}
 +
}
 +
}
 +
 
 +
function stone_gen(){
 +
score+=10;
 +
if(Math.random()>bv){
 +
color=parseInt(1+Math.random()*(colors-0.01));
 +
}
 +
else{
 +
color=0;
 +
}
 +
return new stone(color);
 +
}
 +
 
 +
function add_start_stones(){
 +
var color;
 +
for(var x=0;x<cell_x;x++){
 +
arr.push([]);
 +
for(var y=0;y<cell_y;y++){
 +
arr[arr.length-1].push(stone_gen());
 +
}
 +
}
 +
while(check()){
 +
move_stones_auto_silent();
 +
}
 +
setTimeout(draw_current_stones, 100);
 +
}
 +
 
 +
function draw_back(){
 +
ctx.fillStyle = bb;
 +
ctx.strokeStyle = bb;
 +
ctx.fillRect(0,0,w,h);
 +
ctx.strokeRect(0,0,w,h);
 +
 +
ctx.fillStyle = bcc;
 +
ctx.strokeStyle = bcc;
 +
ctx.fillRect(bw-bc,bw-bc,w-(bw-bc)*2,h-(bw-bc)*2);
 +
ctx.strokeRect(bw-bc,bw-bc,w-(bw-bc)*2,h-(bw-bc)*2);
 +
ctx.clearRect(bw+bc,bw+bc,w-(bw+bc)*2,h-(bw+bc)*2);
 +
 +
for(var x=0;x<cell_x;x++){
 +
for(var y=0;y<cell_y;y++){
 +
if((x+y)%2==0){
 +
ctx.fillStyle = cell_bc1;
 +
ctx.strokeStyle = cell_bc1;
 +
}
 +
else{
 +
ctx.fillStyle = cell_bc2;
 +
ctx.strokeStyle = cell_bc2;
 +
}
 +
ctx.fillRect(bw+bc+(x)*cell_size,bw+bc+(y)*cell_size,cell_size,cell_size);
 +
ctx.strokeRect(bw+bc+(x)*cell_size,bw+bc+(y)*cell_size,cell_size,cell_size);
 +
}
 +
}
 +
}
 +
 
 +
function stone(type){
 +
this.type=type;
 +
switch(type){
 +
case 0:
 +
this.img=imgb;
 +
break;
 +
case 1:
 +
this.img=img1;
 +
break;
 +
case 2:
 +
this.img=img2;
 +
break;
 +
case 3:
 +
this.img=img3;
 +
break;
 +
case 4:
 +
this.img=img4;
 +
break;
 +
case 5:
 +
this.img=img5;
 +
break;
 +
}
 +
this.alive=true;
 +
}
 +
 
 +
function check(cucle=false){
 +
if(play){
 +
var color=0;
 +
var count=0;
 +
var changed=false;
 +
for(var x=0;x<cell_x;x++){
 +
count=0;
 +
for(var y=0;y<cell_y;y++){
 +
if(color==arr[x][y].type){
 +
count++;
 +
if(y+1>=cell_y){
 +
if(count>=3){
 +
changed=true;
 +
for(var z=y-count+1;z<=y;z++){
 +
arr[x][z].alive=false;
 +
}
 +
}
 +
}
 +
}
 +
else{
 +
if(count>=3){
 +
changed=true;
 +
for(var z=y-count;z<y;z++){
 +
arr[x][z].alive=false;
 +
}
 +
}
 +
color=arr[x][y].type;
 +
count=1;
 +
}
 +
}
 +
}
 +
for(y=0;y<cell_y;y++){
 +
count=0;
 +
for(x=0;x<cell_x;x++){
 +
if(color==arr[x][y].type){
 +
count++;
 +
if(x+1>=cell_x){
 +
if(count>=3){
 +
changed=true;
 +
for(var z=x-count+1;z<=x;z++){
 +
arr[z][y].alive=false;
 +
}
 +
}
 +
}
 +
}
 +
else{
 +
if(count>=3){
 +
changed=true;
 +
for(var z=x-count;z<x;z++){
 +
arr[z][y].alive=false;
 +
}
 +
}
 +
color=arr[x][y].type;
 +
count=1;
 +
}
 +
}
 +
}
 +
if(cucle){
 +
move_stones_auto();
 +
}
 +
return changed;
 +
}
 +
}
 +
 
 +
function move_stones_auto(){
 +
inter=setInterval(drawer,speed);
 +
}
 +
 
 +
function move_stones_auto_silent(){
 +
var gravity;
 +
for(var x=0;x<cell_x;x++){
 +
gravity=true;
 +
while(gravity){
 +
gravity=false;
 +
if(arr[x][0].alive==false){
 +
arr[x][0]=stone_gen();
 +
gravity=true;
 +
}
 +
for(var y=0;y<cell_y-1;y++){
 +
if(arr[x][y+1].alive==false&arr[x][y].alive==true){
 +
arr[x][y+1].type=arr[x][y].type;
 +
arr[x][y+1].img=arr[x][y].img;
 +
arr[x][y+1].alive=true;
 +
arr[x][y].alive=false;
 +
gravity=true;
 +
}
 +
}
 +
}
 +
}
 +
}
 +
 
 +
function drawer(){
 +
gravity=false;
 +
for(var x=0;x<cell_x;x++){
 +
 +
if(arr[x][0].alive==false){
 +
arr[x][0]=stone_gen();
 +
//console.log('gen new x:'+x+" y:0");
 +
gravity=true;
 +
}
 +
for(var y=0;y<cell_y-1;y++){
 +
if(arr[x][y+1].alive==false&arr[x][y].alive==true){
 +
arr[x][y+1].type=arr[x][y].type;
 +
arr[x][y+1].img=arr[x][y].img;
 +
arr[x][y+1].alive=true;
 +
arr[x][y].alive=false;
 +
gravity=true;
 +
//console.log('move down x:'+x+" y:"+y);
 +
}
 +
}
 +
 +
}
 +
full_draw();
 +
if(gravity==false){
 +
clearInterval(inter);
 +
check(true);
 +
 +
}
 +
}
 +
 
 +
 
 +
function full_draw(){
 +
draw_back();
 +
draw_current_stones();
 +
}
 +
 
 +
function mousedown(x,y){
 +
var x=parseInt((-(bw+bc)+x)/cell_size);
 +
var y=parseInt((-(bw+bc)+y)/cell_size);
 +
pressed=true;
 +
g_x=x;
 +
g_y=y;
 +
//console.log("CLick!!! x:"+x+" y:"+y);
 +
}
 +
 
 +
function mousemove(x,y){
 +
l_x=parseInt((-(bw+bc)+x)/cell_size);
 +
l_y=parseInt((-(bw+bc)+y)/cell_size);
 +
//console.log("x:"+x+" y:"+y);
 +
}
 +
 
 +
function mouseup(){
 +
if(pressed){
 +
if(l_x!=g_x&l_y==g_y){
 +
if(g_x>l_x){
 +
var mx=-1;
 +
}
 +
if(g_x<l_x){
 +
var mx=1;
 +
}
 +
tmp=[];
 +
tmp.type=arr[g_x][g_y].type;
 +
tmp.alive=arr[g_x][g_y].alive;
 +
tmp.img=arr[g_x][g_y].img;
 +
 +
arr[g_x][g_y].type=arr[g_x+mx][g_y].type;
 +
arr[g_x][g_y].alive=arr[g_x+mx][g_y].alive;
 +
arr[g_x][g_y].img=arr[g_x+mx][g_y].img;
 +
 +
arr[g_x+mx][g_y].type=tmp.type;
 +
arr[g_x+mx][g_y].alive=tmp.alive;
 +
arr[g_x+mx][g_y].img=tmp.img;
 +
draw_back();
 +
draw_current_stones();
 +
if(arr[g_x+mx][g_y].type==0){
 +
explode(g_x+mx,g_y);
 +
}
 +
else if(arr[g_x][g_y].type==0){
 +
explode(g_x,g_y);
 +
}
 +
else{
 +
setTimeout(function(){
 +
if(check()){
 +
full_work();
 +
}
 +
else{
 +
tmp=[];
 +
tmp.type=arr[g_x][g_y].type;
 +
tmp.alive=arr[g_x][g_y].alive;
 +
tmp.img=arr[g_x][g_y].img;
 +
 +
arr[g_x][g_y].type=arr[g_x+mx][g_y].type;
 +
arr[g_x][g_y].alive=arr[g_x+mx][g_y].alive;
 +
arr[g_x][g_y].img=arr[g_x+mx][g_y].img;
 +
 +
arr[g_x+mx][g_y].type=tmp.type;
 +
arr[g_x+mx][g_y].alive=tmp.alive;
 +
arr[g_x+mx][g_y].img=tmp.img;
 +
full_draw();
 +
}
 +
}, speed*2);
 +
}
 +
}
 +
if(l_x==g_x&l_y!=g_y){
 +
if(g_y>l_y){
 +
var my=-1;
 +
}
 +
if(g_y<l_y){
 +
var my=1;
 +
}
 +
tmp=[];
 +
tmp.type=arr[g_x][g_y].type;
 +
tmp.alive=arr[g_x][g_y].alive;
 +
tmp.img=arr[g_x][g_y].img;
 +
 +
arr[g_x][g_y].type=arr[g_x][g_y+my].type;
 +
arr[g_x][g_y].alive=arr[g_x][g_y+my].alive;
 +
arr[g_x][g_y].img=arr[g_x][g_y+my].img;
 +
 +
arr[g_x][g_y+my].type=tmp.type;
 +
arr[g_x][g_y+my].alive=tmp.alive;
 +
arr[g_x][g_y+my].img=tmp.img;
 +
draw_back();
 +
draw_current_stones();
 +
if(arr[g_x][g_y+my].type==0){
 +
explode(g_x,g_y+my);
 +
}
 +
else if(arr[g_x][g_y].type==0){
 +
explode(g_x,g_y);
 +
}
 +
else {
 +
setTimeout(function(){
 +
if(check()){
 +
full_work();
 +
}
 +
else{
 +
tmp=[];
 +
tmp.type=arr[g_x][g_y].type;
 +
tmp.alive=arr[g_x][g_y].alive;
 +
tmp.img=arr[g_x][g_y].img;
 +
 +
arr[g_x][g_y].type=arr[g_x][g_y+my].type;
 +
arr[g_x][g_y].alive=arr[g_x][g_y+my].alive;
 +
arr[g_x][g_y].img=arr[g_x][g_y+my].img;
 +
 +
arr[g_x][g_y+my].type=tmp.type;
 +
arr[g_x][g_y+my].alive=tmp.alive;
 +
arr[g_x][g_y+my].img=tmp.img;
 +
full_draw();
 +
}
 +
}, speed*2);
 +
}
 +
}
 +
 +
}
 +
}
 +
 
 +
function full_work(){
 +
steps++;
 +
check();
 +
draw_back();
 +
draw_current_stones();
 +
move_stones_auto();
 +
draw_back();
 +
draw_current_stones();
 +
}
 +
 
 +
 
 +
function explode(cx,cy){
 +
arr[cx][cy].img=explodeimg;
 +
for(var x=0;x<cell_x;x++){
 +
arr[x][cy].img=explodeimg;
 +
}
 +
for(var y=0;y<cell_x;y++){
 +
arr[cx][y].img=explodeimg;
 +
}
 +
draw_back();
 +
draw_current_stones();
 +
setTimeout(function(){
 +
full_work();
 +
},speed
 +
);
 +
}
 +
 
 +
function play_checker(){
 +
 +
 +
if(mode==1){
 +
if(steps>=maxstep){
 +
play=false;
 +
alert("Шаги кончились")
 +
clearInterval(checker);
 +
}
 +
steper_s.innerHTML=maxstep-steps;
 +
}
 +
else{
 +
steper_s.innerHTML=steps;
 +
}
 +
if(mode==2){
 +
timer_s.innerHTML=parseInt(100*(maxtime- ((new Date)/1000-timer)))/100;
 +
if((new Date)/1000-timer>=maxtime){
 +
timer_s.innerHTML=0;
 +
play=false;
 +
alert("Время вышло")
 +
clearInterval(checker);
 +
}
 +
}
 +
else{
 +
timer_s.innerHTML=parseInt(100*((new Date)/1000-timer))/100;
 +
}
 +
score_view.innerHTML=score;
 +
}

Текущая версия на 16:15, 1 июня 2020

Описание[править]

Реализация компьютерной игры "3 в ряд" на языке программирования JavaScript

Исполнитель: Обловатный Родион и Гусика Никита

Группа 3630103/90001, Кафедра Теоретической механики


Визуализация[править]

Код программы[править]

Код программы на языке JavaScript:

<syntaxhighlight lang="javascript" line start="1" enclose="div"> var mode=0; var maxstep=200; var maxtime=10;

var cell_x = 8; var cell_y = 8;

var colors=5;

var cell_bc1 = "rgba(230,230,230,0.5)"; var cell_bc2 = "rgba(200,200,200,0.5)"; var cell_size = 80; //Размер клетки

var bv = 0.01;

var bw = 20; var bc = 4; var bb = "rgba(200,255,200,0.7)"; var bcc = "rgba(111,111,111,0.9)";

var speed=100;

var ctx = cnv.getContext('2d'); var score=0; var w = 2*(bw+bc)+cell_x*cell_size; var h = 2*(bw+bc)+cell_y*cell_size;

var timer= new Date()/1000; var steps=0;

var img1=new Image(); var img2=new Image(); var img3=new Image(); var img4=new Image(); var img5=new Image(); var imgb=new Image(); var explodeimg =new Image(); var arr = [];

var play=true;

var pressed=false; var g_x; var g_y; var l_x; var l_y;

window.onload = function (){ img1.src='img/1.png'; img2.src='img/2.png'; img3.src='img/3.png'; img4.src='img/4.png'; img5.src='img/5.png'; imgb.src='img/bonus.png'; explodeimg.src='img/explode.png'; cnv.width = w; cnv.height = h; draw_back(); add_start_stones(); score=0; if(mode==1){ steper_t.innerHTML="Шагов осталось"; } else{ steper_t.innerHTML="Шаги"; } if(mode==2){ timer_t.innerHTML="Осталось секунд"; } else{ timer_t.innerHTML="Время"; } checker=setInterval(play_checker,speed); }

function draw_current_stones(){ for(var x=0;x<cell_x;x++){ for(var y=0;y<cell_y;y++){ if(arr[x][y].alive){ ctx.drawImage(arr[x][y].img,bw+bc+(x)*cell_size,bw+bc+(y)*cell_size,cell_size,cell_size); if(arr[x][y].img==explodeimg){ arr[x][y].alive=false; } } } } }

function stone_gen(){ score+=10; if(Math.random()>bv){ color=parseInt(1+Math.random()*(colors-0.01)); } else{ color=0; } return new stone(color); }

function add_start_stones(){ var color; for(var x=0;x<cell_x;x++){ arr.push([]); for(var y=0;y<cell_y;y++){ arr[arr.length-1].push(stone_gen()); } } while(check()){ move_stones_auto_silent(); } setTimeout(draw_current_stones, 100); }

function draw_back(){ ctx.fillStyle = bb; ctx.strokeStyle = bb; ctx.fillRect(0,0,w,h); ctx.strokeRect(0,0,w,h);

ctx.fillStyle = bcc; ctx.strokeStyle = bcc; ctx.fillRect(bw-bc,bw-bc,w-(bw-bc)*2,h-(bw-bc)*2); ctx.strokeRect(bw-bc,bw-bc,w-(bw-bc)*2,h-(bw-bc)*2); ctx.clearRect(bw+bc,bw+bc,w-(bw+bc)*2,h-(bw+bc)*2);

for(var x=0;x<cell_x;x++){ for(var y=0;y<cell_y;y++){ if((x+y)%2==0){ ctx.fillStyle = cell_bc1; ctx.strokeStyle = cell_bc1; } else{ ctx.fillStyle = cell_bc2; ctx.strokeStyle = cell_bc2; } ctx.fillRect(bw+bc+(x)*cell_size,bw+bc+(y)*cell_size,cell_size,cell_size); ctx.strokeRect(bw+bc+(x)*cell_size,bw+bc+(y)*cell_size,cell_size,cell_size); } } }

function stone(type){ this.type=type; switch(type){ case 0: this.img=imgb; break; case 1: this.img=img1; break; case 2: this.img=img2; break; case 3: this.img=img3; break; case 4: this.img=img4; break; case 5: this.img=img5; break; } this.alive=true; }

function check(cucle=false){ if(play){ var color=0; var count=0; var changed=false; for(var x=0;x<cell_x;x++){ count=0; for(var y=0;y<cell_y;y++){ if(color==arr[x][y].type){ count++; if(y+1>=cell_y){ if(count>=3){ changed=true; for(var z=y-count+1;z<=y;z++){ arr[x][z].alive=false; } } } } else{ if(count>=3){ changed=true; for(var z=y-count;z<y;z++){ arr[x][z].alive=false; } } color=arr[x][y].type; count=1; } } } for(y=0;y<cell_y;y++){ count=0; for(x=0;x<cell_x;x++){ if(color==arr[x][y].type){ count++; if(x+1>=cell_x){ if(count>=3){ changed=true; for(var z=x-count+1;z<=x;z++){ arr[z][y].alive=false; } } } } else{ if(count>=3){ changed=true; for(var z=x-count;z<x;z++){ arr[z][y].alive=false; } } color=arr[x][y].type; count=1; } } } if(cucle){ move_stones_auto(); } return changed; } }

function move_stones_auto(){ inter=setInterval(drawer,speed); }

function move_stones_auto_silent(){ var gravity; for(var x=0;x<cell_x;x++){ gravity=true; while(gravity){ gravity=false; if(arr[x][0].alive==false){ arr[x][0]=stone_gen(); gravity=true; } for(var y=0;y<cell_y-1;y++){ if(arr[x][y+1].alive==false&arr[x][y].alive==true){ arr[x][y+1].type=arr[x][y].type; arr[x][y+1].img=arr[x][y].img; arr[x][y+1].alive=true; arr[x][y].alive=false; gravity=true; } } } } }

function drawer(){ gravity=false; for(var x=0;x<cell_x;x++){

if(arr[x][0].alive==false){ arr[x][0]=stone_gen(); //console.log('gen new x:'+x+" y:0"); gravity=true; } for(var y=0;y<cell_y-1;y++){ if(arr[x][y+1].alive==false&arr[x][y].alive==true){ arr[x][y+1].type=arr[x][y].type; arr[x][y+1].img=arr[x][y].img; arr[x][y+1].alive=true; arr[x][y].alive=false; gravity=true; //console.log('move down x:'+x+" y:"+y); } }

} full_draw(); if(gravity==false){ clearInterval(inter); check(true);

} }


function full_draw(){ draw_back(); draw_current_stones(); }

function mousedown(x,y){ var x=parseInt((-(bw+bc)+x)/cell_size); var y=parseInt((-(bw+bc)+y)/cell_size); pressed=true; g_x=x; g_y=y; //console.log("CLick!!! x:"+x+" y:"+y); }

function mousemove(x,y){ l_x=parseInt((-(bw+bc)+x)/cell_size); l_y=parseInt((-(bw+bc)+y)/cell_size); //console.log("x:"+x+" y:"+y); }

function mouseup(){ if(pressed){ if(l_x!=g_x&l_y==g_y){ if(g_x>l_x){ var mx=-1; } if(g_x<l_x){ var mx=1; } tmp=[]; tmp.type=arr[g_x][g_y].type; tmp.alive=arr[g_x][g_y].alive; tmp.img=arr[g_x][g_y].img;

arr[g_x][g_y].type=arr[g_x+mx][g_y].type; arr[g_x][g_y].alive=arr[g_x+mx][g_y].alive; arr[g_x][g_y].img=arr[g_x+mx][g_y].img;

arr[g_x+mx][g_y].type=tmp.type; arr[g_x+mx][g_y].alive=tmp.alive; arr[g_x+mx][g_y].img=tmp.img; draw_back(); draw_current_stones(); if(arr[g_x+mx][g_y].type==0){ explode(g_x+mx,g_y); } else if(arr[g_x][g_y].type==0){ explode(g_x,g_y); } else{ setTimeout(function(){ if(check()){ full_work(); } else{ tmp=[]; tmp.type=arr[g_x][g_y].type; tmp.alive=arr[g_x][g_y].alive; tmp.img=arr[g_x][g_y].img;

arr[g_x][g_y].type=arr[g_x+mx][g_y].type; arr[g_x][g_y].alive=arr[g_x+mx][g_y].alive; arr[g_x][g_y].img=arr[g_x+mx][g_y].img;

arr[g_x+mx][g_y].type=tmp.type; arr[g_x+mx][g_y].alive=tmp.alive; arr[g_x+mx][g_y].img=tmp.img; full_draw(); } }, speed*2); } } if(l_x==g_x&l_y!=g_y){ if(g_y>l_y){ var my=-1; } if(g_y<l_y){ var my=1; } tmp=[]; tmp.type=arr[g_x][g_y].type; tmp.alive=arr[g_x][g_y].alive; tmp.img=arr[g_x][g_y].img;

arr[g_x][g_y].type=arr[g_x][g_y+my].type; arr[g_x][g_y].alive=arr[g_x][g_y+my].alive; arr[g_x][g_y].img=arr[g_x][g_y+my].img;

arr[g_x][g_y+my].type=tmp.type; arr[g_x][g_y+my].alive=tmp.alive; arr[g_x][g_y+my].img=tmp.img; draw_back(); draw_current_stones(); if(arr[g_x][g_y+my].type==0){ explode(g_x,g_y+my); } else if(arr[g_x][g_y].type==0){ explode(g_x,g_y); } else { setTimeout(function(){ if(check()){ full_work(); } else{ tmp=[]; tmp.type=arr[g_x][g_y].type; tmp.alive=arr[g_x][g_y].alive; tmp.img=arr[g_x][g_y].img;

arr[g_x][g_y].type=arr[g_x][g_y+my].type; arr[g_x][g_y].alive=arr[g_x][g_y+my].alive; arr[g_x][g_y].img=arr[g_x][g_y+my].img;

arr[g_x][g_y+my].type=tmp.type; arr[g_x][g_y+my].alive=tmp.alive; arr[g_x][g_y+my].img=tmp.img; full_draw(); } }, speed*2); } }

} }

function full_work(){ steps++; check(); draw_back(); draw_current_stones(); move_stones_auto(); draw_back(); draw_current_stones(); }


function explode(cx,cy){ arr[cx][cy].img=explodeimg; for(var x=0;x<cell_x;x++){ arr[x][cy].img=explodeimg; } for(var y=0;y<cell_x;y++){ arr[cx][y].img=explodeimg; } draw_back(); draw_current_stones(); setTimeout(function(){ full_work(); },speed ); }

function play_checker(){


if(mode==1){ if(steps>=maxstep){ play=false; alert("Шаги кончились") clearInterval(checker); } steper_s.innerHTML=maxstep-steps; } else{ steper_s.innerHTML=steps; } if(mode==2){ timer_s.innerHTML=parseInt(100*(maxtime- ((new Date)/1000-timer)))/100; if((new Date)/1000-timer>=maxtime){ timer_s.innerHTML=0; play=false; alert("Время вышло") clearInterval(checker); } } else{ timer_s.innerHTML=parseInt(100*((new Date)/1000-timer))/100; } score_view.innerHTML=score;

}