JavaScript kodları

Katılım
6 Ağustos 2020
Mesajlar
455
Daha fazla  
Cinsiyet
Erkek
Meslek
Yazılımcı
Arkadaşlar şu kodlardan pek bir şey anlamayan lakin W3schoolsun quizinden başarıyla geçmiş(25'de 22'yi bilerek), linkedinin JS rozeti alma quizinden başarıyla geçmiş biri kendine JS biliyorum diyebilir mi?

Kod:
class snakeGame{

constructor(){

this.canvas=document.getElementById('game');
this.context=this.canvas.getContext('2d');
document.addEventListener('keydown',this.onKeyPress.bind(this));


}
init() {

this.positionX=this.positionY=10;
this.appleX=this.appleY=5;
this.tailSize=5;
this.trail=[];
this.gridSize=this.tileCount=20;
this.veloCityX=this.veloCityY=0;
this.timer=setInterval(this.loop.bind(this),1000/15);


}

reset(){
clearInterval(this.timer);
this.init();
}
loop(){
this.update();
this.draw();
}
update(){
this.positionX+=this.veloCityX;
this.positionY+=this.veloCityY;

if (this.positionX<0) {

this.positionX=this.tileCount-1;

}

if (this.positionY<0) {

this.positionY=this.tileCount-1;

}

if (this.positionX>this.tileCount-1) {

this.positionX=0;
}
if (this.positionY>this.tileCount-1) {

this.positionY=0;
}
this.trail.forEach(t=>{

if (this.positionX==t.positionX&&this.positionY==t.positionY) {

this.reset();
}

});

this.trail.push({positionX:this.positionX,positionY:this.positionY});
while(this.trail.length>this.tailSize){
this.trail.shift();
}

if (this.appleX==this.positionX&&this.appleY==this.positionY) {

this.tailSize++;
this.appleX=Math.floor(Math.random()*this.tileCount);
this.appleY=Math.floor(Math.random()*this.tileCount);
}

}
draw(){

this.context.fillStyle='black';
this.context.fillRect(0,0,this.canvas.width,this.canvas.height);

this.context.fillStyle='white';
this.context.font='20px Arial';
this.context.fillText(this.tailSize-5,20,40);

this.context.fillStyle='red';
this.trail.forEach(t => {
this.context.fillRect(t.positionX*this.gridSize,t.positionY*this.gridSize,this.gridSize-5,this.gridSize-5);
});


this.context.fillStyle='pink';
this.context.fillRect(this.appleX*this.gridSize,this.appleY*this.gridSize,this.gridSize-5,this.gridSize-5);

}
onKeyPress(e){

if (e.keyCode==37&&this.veloCityX!==1) {

this.veloCityX=-1;
this.veloCityY=0;
}
if (e.keyCode==38&&this.veloCityY!==1) {

this.veloCityX=0;
this.veloCityY=-1;
}
if (e.keyCode==39&&this.veloCityX!==-1) {

this.veloCityX=1;
this.veloCityY=0;
}
if (e.keyCode==40&&this.veloCityY!==-1) {

this.veloCityX=0;
this.veloCityY=1;
}

}


}
const game=new snakeGame();
window.onload=()=>game.init();
 
Son düzenleyen: Moderatör:
Bu kodlardan bu şekilde kimse bir şey anlayamaz. Kod eklentisini kullanarak ekleyin. Belirtilen quizleri geçmeniz elbette bir şey ifade ediyor ama üzerine çalışmanız gerek. Sadece quizi geçtim tamam artık diyemezsiniz.

Eklediğiniz kodlar da klavye ile oynanan basit bir yılan oyunu gibi duruyor.
 
Bu kodlardan bu şekilde kimse bir şey anlayamaz. Kod eklentisini kullanarak ekleyin. Belirtilen quizleri geçmeniz elbette bir şey ifade ediyor ama üzerine çalışmanız gerek. Sadece quizi geçtim tamam artık diyemezsiniz.

Eklediğiniz kodlar da klavye ile oynanan basit bir yılan oyunu gibi duruyor.
Lakin bu kodu anlamayan kişi canvas bilmiyor.
 
Lakin bu kodu anlamayan kişi canvas bilmiyor.
Kodu anlamak için canvas bilmeye gerek yok. Biraz mantık üreterek canvasın bir layer olarak kullanıldığını düşünebilir. Önemli olan genel algoritma yapısına hakim olmak.

Ek olarak ben şu ana kadar hiçbir dili tam olarak biliyorum demedim. Bir dili tam olarak öğrenmek için üzerinde sayısız proje çalışması yapmak gerekiyor. Her dilin kendine has kullanım alanı var.
 
Kodu anlamak için canvas bilmeye gerek yok. Biraz mantık üreterek canvasın bir layer olarak kullanıldığını düşünebilir. Önemli olan genel algoritma yapısına hakim olmak.

Ek olarak ben şu ana kadar hiçbir dili tam olarak biliyorum demedim. Bir dili tam olarak öğrenmek için üzerinde sayısız proje çalışması yapmak gerekiyor. Her dilin kendine has kullanım alanı var.
Kısacası bu kodu anlamayan biri js bilmiyordur diyorsunuz?
 
Kısacası bu kodu anlamayan biri js bilmiyordur diyorsunuz?
Olaya biraz yanlış yerden yaklaşıyorsun. Bir dili bilip bilmemeyi tek bir kod bloğundan anlayamazsın. Bir kişinin Javascript bilip bilmediğini yukarıdaki kodtan ayırt edemezsin. Javascript bir sürü framework çalıştıran kocaman bir dil.

Dilin temellerini biliyor olabilir. Bu kodu anlayamaması Javascript bilmediğini göstermez, anlaması bildiğini gösterir ama.
 
Kodun tabii ki bire bir olarak ne yapacağını dosyanın kendisini görmeden bilemeyiz. Ama nesneye yönelimli bir şekilde snake oyunu yapılmış gibi duruyor.

Hiçbir şey anlamadım diyorsan nesneye yönelimli programlamaya çok hakim olmayabilirsin.
 
Algoritma temelini ve syntax kurallarını biliyorsan bu dili biliyorum diyebilirsin, bu kodu anlamaman daha önce canvas ile ugraşmadığından olabilir.

Kodun sadece bir kısmı canvas syntax içeriyor, kalan diğer kısımdan algoritmayı çözmeniz gerekirdi.

Ek olarak bu kod diliminde comment olmaması bir eksiklik, siz projelerinizde comment kullanmaya dikkat edin.
 
Zannediyorum ki Selman Kahya'nın 10 dakika içerisinde pure JS kullanarak kodladığı ve zamanında oyunun görsel olarak geliştirilmesi ve bugların giderilmesi için yarışma başlattığı kodlar bunlar.
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı