2012-08-01 10 views
10

Sitemde zaten kullandığım konami kodunu kullanarak uygulamak istiyorum. Sadece skifree ile çalışamam. İşte bu siteden çekti, skifree için kodPaskalya yumurtası olarak skifree eklemede sorun yaşamaya başladım

var kkeys = [], konami = "38,38,40,40,37,39,37,39,66,65"; 
$(document).keydown(function(e) { 
kkeys.push(e.keyCode); 
if (kkeys.toString().indexOf(konami) >= 0){ 
$(document).unbind('keydown',arguments.callee); 
// Launch easter egg here 
    } 
}); 

: Hızlı referans için , İşte konami kod http://timelessname.com/canvas/skifree/

var left; 
    var right; 
    var faster = false; 

    var step = 0; 
    var obst = new Array(); 

    var locX = 430; 
    var locY = 100; 

    var running = true; 

    var guy = new Image(); 
    var guyLeft = new Image(); 
    var guyRight = new Image(); 
    var crash = new Image(); 
    var rock = new Image(); 
    var tree = new Image(); 
    var bush = new Image(); 
    guy.src = "http://timelessname.com/canvas/skifree/guy_down.png"; 
    guyLeft.src = "http://timelessname.com/canvas/skifree/guy_left.png"; 
    guyRight.src = "http://timelessname.com/canvas/skifree/guy_right.png"; 
    crash.src = "http://timelessname.com/canvas/skifree/crash.png"; 
    rock.src = "http://timelessname.com/canvas/skifree/rock.png"; 
    tree.src = "http://timelessname.com/canvas/skifree/tree.png"; 

    $(window).keydown(function(e){ 
     if(e.keyCode == 37){ 
      left = true; 
     } 
     else if(e.keyCode == 39){ 
      right = true; 
     } 
     else if(e.keyCode == 70){ 
      faster = true; 
     } 
    }); 
    $(window).keyup(function(e){ 
     if(e.keyCode == 37){ 
      left = false; 
     } 
     else if(e.keyCode == 39){ 
      right = false; 
     } 
     else if(e.keyCode == 70){ 
      faster = false; 
     } 
     else if(e.keyCode == 32){ 
      if(!running){ 
       step = 0; 
       obst = new Array(); 
       locX = 430; 
       locY = 100; 
       running = true; 
       runSki(); 
      } 
     } 
    }); 




    //TODO: wrap edges (no wall) 

    function runSki(){ 
     if(!running) return; 
     var canvas = document.getElementById("can"); 
     var ctx = canvas.getContext("2d"); 

     ctx.fillStyle = "rgb(255,255,255)"; 
     ctx.fillRect (0, 0, canvas.width, canvas.height); 


     if(left){ 
      if(locX > -320){ 
       locX--; 
      } 
     } 
     if(right){ 
      if(locX < 640+320){ 
       locX++; 
      } 
     } 

     ctx.fillStyle = "rgb(0,0,0)"; 

     ctx.fillRect (-10-locX, 0, 10, canvas.height); 
     ctx.fillRect (640*2+20-locX, 0, 10, canvas.height); 


     for(var i = 0; i < obst.length;i++){ 
      var o = obst[i]; 
      o.y-=2.5; 
      if(faster){ 
       o.y-=2.5; 
      } 
      ctx.drawImage(o.type,o.x-locX,o.y); 
      if(o.y < -30){ 
       obst.splice(i,1); 
       i--; 
      } 

      var tX = o.x-locX+5; 
      var tY = o.y+5; 

      var d = Math.sqrt((tX-320+3)*(tX-320+3)+ (tY-100+5)*(tY-100+5)); 
      if(d < 20){ 
       ctx.drawImage(crash,320,locY); 
       running = false; 
      } 
     } 
     if(running){ 
     if(left){ 
      ctx.drawImage(guyLeft,320,locY); 
     } 
     else if(right){ 
      ctx.drawImage(guyRight,320,locY); 
     } 
     else{ 
      ctx.drawImage(guy,320,locY); 
     } 
     } 

     var randomnumber=Math.floor(Math.random()*641) 
     if(Math.floor(step*10)%10==0){ 
      var type; 
      if(Math.floor(Math.random()*2) == 0){ 
       type = rock; 
      } 
      else{ 
       type = tree; 
      } 
      var obj = {x: Math.floor(Math.random()*641*2), y:480, type: type}; 
      obst.push(obj); 
     } 
     step+= 0.1; 
     if(running){ 
      setTimeout("runSki();",1); 
     } 
    } 
    setTimeout("runSki();",1000); 
+3

+1 ile

setTimeout("runSki();"

her iki örneği ikame JavaScript kayak tamamladı. Bu harika. "Çalışmıyor" ile ne demek istiyorsun? Bize bir jsfiddle verebilir misin? – SomeKittens

+0

@setTimeout: bir işlevi değil, bir dizeyi iletir. Ve 1ms çok kısa ve [tarayıcılar arası güvenli değil] (http://stackoverflow.com/q/9647215/1048572) - hız değişecektir. – Bergi

+0

Ama .. SkiFree, C. – user3155368

cevap

3

bu belli ama kopyalanan kodu yanlış görünüyor değil; Buraya bakın:

if(left){ 
     if(locX > -320){ 
      locX--; 
     } 
    } 
    if(right){ 
     if(locX < 640+320){ 
      locX++; 
     } 
    } 

Bunu html'den kopyaladınız mı? > & < karakter çıkılmamalıdır :)

Ayrıca görüntü yolları güncelleme unutmayın

DÜZENLEME: D

DÜZENLEME

ben bu çalışmak lazım sayfa. Sadece, <canvas/> elemanı ilave bir işlev setupSki olarak adlandırılan (konami fonksiyonu ile adlandırılır) ve

setTimeout(runSki

+0

ile yazılmıştır. Görüntü yollarını güncelledim, ancak hala çalışmıyor. Bununla demek istediğim, bütün oyun sadece herhangi bir yerde görünmüyor. Ayrıca yeni bir sayfa oluşturmayı denedim, sadece bir test yapmak ve web sayfasının tüm kaynak kodlarını skifree ile yapıştırmayı denedim, ama o zaman bile oyun görünmeyecek =/ – user1568624

+0

Tuval elemanını kopyaladınız mı? Herhangi bir javascript hatası var mı ('runSki tanımlı değil')? – lnrbob

İlgili konular