Created
July 8, 2011 21:15
-
-
Save yuxel/1072837 to your computer and use it in GitHub Desktop.
sercan oyun
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Array.prototype.arrayUnique = function(){ | |
var a = [], l = this.length; | |
for(var i=0; i<l; i++){ | |
for(var j=i+1; j<l; j++){ | |
if(this[i] === this[j]){ | |
j = ++i; | |
} | |
} | |
a.push(this[i]); | |
} | |
return a; | |
}; | |
var Game = {}; | |
Game.Zone = function(){ | |
var gameZone = $('.gameZone'), box = 3, clicked = 0, score = 0, randomArr = [], lev = box-2; | |
$("#startGame").click(function(){ | |
$('.infoBox').fadeOut(200).addClass('displayNone'); | |
level.randomNumber(); | |
}); | |
this.randomNumber = function(){ | |
for(var i=0; i<box; i++){ | |
randomArr[i] = Math.floor(Math.random()*40); | |
} | |
randomArr = randomArr.arrayUnique(); | |
if(randomArr.length !== box){ | |
level.randomNumber(); | |
} | |
this.gameZoneBox(); | |
return randomArr; | |
} | |
this.gameZoneBox = function(){ | |
gameZone.addClass('displayNone').fadeIn(600); | |
for(var i=0; i<box; i++){ | |
$('#gameZone'+randomArr[i]).css('background-image','url(images/'+randomArr[i]+'.png)'); | |
} | |
setTimeout(function(){ | |
gameZone.css('background-image',''); | |
},2000); | |
} | |
gameZone.click(function(e){ | |
var x = e.currentTarget.id, element = $('#'+x); | |
for(var i=0; i<box; i++){ | |
if(x !== 'gameZone'+randomArr[i]){ | |
element.addClass("err"); | |
}else{ | |
element.removeClass("err").addClass("ok").toggleClass("clicked"); | |
if(element.hasClass("clicked")){ | |
clicked++; | |
}else{ | |
clicked--; | |
alert('2 kez tıkladığın için tıklamayı geri aldık!'); | |
} | |
if(clicked == box){ | |
score = score+box*5; clicked = 0; box++; | |
gameZone.removeClass("ok err"); | |
$('.score').text('IQ Puan: ' + score); | |
if(box == 23){ | |
alert('Tebrikler, oyunu bitirdiniz! '+'Puanınız: '+score); | |
location.reload(); | |
}else{ | |
$('.level').text('Beyin Gücü: '+lev); | |
gameZone.removeClass("clicked"); | |
} | |
level.randomNumber(); | |
} | |
break; | |
} | |
} | |
if(element.hasClass("err")){ | |
alert('Kaybettin! Puanın: '+score); | |
location.reload(); | |
} | |
}); | |
} | |
var level = new Game.Zone(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Array, Object gibi şeylerin prototype'larıyla oynamak iyi bir şey değildir : http://www.codinghorror.com/blog/2008/07/monkeypatching-for-humans.html, dolayısıyla 1 ile 12. satır arasındaki kodları ayrı bir method yap util.array.unique gibi ve 26. satırdaki randomArr = randomArr.arrayUnique(); satırı randomArr = util.array.unique(randomArr); gibi değiştir.
JavaScript'de, isimlendirme kuralları (kural değil de gelenek daha çok) sınıf adları büyük harfle bşalr ama Game gibi namespace'ler küçük harfle başlar
var gameZone = $('.gameZone'), box = 3, clicked = 0, score = 0, randomArr = [], lev = box-2; şunun yerine
var gameZone = $('.gameZone'),
box = 3,
clicked = 0,
score = 0,
randomArr = [],
lev = box-2;
daha okunaklıdır.
19 satırı "level.randomNumber" yazmışsın ya, burası yanlış. Bu durumda doğru çalışır ama bu düzgün bir sınıf değil, sen sınıf içinde, sınıftan türettiğin specific bir objeyi çağırıyorsun ve bu yanlış. ben bu sınıfı var level2 =new Game.Zone() diye çağırırsam bu sınıfı çağıramayacam. Bunun bi çözümü var, bakalım onu bulabilecen mi (anahtar kelimeler: this, context)
methodlara comment yaz ki, ne iş yaptıklarını, kodu okumadan da anlayabileyim :)
47 satır ne yapıyor anlamadım, hatta ordaki for ne işi yapıyor onu da anlamadım. hah şimdi for'u anladım (burada bi 45 saniye daha kodu okumam gerekti) ama x diye değişken mi olur lan? ama 47, 48 ve 49 ne yapıyor onu anlamadım
click'in içindeki "işleri" methodlara ayır? "checkForMutlipleClick" diye bi method yaz atiyorum ve bu iki kere tiklanip tiklanmadigini kontrol etsin
oyun çok güzel olmuş lan :) ben bunu bizim öğrencilere yaptırırım :)