View previous topic :: View next topic |
Author |
Message |
Valdo
Joined: 01 Nov 2006 Posts: 23
|
Posted: Sat Aug 25, 2007 5:04 pm Post subject: sdl button |
|
Es programmeeju 2d speeli c++ ar SDL,, man vaidzētu lai uz ekrāna buutu button kuru nospiezot kaut kas notiktu.
Esmu iesācējs, buusu loti pateiciigs ja kaads vareetu man paliidzeet. |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Sat Aug 25, 2007 5:31 pm Post subject: |
|
Lieliski, ka programmē spēli. Bet kur ir jautājums? |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Sat Aug 25, 2007 5:34 pm Post subject: |
|
viņam laikam vajag parastu "button" _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
Valdo
Joined: 01 Nov 2006 Posts: 23
|
Posted: Sat Aug 25, 2007 5:58 pm Post subject: |
|
ok sorry ka manaa tekstaa nebij nevienas jautaajumziimes,,,
Vai kāds lūdzu nevarētu man pateikt kā lai es iepriekš minētajā situācijā, savaa spēlē varētu dabuut button? |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Sat Aug 25, 2007 6:23 pm Post subject: |
|
Ne jau tas, ka tur nebija jautājuma zīmes, bet gan tas, ka tur nebija neviena jautājuma teikuma, ir svarīgi :)
Katrā ziņā, tavu buttonu vajag:
1) uzzīmēt,
2) noteikt vai tas ir nospiests.
Par 1) punktu - ja izmanto parastas SDL_Surface bildes zīmējot dažādus attēlus SDL logā, tad jau uzzīmēt buttona bildi ir vienkārši: vajag izmantot SDL_BlitSurface funkciju.
Par 2) punktu - vēl vienkaršāk: buttonam ir koordināte (pieņemšu, ka kreisais-augšējais stūris) x,y un izmēri width (platums), height (augstums). Savukārt pelei ir tās koordinātes logā - mx,my - un tās pogu stāvoklis (piemēram bool flags left_button_down). Atliek pābaudīt vai:
a) pele ir uz buttona
b) kreisā peles poga ir nospiesta.
Rezultātā nonākam pie sekojoša koda fragmenta:
Code: | if (mx >= x && my >= y && mx < x+width && my < y+height && left_button_dowwn == true)
{
// poga ir nospiesta
}
else
{
// poga nav nospiesta
} |
|
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Sat Aug 25, 2007 7:26 pm Post subject: |
|
ja vajag "mūsdienīgāku" button'u, tad jāmaina tekstūra, kuru liek uz button'a attiecīgi pēc peles pozīcijas un kreisās pogas
if (mouse_in == true)
{
tex = b_tex[0];
}
if (mouse_in == false)
{
tex = b_tex[1];
}
if (left_button_down == true)
{
tex = b_tex[2];
}
tā... _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Sat Aug 25, 2007 8:09 pm Post subject: |
|
Nu iespējas izvirst ir bezgalīgas. Taču nedomāju, ka topika autors domā par kautkādu tur mouse_in/out, ja jau tiek vaicāts kā vispār dabūt tādu buttonu. |
|
Back to top |
|
|
Storm
Joined: 11 Apr 2006 Posts: 742
|
Posted: Sat Aug 25, 2007 10:07 pm Post subject: |
|
Uztaisi pa visu ekraanu vienu lielu bildi (kraasu karte? ) kur katra poga savaa kraasaa, peec tam peec peles klikskja dabuu rokaa pikselja kraasu vietaa kur noklikinaaji. Peec tam vienaa switch (case) skaties kaadaa kraasaa bija pikselis(taatad uz kuras pogas esi nospiedis) un izdari attieciigo pogas darbiibu. Protams to bildi nav jaaziimee xD Pie tam izveido sisteemu, kas no tavaam defineetajaam pogaam izveido to sauksim "kraasu karti" Nu un, protams, pasa pogas bilde arii jaaziimee Izveido vairaakas taas "kartes" un attieciigaa gadiiumaa izmato konkreeto karti - nu piemeeram viena buus speelees gaitaa, bet cita piem "galvenajaa izveelne" utt. Es gan par sdl neko nezinu :lol:
Es taa padomaaju un secinaaju, ka Tu labaak pilniigi noteikti lieto bubu variantu |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Sat Aug 25, 2007 10:54 pm Post subject: |
|
protams, vismaz 4 stāvokļi button'am ir vienkārši izveidojami (mouse over - leave) + (left_mousebutton pressed - not), vēl klāt nāk "atslēgtais" stāvoklis - kad nevar nospiest, u.t.t. mūsdienās, lai lietotājs acumirklī saprastu, kas ar button'u noticis, vajadzētu vismaz 2 stāvokļus ar savu tekstūru... bet to tad, kad bubu varianta button's būs pabeigts _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Sat Aug 25, 2007 11:11 pm Post subject: |
|
Storm: kāpēc tu tik ļoti gribi sarežģīt vienkāršas lietas? Es vēl saprastu, ja noteikt pogu, uz kuras ir noticis klikšķis, ir sarežģīts vai dārgs process (piemēram 3D telpā, kad vajadzētu rēķināt inverso projekcijas matricu). Taču 2D interfeisā tas ir elementārs Point-in-Rectangle tests. Labs un ātrs gan no aizņemtās atmiņas vietas daudzuma, gan arī CPU kešatmiņai draudzīgs. |
|
Back to top |
|
|
Storm
Joined: 11 Apr 2006 Posts: 742
|
Posted: Sat Aug 25, 2007 11:50 pm Post subject: |
|
bubu, es vienkaarsi biju mazliet iecikleejies uz nenoteiktas formas pogaam |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Sun Aug 26, 2007 9:25 am Post subject: |
|
man vnk nav ko teikt...
autoram: iesaku izveidot boundingbox'u sistēmu jau uzreiz! pēctam varētu bieži noderēt! _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Sun Aug 26, 2007 11:54 am Post subject: |
|
snake5 wrote: | man vnk nav ko teikt... :D |
Tu nonāc pretrunā ar sevi, jo tomēr atradi kaut ko, ko pateikt. |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Sun Aug 26, 2007 2:44 pm Post subject: |
|
hahaa mūsdienu loģika... bet ja nu es teiktu, ka man no sākuma nebija, ko teikt, un tikai pēc tam es izdomāju, ka varu pateikt, ka man nav ko teikt!
bet pietiks offtopikā slīdēt iekšā... _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
Valdo
Joined: 01 Nov 2006 Posts: 23
|
Posted: Mon Aug 27, 2007 10:38 am Post subject: |
|
Paldies buba,, poga darbojas,, vienīgais ir taa, ka piemēram, ja ir nospiests peles kreisais taustins, un peles kursors tiek uzbīdīts uz pogas tad button skaitās nospiesta,, vai kāds varētu pateikt, kā var dabūt to, ka button ir nospiests tikai tad, ja peles taustina nospiešanas brīdī pele kursors atrodas uz pogas? |
|
Back to top |
|
|
|