O functie de timeout, de fapt. Ceea ce doresti tu e sa citesti intr-un interval limitat de timp(sa zicem cam 1 secunda) probabil caractere ce reprezinta tastele directionale, dar fara a astepta input. Daca apesi, bine, daca nu, iar bine.
Nu am eu timp sa testez acum, mai ales ca am Visual Studio ca IDE si o sa-mi fie mai dificil sa implementez eu solutia pe care am gasit-o.
http://stackoverflow.com/questions/7226603/timeout-function
Dar vezi ca e o implementare in C, nu C++. Ai grija cu bibliotecile(fisiere antet/header) incluse.
Functia aia SELECT face treaba bine. Daca o utilizezi atent in niste bucle FOR pe matrice + eventual un Sleep(delay/intarziere) de vreo secunda pentru efectul de "cadere" s-ar putea sa-ti iasa.
Succes! Sa ai rabdare, s-ar putea sa intampini ceva probleme.
Daca utilizezi Linux cu GCC, ar putea sa-ti mearga din prima exemplele de pe stackoverflow compilate imediat dupa copy-paste. Dar in Windows e putin mai cu schepsis, mai ales in Visual C++.
De ce nu poti sa dai si tu mai multe detalii? Ce vrei de fapt? Ai mai pus mai demult o intrebare despre nu stiu ce avioane, la fel de minimal descrisa.
Ce inseamna « E vorba de miscarea unei "piese" din caractere "in cadere"»?
Una e sa stii programare, alta e sa stii si programul.
Am o "manie" legta de jocurile rudimentare ce as putea sa le fac cu grafica din carctere.
Acum vreau sa fac jocul tetris. Pana acum am reusit sa fac sa cada piesele, fiecare miscare in jos la interval de o secunda.
Am nevoie de o functie care sa ma lase sa citesc de la tastatura, optional, o valaoare, pentru a realiza miscarea stanga-dreapta a piesei in cadere.
Cred ca am inteles...o sa revin cu o idee mai tarziu. Valoarea aia semnifica cate pozitii te deplasezi la stanga sau la dreapta, asa-i? Si valoarea asta trebuie citita continuu in timp ce in matrice un caracter/numar coboara pana la ultima linie(existand si optiunea de a recunoaste un caracter de pe tastatura care duce caracterul/obiectul direct pe ultima linie).
O sa vad mai tarziu(pana pe la 23:00-00:00) ce fac. Acum nu-s acasa. Scriu de pe telefon. Sincer, nu suna asa greu. Poate te descurci si singur pana ajung eu acasa.
Pentru intervalul de coborare mi-a dat cineva o functie, pe care am inteles-o oarecum. Sunt inca incepator.
Pentru prograam folosesc minGW. Am reusit pana acum sa fac caderea. De acum sa fac miscarea stanga dreapta, apoi rotirea si mutarea pe ultima linie disponibila. O sa vad ce mi-ai trimis si o sa ma descurc eu pana la urma.
Daca presupunem ca ai o matrice numai cu valori de 0, pentru coborare poti pur si simplu sa parcurgi matricea pe linii si sa atribui 1 la jumatate, dar parcurgerea pe linii o faci cu intarziere = Sleep(ex:1 secunda), atribuind elementului curent valoarea 1, iar elementului de pe linia precedenta valoarea 0, astfel obtii un efect de cadere, la fiecare noua afisare curatand ecranul. Eu asa as face, nu neaparat prin functii compuse. Iar tot undeva prin bucla asta as face ce ti-am zis aseara cu SELECT-ul(are parametru de timemout la citire). Bineinteles ca sunt mai multe moduri de a realiza asta...mie asa mi se pare mai usor.
Dar da, trebuie sa faci asta singur. Asa faci cel mai bine treaba si chiar intelegi ce faci. Succes! Iar daca cumva tot nu-ti iese, nu te da batut, cel putin poti abandona acest program, dar te poti apuca de altul la fel de interesant
Nu am de gand sa refuz. Efectul de cadere l-am realizat in 5 minute
A fost apoi mai greru cu randomizarea figurii care apare, dar mi-a iesit si asta.
As fi incercat varianta ta cu SELECT daca as fi stiut despre ce e vorba. Sunt in al doilea an la informatica si neintensiv.
Imi poti da un link unde sa invat sa folosesc SELECT-ul?
Pai asta am facut deja dandu-ti link catre stackoverflow. Doar ca ai de adaptat functia asta la ce faci tu. Oricum nu se invata asa ceva nici in liceu, nici in facultate(aici poate doar aproximativ).
anonim_4396 întreabă: