Autor Zpráva
Karel+ěš
Profil
Mám problém s hrou, začal jsem dělat zkušební základ a ani nevim jak to nejlíp stručně popsat. prostě vypočty kodů , podmíny a td neodpovídaj výsledku :D .
Uvidite sami vše jsme popsal v kodu. 4ast kodu jsem dal do komentáře, protože neni duležitý, ale je tam takže pochopíte jeho smysl. Taky jsem tam dal ukazatel pixlů X kostky, aby jste videli jak to nesedí.
Jsem začátečník, tak se nezlobte, jetli zjistíte, že by ten kod šel napsat daleko lípa dyžtak řekněte svůj nápad. díky
DEJTE TO DO JEDNÉ ŠLOŽKY, MĚLO BY VÁM TO JET.
.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  <meta name="generator" content="PSPad editor, www.pspad.com">
  
  <script src="js/jquery.js"></script>    
    <script src="js/hra.js"></script> 
  <title></title>
  <style>
  #pole {
  width: 500px;
  height: 500px;
  border: 1px solid black;
  position: absolute;
  top: 100px;
  left: 300px;
  }
  #koule{
  width: 50px;
  height: 50px;
  top: 190px;
  left: 0px;
  background : red;
  position: relative;
  }
  </style>
  </head>
  <body>
      <div id="pole" >
              <div id="koule">
              </div>
      </div>
      <p id="x"></p>
  </body>
</html>
TED JAVASCRIPT
var klavesy = 
{        
stop:82,
doleva : 37,
nahoru : 38,
doprava : 39,
dolu: 40
}
//ni6e proměnné, některé jsou možná nepotřebné, to neřešit.
var gogo = {}

var kulicka = {x : 0, y : 0}
var pocetschodu = 1;
var schody = [];
var hodnoceni = 0;
var start = false;
var rychlost = 20;
var gravitace;
var smer = 3 ;


var top = parseInt($("#koule").css("top"));  
 // object pro budouci schody...taky ted neřešit.
function schod()
{
this.x = 50;
this.y = 200;
}
// nastavení intervalu
$(function(){
    gogo.timer = setInterval(game,1000);
});


  function game()
{
    movePaddless();
}

 $(document).keydown(function(e){
if (e.keyCode == klavesy.doleva)
{smer = 180};
if (e.keyCode == klavesy.nahoru)
{smer = 90};
if (e.keyCode == klavesy.doprava)
{smer = 0};
if (e.keyCode == klavesy.dolu)
{smer = 270};
});
    
function movePaddless()
{
  //níže podnínky pro pohyb...teď tpo důležitý
    if (smer == 90 )
    {
   
      
      // DŮLEŽITÉ!!!! ...tady ten troling začíná
      //řešim zpomalení a pomalý přechod na pád
      rychlost -- ;
      if (rychlost == 0)
      {
         rychlost = 20;
          smer = 270;
        
      }
    
    
        var top = parseInt($("#koule").css("top"));
        $("#koule").css("top",top-rychlost);
     
    
    }
    if (smer == 270 )
    {
  
  
         
        var top = parseInt($("#koule").css("top"));
        $("#koule").css("top",top+rychlost);
    // tady troling pokračuje ..uvidíte, že se kostka zastaví až na 240.
    //jakoby se to celé posunulo o 20 px, ale proč jasně
    //jsem mu na hoře řek, ať to skončí na 0. :D
     if (top == 200)
     {
      smer = 3;
      }
     
     
         
    }
    if (smer == 180)
    {
        
        var left = parseInt($("#koule").css("left"));
        $("#koule").css("left",left-rychlost);
    }
    if (smer == 0)
    {
        
        var left = parseInt($("#koule").css("left"));
        $("#koule").css("left",left+rychlost);            
    }
  if (smer == 3)
    {
        
        var left = parseInt($("#koule").css("left"));
        $("#koule").css("left",left);            
    
    var top = parseInt($("#koule").css("top"));
        $("#koule").css("top",top);
    }     
     
 /*     if (smer == 90 || smer == 180  )
    {    
    rychlost -- ;
      if (rychlost == 0)
      {
         rychlost = 20;
          smer = 270;
        
      } 
        
        var top = parseInt($("#koule").css("top"));
        $("#koule").css("top",top-rychlost);    
    
        var left = parseInt($("#koule").css("left"));
        $("#koule").css("left",left-rychlost);
    }

    if (smer == 0 || smer == 90)
    {
           rychlost -- ;
      if (rychlost == 0)
      {
         rychlost = 20;
          smer = 270;
        
      }
      
        var left = parseInt($("#koule").css("left"));
        $("#koule").css("left",left+rychlost);    
    
    var top = parseInt($("#koule").css("top"));
        $("#koule").css("top",top-rychlost);        
    } 
  if (smer == 270 && smer == 180)
    {
      var left = parseInt($("#koule").css("left"));
        $("#koule").css("left",left-rychlost);
        
        var top = parseInt($("#koule").css("top"));
        $("#koule").css("top",top+rychlost);
    }  
   if (smer == 270 && smer == 0)
    {
        
        var left = parseInt($("#koule").css("left"));
        $("#koule").css("left",left+rychlost);    
    
        var top = parseInt($("#koule").css("top"));
        $("#koule").css("top",top+rychlost);
    } */
     $("#x").html(top);   
}
shaggy
Profil
Karel+ěš:
Uvidite sami vše jsme popsal v kodu
Neuvidíme. Daj odkaz na živú ukážku, nikto nebude čítať 160 riadkov kódu a/alebo si to u seba spúšťať.
peta
Profil
Mno, nevim, co to dela. Podle kodu je to nesrozumitelne, nemas oddelenou cast vypocty a cast zobraz vysledek.
Predpokladam, ze je to jakysi druh pohybou panacka p[x,y,w,h] v ohranicenem prostoru h[x1,x2,y1,y2]. Protoze panacek ma nejakou vysku a sirku (w,h), musis s nimi pocitat do jeho polohy. Protoze rychlost pohybu se muze menit, musis s tim pocitat v podminkach a zjistit, jestli prekroci okraj nebo neprekroci a pripadne ho o ten rozdil, ktery k okraji ma, pokud je mensi nez rychlost, posunout. Nic takoveho nevidim, ze bys tam resil. if (top == 200) plati pouze pokud je top=200, neplati v pripade prekroceni top=193 nebo opacnym smerem top=207. Tva podminka umoznuje panacku pohybovat se kamkoliv, pokud se nahodou netrefi presne do top=200. Za predpokladu, ze "smer" je uhel, neni mi jasny radek smer = 3;. Za predpokladu, ze smer ne uhel, ocekaval bych, ze souradnice x,y budes pocitat pomoci Math.sin, Math.cos a ne resit pomoci if (smer==270) :)
Karel+ěš
Profil
peta dik, ale to co pišeš, je z cesty. Říkal jsem že je to začatek, chtěl jsem tam udelat gravitaci a ano smer = 3 jako že se zastaví, když je na 200px.
Mě šlo o to, že ta kostka se posouvá špatně ale ne díky kodu, ja si nemůžu pomoct ale je to dobře napsaný a proto nechapu přoč když skočim přoč se zastaví až na -20 a ne na 0 jak je to v podmínce.
Já jsem dám odkaz až to hodim na net.
SHAGY: nechtělo se mi dávat takovou blbost na domenu, ale udelám to.
Tech řádků je jen 100 :D a pulka jsou budoucí proměnné.
peta
Profil
"peta dik, ale to co pišeš, je z cesty."
Zajimave. Jenze, rozdil je v tom, ze tve na ceste nefunguje.
http://axpsu.fpf.slu.cz/~web/x/js-keyevent.htm

<style>
.border        {width:600px;height:400px;border:2px solid #f00; position:relative; left:50px; top:50px;}
.border #player {width:50px;height:50px;border:2px solid #00f; position:absolute;}
</style>

<body>

<div class="border"><div id="player"></div></div>

<script>
function eventy(event)
{
var
event = event || window.event,
key   = event.charCode || event.keyCode || event.which || null;
switch (key)
    {
    case 37:        // key left
        player.moveSet(180);
        break;
    case 38:        // key up
        player.moveSet(90);
        break;
    case 39:        // key right
        player.moveSet(0);
        break;
    case 40:        // key down
        player.moveSet(270);
        break;
    case 82:        // stop key
        player.stopDo();
        break;
    deafult: break;
//    deafult: return false; break;
    }
//return true;
}


function desetiny(n)
{
var m = Math.abs(n);
return m>n ? -Math.floor(m) : Math.floor(n);
}

function newPlayer(id)
{
    var that = this;
    this.speed = 10;
    this.angle = 0;
    this.x = 0;
    this.y = 0;
    this.w = 50;
    this.h = 50;
    this.moveSet = function(angle)
        {
        this.angle = angle;
        this.speedangle = {
            x:   desetiny(this.speed * Math.cos(this.angle * Math.PI / 180)),
            y: - desetiny(this.speed * Math.sin(this.angle * Math.PI / 180))
            };
        this.moveDo();
        };
    this.moveDo = function()
        {
        this.timerStop();
        var
        x  = this.x,
        y  = this.y;
        x += this.speedangle.x;
        y += this.speedangle.y;
        if (world.border[0]<=x && x<=world.border[2]-this.w && world.border[1]<=y && y<=world.border[3]-this.h)
            {
            this.x = x;
            this.y = y;
            this.show();
            this.timerStart();
            }
        };
    this.stopDo = function()
        {
        this.timerStop();
        };
    this.obj  = document.getElementById(id);
    this.show = function() {
        this.obj.style.left = this.x + 'px';
        this.obj.style.top  = this.y + 'px';
        };
    this.timer      = null;
    this.timerspeed = 100;
    this.timerStop  = function() {
        clearTimeout(this.timer);
        this.timer = null;
        };
    this.timerStart= function() {
        if (this.timer==null) {
            this.timer = window.setTimeout(function(){that.moveDo()},this.timerspeed);
            }
        };
    };

var world  = {
    border: [0,0,600,400]
    };
var player = new newPlayer('player');
document.onkeydown = eventy;

</script>
</body>

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: