Computer Games Forum
 

Go Back   Computer Games Forum > Tech > The Workshop > Game Design

Notices

Căutare produse PC Garage: Şterge căutarea

Reply
 
LinkBack Thread Tools
Old 28-02-2004, 00:17   #1 (permalink)
Registered User
 
Join Date: Sep 2003
Location: Bucuresti
labirint

Buna.
Eu tin cursuri de calculatoare in gradinite si fiind si studenta la Informatica economica in ASE mi-am pus intrebarea oare cum se face un joc cu labirintul pe care il joc cu copiii. Labirintul arata ca in imaginea atasata. Copilul trebuie sa traseze o linie de la punctul verde la punctul rosu. Daca copilul incerca sa traseze drumul peste pereti se aude un sunet de avertizare. Cand labirintul e completat si se apasa pe punctul rosu se anima imaginea colorata (aici extraterestrul). Cum se face oare un asemenea joc? Cum stie programul ca jucatorul trece peste pereti? Ma intreb cum se codifica chestia asta.
Attached Thumbnails
Click image for larger version

Name:	lab1.jpg
Views:	153
Size:	130.8 KB
ID:	10573  
 
Iulia is offline    Reply With Quote
Old 28-02-2004, 01:18   #2 (permalink)
Registered User
 
Join Date: Nov 2001
Location: Bucharest, Romania
Ok, se poate face in mai multe feluri dar un mod simplu care este perfect adecvat cazului tau ar fi cu o masca de coliziune.
Deci ai desenul labirintului si mai ai o alta imagine, monocroma de exemplu, care contine alb unde se poate desena si negru unde este perete.
Iar testul se face destul de simplu: cand incerci sa desenezi un pixel verifici daca masca de coliziune iti permite (adica daca la pozitia respectiva in imaginea monocroma ai alb).
Testul se poate dezvolta si pentru o linie (analog cu un pixel se verifica toti pixelii ce compun linia).
 
c0mas is offline    Reply With Quote
Old 28-02-2004, 22:32   #3 (permalink)
Registered User
 
Join Date: Sep 2003
Location: Bucuresti
Question

E interesant ce-mi spui dar ai putea, te rog, sa-mi exemplifici cu un cod scurt (in C sau in alt limbaj). Nu mi-e clar cum identifici locul pixelilor ce compun linia ce urmeaza sa se traseze, aceasta putand fi mai groasa.
Eu m-am apucat deja sa fac un joc cu labirint in Flash si o sa-ti povestesc cum l-am gandit sa-mi spui daca tu vezi vreo solutie mai usoara.
 
Iulia is offline    Reply With Quote
Old 01-03-2004, 10:14   #4 (permalink)
Registered User
 
Join Date: Nov 2001
Location: Bucharest, Romania
Pai va trebui sa desenezi linia cu o functie facuta de tine (care sa deseneze pixelii care formeaza linia) si asa tu vei fi cea care decide care pixeli formeaza linia.

Eu la flash nu ma pricep ca sa-ti dau un exemplu, dar in C as putea sa fac un mic exemplu, dar va trebui sa-l integrezi tu in restul programului.
 
c0mas is offline    Reply With Quote
Old 01-03-2004, 22:44   #5 (permalink)
Registered User
 
Join Date: Sep 2003
Location: Bucuresti
Nu mai e nevoie de cod pt ca am inteles ce vroiai sa-mi spui. Merci pt idee.
Acum sa-ti arat cum arata labirintul la care lucrez eu. Nu te speria ca apar 1000 de porumbei. Asta e o faza intermediara si specifica flash-ului. E destul de nasol de gestionat un asemenea labirint in Flash. Am impartit labirintul in 50 de bucatele si in fiecare bucatica am pus cate un filmulet (care e mereu acelasi) cu porumbelul care poate sa se uite la stanga, la dreapta sau sa dispara. Facilitatile de programare ale Flash-ului sunt destul de limitate. Ma gandesc acum cum s-ar face in C. Probabil as avea o matrice ce ar codifica cele 50 de bucatele ale labirintului si anume ma gandesc ca as avea cate o coloana cu numarul bucatelei din stanga, dreapta, sus, jos (informatii pe care le am si in flash) pozitia porumbelului (stanga, dreapta), coordonatele. Ce e nasol in C e ca e mai greu sa scapi de patratul alb din spatele bitmapului. Nu cred ca e suficient sa folosesti un gif cu background transparent, nu? E destul de dificil si asa, mi se pare mie. Eu ca sa fac un asemenea joc in flash as sta cam 3 zile. In plus, porumbelul trebuie sa culeaga floricelele deci alta problema care nu stiu cum s-ar face in C. Tu cum crezi ca s-ar face jocul asta in C?
Merci ca ai avut rabdare sa citesti ditamai mesajul.
Attached Thumbnails
Click image for larger version

