Kezdőoldal » Számítástechnika » Programozás » Hol lehet a hiba?

Hol lehet a hiba?

Figyelt kérdés

elkezdtem ismerkedni a processing nyelvvel.


a programomnak azt kéne csinálnia, hogy megjelenik egy ablak, ami a jobb felső sarokban számolja az eltelt másodperceket. amikor kattintok 5 mp-ig pirosnak kéne lennie a képernyőnek (mp számláló nélkül), ezután számláló lenulláz és minden mehet elölről.


a problémám, hogy nem 5 mp-ig piros, hanem csak a kattintás utáni 5. mp utolsó pillanata.


a kód:


int m;

int start;


void setup(){

size(750,750);

start = millis();

}


void draw(){

m = (millis()-start)/1000;

background(135);

fill(255);

textSize(16);

text(m,700,15);

}


void mousePressed(){

start = millis();

m = (millis()-start)/1000;

while(m<5){

m = (millis()-start)/1000;

background(255,0,0);

}

start = millis();

}



2016. febr. 20. 19:48
1 2
 1/14 anonim ***** válasza:

A draw() milyen gyakran fut le?


"start = millis();

m = (millis()-start)/1000;"

Itt az m mindig 0 lesz, fölösleges számolgatás.


"while(m<5){

m = (millis()-start)/1000;

background(255,0,0);

}"


Ez meg pokoli sokszor lefut, teljesen fölöslegesen.

Egyszer kéne pirosra színezni és addig blokkolni a draw()-t valahogy.

2016. febr. 20. 20:47
Hasznos számodra ez a válasz?
 2/14 A kérdező kommentje:

"start = millis();

m = (millis()-start)/1000;"


bármikor hívod meg a millis() függvényt, a program indulásától számított időt adja vissza, tehát pl. ha 3 mp-nél kattintok, a start 3000 lesz, a progi fut tovább, az inditástól számított 6. mp-nél az m =(6000-3000)/1000, ami 3.



"while(m<5){

m = (millis()-start)/1000;

background(255,0,0);

}"


fogalmam sincs, hogy hogy lehetne blokkolni a draw()-t. ha te tudod vagy [link] itt találsz valami wait-hez hasonló dolgot, akkor azt megköszönöm, mert az is nagy segítség lenne.

2016. febr. 20. 21:26
 3/14 A kérdező kommentje:

egyébként nem tudom, hogy ilyenkor mi van, de ha valamennyire kiviszem a képernyőről az ablakot, amiben fut, miután kattintottam, akkor piros lesz és ha letelt a kattintástól számított 5 mp, akkor megy tovább ahogy kéne, csak minden kattintás után ezt kéne játszani.


:D :D: D


???

2016. febr. 20. 21:35
 4/14 anonim ***** válasza:

"bármikor hívod meg a millis() függvényt, a program indulásától számított időt adja vissza, tehát pl. ha 3 mp-nél kattintok, a start 3000 lesz, a progi fut tovább, az inditástól számított 6. mp-nél az m =(6000-3000)/1000, ami 3."


Akkor egy kis mateklecke:

"start = millis();

m = (millis()-start)/1000;"

m = (millis() - millis()) / 1000;

m = (0) / 1000;

m = 0;


"fogalmam sincs, hogy hogy lehetne blokkolni a draw()-t. ha te tudod vagy [link] itt találsz valami wait-hez hasonló dolgot, akkor azt megköszönöm, mert az is nagy segítség lenne."


1 másodperc volt megtalálni.


[link] draw_.html


"Called directly after setup(), the draw() function continuously executes the lines of code contained inside its block until the program is stopped or noLoop() is called. draw() is called automatically and should never be called explicitly."

2016. febr. 20. 21:35
Hasznos számodra ez a válasz?
 5/14 A kérdező kommentje:

a setup-on belüli start = millis(); az mindig 0. a mousPressed viszont csak akkor lesz meghívva ha kattintok, ott pedig a start új értéket kap, mégpedig az indulástól a kattintásig eltelt ezredmásodpercek számát.


egyébként köszi a segítséget mindjárt nézem is, hogy működik-e. :)

2016. febr. 20. 21:42
 6/14 anonim ***** válasza:

"a setup-on belüli start = millis(); az mindig 0. a mousPressed viszont csak akkor lesz meghívva ha kattintok, ott pedig a start új értéket kap, mégpedig az indulástól a kattintásig eltelt ezredmásodpercek számát."

Ezt értem, de ettől az m még mindig 0 lesz. :D

2016. febr. 20. 22:04
Hasznos számodra ez a válasz?
 7/14 A kérdező kommentje:
szerintem gondold át. :)
2016. febr. 20. 22:31
 8/14 A kérdező kommentje:

"void mousePressed(){

start = millis();

m = (millis()-start)/1000;

..."


ja, hogy erre gondolsz. :D az nem véletlenül lesz mindig 0.

2016. febr. 20. 22:34
 9/14 A kérdező kommentje:
de amúgy igazad van a m = (millis()-start)/1000; helyett jobb lenne az m = 0;
2016. febr. 20. 22:35
 10/14 A kérdező kommentje:
amúgy lol! ha a background-ot kirakom a while ciklus elé, akkor az egyszerűbb, mint a noLoop-loop-redraw-al szórakozni. :D egyébként sehogy se jó. :(
2016. febr. 20. 23:08
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!