Aviseringar
Rensa alla

Hjälp med javascript


Ämnesstartare

Hej jag har för några dagar sedan börjat jobba lite själv med javascript, lite med enkel grafik och animationer, mm. Så jag tänkte att om jag behöver hjälp med något så kan jag skriva här.
Jag har gjort den här koden:
var g = {x: 200,y: 200}
function update()
{
fill("white");
picture(g.x, g.y, " http://res.freestockphotos.biz/pictures/12/12104-illustration... ", 150, 120)
picture(mouse.x, mouse.y, " http://www.arijitbhattacharyya.com/wp-content/uploads/2013/08... ", 250, 250)
if (keyboard.w)
(g.y -= 7);
if (keyboard.s)
(g.y += 7);
if (keyboard.a)
(g.x -= 7);
if (keyboard.d)
(g.x += 7);
var gmitt = {x: g.x -= 70, y: g.y -= 90}
var d = distance(gmitt.x, gmitt.y, mouse.x, mouse.y)
if (d < 10)
{
stopUpdate();
showMouse();
alert("Game over!");
}
}
Vad är det som inte funkar? borde inte gmitt vara i mitten av spöket?
Och hur gör man så att det spawnas figurer random, inom ett angett område?


   
Citera

Vad är problemet? Är inte på dator så kan inte testa koden själv. 

För random kan du ju använda math.random(), som ger ett slumpmässigt tal mellan 0 och 1. 

Ska de dyka plats på ett slumpmässigt ställe och/eller vid en slumpmässig tidpunkt?

Om det första kan du ju slumpa fram koordinater med nåt i den här stilen:
function randCoords(min, max){
return math.floor(min + math.random() * (max - min));
}

Om det sistnämnda kan du ha en loop som körs konstant med viss delay, t.ex. borde nåt sånt här ge 10% sannolikhet för spawn varje sekund:

function loop(){
if (math.random() <= 0.1)
{
spawnStuff();
}
}

setInterval('loop', 1000);


   
SvaraCitera

var gmitt = {x: g.x -= 70, y: g.y -= 90}

Då du använder "g.x -= 70" minskar du ju värdet på g.x med 70 samtidigt som du räknar ut gmitt.x. Testa bara "-" istället för "-=". 


   
SvaraCitera

Om det nu var det som var problemet. 


   
SvaraCitera

Sen är ju hälften av 150 = 75 och hälften av 120 = 60 (verkar som om bilden är 150*120 och du subtraherar med 70 i x-led och 90 i y-led?). 


   
SvaraCitera

Saknas dessutom semikolon:

var gmitt = {x: g.x -= 70, y: g.y -= 90}
var d = distance(gmitt.x, gmitt.y, mouse.x, mouse.y)


   
SvaraCitera

Saknas även semikolon längre upp i koden


   
SvaraCitera

Om koden inte körs alls kan man ju få fram felmeddelanden dels med try catch och dels genom att kolla i konsolen (på Chrome får man upp den genom att trycka F12 och sen Konsol). 


   
SvaraCitera
Ämnesstartare

Ruttenfisk:
Vad är problemet? Är inte på dator så kan inte testa koden själv. 

För random kan du ju använda math.random(), som ger ett slumpmässigt tal mellan 0 och 1. 

Ska de dyka plats på ett slumpmässigt ställe och/eller vid en slumpmässig tidpunkt?

Om det första kan du ju slumpa fram koordinater med nåt i den här stilen:
function randCoords(min, max){
return math.floor(min + math.random() * (max - min));
}

Om det sistnämnda kan du ha en loop som körs konstant med viss delay, t.ex. borde nåt sånt här ge 10% sannolikhet för spawn varje sekund:

function loop(){
if (math.random() <= 0.1)
{
spawnStuff();
}
}

setInterval('loop', 1000);

Fattar det mesta, men är som sagt väldigt ny och självlärd "programmerare". Måste träna nån månad mer.

Jag hade tänkt slumpmässigt ställe vid slumpmässig tid innom ca 5 sek.

Ruttenfisk:

Om det sistnämnda kan du ha en loop som körs konstant med viss delay, t.ex. borde nåt sånt här ge 10% sannolikhet för spawn varje sekund:

function loop(){
if (math.random() <= 0.1)
{
spawnStuff();
}
}

setInterval('loop', 1000);

Testar det imorn.   Förrästen, en enkel fråga, vad heter musens vänstra knapp? (keyboard.left)?

Så kör jag en;

var d = distance(gmitt, mouse)

if (keyboard.left)
{
when(d < 10)
{
stopUpdate(""vad ska stå här??"")
}
}


   
SvaraCitera
Ämnesstartare

Ruttenfisk:
Sen är ju hälften av 150 = 75 och hälften av 120 = 60 (verkar som om bilden är 150*120 och du subtraherar med 70 i x-led och 90 i y-led?). 

Tänkte inte på det, bara testade mig fram...


   
SvaraCitera
Ämnesstartare

Ruttenfisk:
Saknas även semikolon längre upp i koden

Semikolon är inte nödvändigt i javascript, när den funkade, så funkade den utsn också. Men det är en dålig vana jag har att glömma det. Började inte för så länge sen.


   
SvaraCitera

Använder du nåt library? Musen lär hursomhelst inte höra till keyboard, utan man får kolla om musknappen är nere på annat sätt. 

Om du vill slumpa fram någonting inom fem sekunder vore det lättaste imo att slumpa tiden:

setTimeout(function(){
// Din kod här
}, math.floor(math.random()*5000));


   
SvaraCitera

applekakanshaj2:

Semikolon är inte nödvändigt i javascript, när den funkade, så funkade den utsn också. Men det är en dålig vana jag har att glömma det. Började inte för så länge sen.

Inte? Var iofs väldigt länge sen jag höll på med språket. Är mer van vid PHP eller Lua, och i PHP måste man alltid använda medan man i Lua aldrig använder. 


   
SvaraCitera
Ämnesstartare

Ruttenfisk:

Inte? Var iofs väldigt länge sen jag höll på med språket. Är mer van vid PHP eller Lua, och i PHP måste man alltid använda medan man i Lua aldrig använder. 

Ja precis, trodde också det var så, men det behövs inte. Men går. Det är ju ett ganska enkelt programmeringsspråk.


   
SvaraCitera

applekakanshaj2:

Ja precis, trodde också det var så, men det behövs inte. Men går. Det är ju ett ganska enkelt programmeringsspråk.

Hehe ju mer man vet desto mindre vet man. Säg det där igen när du börjar mecka med prototypiska arv och andra spännande konstigheter med språket 🙂


   
SvaraCitera