Info:
-sterowanie na klawiszach W,S,A,D
-jestem świadom, że odznaczenie inputa sprawia, że gra nie działa.
Kody:
jQuery:
<script type="text/javascript"> <!-- function Snake(nazwa_,rozmiarPlanszy_,szybkosc_,maxOwocow_) { /* Snake by Pawel 'lord_T' Maruszczyk * Silesia, July 2008, version 1.0 * License MIT */ this.rozmiar=rozmiarPlanszy_; this.ileOwoc=0; this.maxOwoc=maxOwocow_|2; this.dlugosc=2; //glowa + ogon this.ogon=[]; this.szybkosc=szybkosc_; this.nazwa=nazwa_; this.ruch=true; this.i; this.j; this.macierz; this.kierunek='down';//'up','right','left' this.niemozliwy='s';//kierunek niemozliwy do wybrania (ktory klawisz) var ths=this; //aktualizacja ogona this.addTail=function(a,b) { this.ogon.unshift({i:a,j:b}); if( (this.ogon.length+1) >this.dlugosc ) { var usuniety=this.ogon.pop(); $('#'+usuniety.i+'_'+usuniety.j).removeClass().addClass('pole'); } } //sprawdzanie kolizji glowy z ogonem i owocami this.checkCol/*isions*/=function(i,j) { var count=this.ogon.length; for(var k=1;k<count;++k) if(this.ogon[k].i==i && this.ogon[k].j==j){ this.ruch=false; break; } if($('#'+i+'_'+j).hasClass('owoc')){ ++this.dlugosc; --this.ileOwoc; $('#'+i+'_'+j).removeClass().addClass('glowa'); } } //kolorowanie glowy i sprawdzenie kolizji this.putHead=function(i,j) { $('#'+i+'_'+j).addClass('glowa'); this.checkCol(i,j); this.i=i; this.j=j; } //kolorowanie ogona this.moveTail=function() { for(var k=0;k<this.ogon.length;++k) $('#'+this.ogon[k].i+'_'+this.ogon[k].j).addClass('ogon'); } //ruch glowy w wybranym kierunku i aktualizacja ogona this.moveHead=function() { this.addTail(this.i,this.j); switch(ths.kierunek) { case 'down': ths.niemozliwy='w';++this.i;this.i%=this.rozmiar;break; case 'up' : ths.niemozliwy='s';this.i+=(this.rozmiar-1);this.i%=this.rozmiar;break; case 'left': ths.niemozliwy='d';this.j+=(this.rozmiar-1);this.j%=this.rozmiar;break; case 'right':ths.niemozliwy='a';++this.j;this.j%=this.rozmiar; break; } this.putHead(this.i,this.j); } //wstawianie owocow na plansze this.putFruit=function() { if(this.ileOwoc<=this.maxOwoc){ var losI=Math.floor(Math.random() * this.rozmiar); var losJ=Math.floor(Math.random() * this.rozmiar); var wolne=true; if(this.i==losI && this.j==losJ) wolne=false; if(wolne){ var count=this.ogon.length; for(var k=0;k<count;++k) if(this.ogon[k].i==losI && this.ogon[k].j==losJ){ wolne=false; break; } } if(wolne){ $('#'+losI+'_'+losJ).addClass('owoc'); ++this.ileOwoc; } } nastOwoc=Math.floor(Math.random())+8.5*ths.szybkosc; setTimeout(ths.nazwa+".putFruit()",nastOwoc); } //petla czasu - rusza wezem this.timeLoop=function() { this.moveHead(); this.moveTail(); if(this.ruch) setTimeout(ths.nazwa+".timeLoop()",ths.szybkosc); else{ $('.waz div').css('background','#ccc'); $('.waz').after($('<div id="gameover">GAME OVER</div>')); } } //przygotowanie planszy this.makeSnakesPlace=function() { n=this.rozmiar; this.macierz=new Array(n); var tabelaPola=$('<table class="waz"></table>'); for(var i=0;i<this.rozmiar;++i) { this.macierz[i]=new Array(n); var wiersz=$('<tr></tr>'); for(var j=0;j<this.rozmiar;++j) { this.macierz[i][j]=0; wiersz.append($('<td><div class="pole" id="'+i+'_'+j+'"></div></td>')); } tabelaPola.append(wiersz); } $('body').append(tabelaPola).append('<input style="width:0;color:white" type="text" id="czytnik"/>'); $('#czytnik').focus(); $('#czytnik').keypress(function(e){ $(this).val(''); var key=String.fromCharCode(e.which); if(key!=ths.niemozliwy) switch(key){ case 's':ths.kierunek='down'; break; case 'w':ths.kierunek='up'; break; case 'a':ths.kierunek='left'; break; case 'd':ths.kierunek='right'; break; } }); this.putHead(0,2); this.putFruit(); this.timeLoop(); }//make this.makeSnakesPlace(); }//objekt snake $('document').ready(function(){ Waz=new Snake('Waz',10,300); }); //--> </script>
css:
Kod
<style type="text/css">
/* <![CDATA[ */
div{
height:20px;
width:20px;
}
div.pole{
background:#217F25;
}
div.glowa{
background:yellow;
}
div.ogon{
background:red;
}
div.owoc{
background:blue;
}
table.waz,#gameover
{
margin:20px auto;
padding:0;
}
#gameover{
width:100px;
}
td,tr{
padding:0;
margin:0;
border:0;
}
/* ]]> */
</style>
/* <![CDATA[ */
div{
height:20px;
width:20px;
}
div.pole{
background:#217F25;
}
div.glowa{
background:yellow;
}
div.ogon{
background:red;
}
div.owoc{
background:blue;
}
table.waz,#gameover
{
margin:20px auto;
padding:0;
}
#gameover{
width:100px;
}
td,tr{
padding:0;
margin:0;
border:0;
}
/* ]]> */
</style>
Trochę mi ten kod przycięło do lewej, no ale tak działa forum na tabulacje;) Ładniejszy w źródle strony:)