Name:	labirint.jpg
Views:	95
Size:	77.1 KB
ID:	10670  
 
Iulia is offline    Reply With Quote
Old 02-03-2004, 01:11   #6 (permalink)
Registered User
 
Join Date: Nov 2001
Location: Bucharest, Romania
Asa, sa vad daca inteleg bine, tu vrei ca jucatorul sa se plimbe prin labirint cu porumbelul si sa culeaga floricele, am inteles bine ?

In C (ma rog aici includ C, C++ si toate SDK-urile adiacente) ar fi mai multe solutii:
- sa ai o poza cu labirintul si o maska de colisiune (in care sa ai si informatii despre floricele sau alte itemuri pe care vrei sa le culeaga jucatorul). Cu metoda asta ar fi usor de desenat labirinturi noi dar ar fi mai greu de prelucrat inputul (pentru ca probabil vrei ca porumbelul sa stea exact la mijlocul drumului si mai e chestia cu alesul drumului la intersectii).
- o lata metoda ar fi sa ai o harta vectoriala, adica drumurile sa fie definite prin conexiuni intre anumite puncte. In felul asta scapi de problema cu mersul (pentru ca poti sa tii exact porumbelul pe linia dintre cele doua puncte dar e mai greu de definit harta si iti trebuie si functii care sa o deseneze). Ramane problema cu alegerea drumului la intersectii dar stii exact in fiecare intersectie ce drumuri poti alege.
- o alta solutie ar fi sa ai o matrice cu harta in care sa scrii la fiecare punct informatii despre ce contine labirintul in pozitia aia, dar mi se pare o solutie destul de inflexibila si demodata
 
c0mas is offline    Reply With Quote
Old 05-03-2004, 09:41   #7 (permalink)
Registered User
 
Join Date: Sep 2003
Location: Bucuresti
Thumbs up

Cea mai misto mi s-a parut varianta cu linia (varianta vectoriala). Merci pt idee.
Poti sa-mi spui si mie ce inseamna engine-ul unui joc? Am citit prin forum si habar n-am ceinseamna.
 
Iulia is offline    Reply With Quote
Old 05-03-2004, 12:17   #8 (permalink)
Registered User
 
Join Date: Nov 2001
Location: Bucharest, Romania
Enginul unui joc ... probabil ca sunt multe definitii si nu voi incerca sa dau una, dar voi incerca sa te ajut sa intelegi cat mai bine.

Enginul este acea parte din codul jocului care se ocupa de functii generale, care nu sunt legate de jocul respectiv. Deci enginul poate fi denumit o grupare de module care dau functionalitatea jocului respectiv, dar care nu au nici o legatura cu gameplay-ul. In general enginul unui joc este refolosibil si poate fi folosit la multe alte jocuri fara modificari.

De exemplu un engine contine un modul de render, unul de input, management de fisiere, network, tot felul de managere, si de la caz la caz module de collision, fizica, partitionare de spatiu, si asa mai departe.
 
c0mas is offline    Reply With Quote
Old 31-03-2004, 16:06   #9 (permalink)
Registered User
 
Join Date: Aug 2001
Location: Bucuresti
Cred ca cel mai bine ar fi sa adaptezi unul din tutorialele lui NeHe, in speta nr. 21
http://nehe.gamedev.net/lesson.asp?index=05
 
scarpelius is offline    Reply With Quote
Advertisment
Reply

  Computer Games Forum > Tech > The Workshop > Game Design

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump


All times are GMT +2. The time now is 18:13.


Advertisement System V2.5 By   Branden
This site is copyrighted ©1997 - 2008, Computer Games Online SRL