|
dev.gamez.lv Latvian Game Developers Community
|
View previous topic :: View next topic |
Author |
Message |
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Wed Aug 29, 2007 10:08 pm Post subject: |
|
oops.. aizmirsu par fclose...
bet man liekas, ka ar fscanf ir visvieglāk nolasīt skaitļus! nu varbūt arī c++'ā kautkas tik vienkāršs ir iespējams... nu tas laikam tāpēc, ka C tutoriālis pirmais pagadījās ceļā! _________________ "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: Wed Aug 29, 2007 10:23 pm Post subject: |
|
Vieglāk saki?
Code: | int i;
std::ifstream f("fails.txt");
f >> i; |
|
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Thu Aug 30, 2007 11:17 am Post subject: |
|
FILE* fails = fopen("fails.txt","r");
fscanf(fails,"%d%d%d%d",&i1,&i2,%i3,&i4);
Vieglāk saki? _________________ "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: Thu Aug 30, 2007 11:39 am Post subject: |
|
Code: | std::ifstream f("fails.txt");
f >> i1 >> i2 >> i3 >> i4; |
Tavs kods ir sliktāks, jo:
1) tev jāatceras aizvērt failu ar fclose. C++'ā fails pats aizvērsies ifstream destruktorā.
2) %d skaitam jāsakrīt ar argumentu skaitu - ja nokļūdīsies skaitā, piemēram vairāk %d uzrakstīsi nekā padosi mainīgos - potenciāls programmas krašs.
3) argumentiem un % tipiem jāsakrīt, tb ja uzrakstīsi %d, bet i1 tips būs floats - tad nepareizi tas tiks nolasīts. Vēl sliktāk, ja i1 būs čars, tb mazāk baiti atmiņā, nekā %d sagaida - arī potenciāls krašs.
Potenciāla kraša vietā tu vari dabūt arī steka atmiņas sabojāšanu, un programma var strādāt pilnīgi jocīgā veidā - tb mainīgajos var atrasties ne tādas vērtības kā tu sagaidi un debugošana arī var izvērsties visai "jautra".
Jo vairāk tev būs jāatcerās - jo vairāk iespēju nokļūdīties. C++ kodā gandrīz nekas nav jāatceras, tik >> operators jālieto. Kā arī - pamēģini manā koda piemērā dabūt krašu. Grūti būs :) |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Thu Aug 30, 2007 12:31 pm Post subject: |
|
ok, ok, pārliecināji
tie >> un << operatori ir bitu pārvietošanai? _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
EDDY
Joined: 07 Oct 2005 Posts: 1610 Location: Dzimtā zeme, Latvija
|
Posted: Thu Aug 30, 2007 12:37 pm Post subject: |
|
Ko mēs, bubu, bez tevis darītu?
Tavs variants ir vienkārši ģeniāls.
Pats visu laiku lietoju snake5 variantu un vienmēr bija iespēja sajaukt float ar integer.
No tevis sanāktu perfekts pasniedzējs kādā universitātē.
Varbūt laiks rakstīt grāmatu? _________________ Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Thu Aug 30, 2007 12:49 pm Post subject: |
|
snake5 wrote: | tie >> un << operatori ir bitu pārvietošanai? |
Integral tipiem (int, char, long) - jā, bitu pārvietošanai.
Bet C++'ā eksistē tāda lieta kā operatoru pārdefinēšana. T.i tu savai klasei vari uzdefinēt, ko darīs operators +. Piemēram, 2D vektoram:
Code: | struct Vector2D
{
float x, y;
Vector2D(const float x, const float y) : x(x), y(y) {}
};
Vector2D operator + (const Vector2D& a, const Vector 2D& b)
{
return Vector2D(a.x + b.x, a.y + b.y);
} |
Šāds kods tev atļaus rakstīt sekojoši:
Code: | Vector2D v1(1, 2);
Vector2D v2(3, 5);
Vector2D v3 = v1 + v2; |
Rezultātā v3 vektors būs (4, 7);
Līdzīgi ir arī ar standarta stream klasēm C++'ā. Tām ir pārdefinēts >> un << operators, kurš lasa un raksta failā.
Protams, nevajag aizrauties ar operatoru pārdefinēšanu, un teiksim uzdefinēt operatoru %, kurš atņems divus vektorus ;)
EDDY wrote: | Tavs variants ir vienkārši ģeniāls. |
Kas tur ģeniāls? Visprimitīvākā std:: strīmu izmantošana. Katrā normālā C++ manuālī var izlasīt par to izmantošanu.
Quote: | Varbūt laiks rakstīt grāmatu? |
Nav vērts. Par C++ pamatiem jau simtiem grāmatu sarakstītas. Lieki veidot kārtējo "divriteni". |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Thu Aug 30, 2007 1:22 pm Post subject: |
|
jap, par funkciju/operatoru overloading'u jau esmu lasījis.. noderīga lieta - it īpaši ar 2d/3d grafiku saistītās lietās noderīgi, piemēram, kā tajā 2d vektorā, par kuru te tikko rakstīji! ā, un, es jau kādu laiku domāju par virziena atrašanu no 2 punktiem.. nezini, kā to var izdarīt? tas būtu ļoti noderīgi! _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Thu Aug 30, 2007 1:24 pm Post subject: |
|
EDDY wrote: | Ko mēs, bubu, bez tevis darītu?
Tavs variants ir vienkārši ģeniāls.
Pats visu laiku lietoju snake5 variantu un vienmēr bija iespēja sajaukt float ar integer.
No tevis sanāktu perfekts pasniedzējs kādā universitātē.
Varbūt laiks rakstīt grāmatu? |
un, btw, tie nav mans un viņa varianti, bet tie ir C("mans") un C++("viņa") varianti faila nolasīšanai! _________________ "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
|
|
Back to top |
|
|
DeRatizators
Joined: 27 Apr 2006 Posts: 492
|
Posted: Thu Aug 30, 2007 4:59 pm Post subject: |
|
snake5 wrote: | ā, un, es jau kādu laiku domāju par virziena atrašanu no 2 punktiem.. nezini, kā to var izdarīt? tas būtu ļoti noderīgi! |
Mjā pērles labu-labās.
Te jau bubu visiem iebaro zināšanas ar karotīi, respekt.
Offtops, bet vai pašu bubu nemāc skepse par šāda veida palīdzību ?
WTF, jaunā paaudze ? Ibio ! _________________ Any PANCAKE has to be long and thin and short and fat. Not to mention being an excellent insulator and a superb conductor. |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Thu Aug 30, 2007 5:32 pm Post subject: |
|
NU KAS IR? es pats biju meklējis, bet īsti nezināju, ar ko sākt, jo uz gamemakera šāda funkcija bija jau defaultā! ja esi baigais pro, tad nevajag tā lekties uz cilvēkiem, kuri vēlas mācīties! un savus sīkos burtus vari likt mierā, jo kopā likti viņi neko labu nedod!
bubu - paldies atkal, tev vienmēr izdodas atrast to, ko tev vajag... _________________ "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: Thu Aug 30, 2007 5:51 pm Post subject: |
|
Piedod un atvaino, snake5, bet es galīgi neredzu, ka tu gribi mācīties.
Par šo pašu tavu jautājumu - "leņķis starp diviem punktiem". Vai tad tas tiešām ir tik ļoti neiespējami pārtulkot šo pašu tekstu kaut vai nepareizā angļu valodā, un kaut vai vārdnīcu rokās paņemot - "angle two points". Un ierakstīt to gūglē - http://www.google.com/search?q=angle+two+points un paskatīties pirmo/otro/trešo lappusi? Tajās ir vairāki linki, kuros ir atbilde.
Labāk zinot/protot angļu valodu/matemātiku, savu jautājumu var noprecizēt sīkāk un gūgle atbildi dos jau pirmajos trīs linkos: http://www.google.com/search?q=angle+between+vectors
Mūsdienās tak gūglei un citiem meklētājiem (forumiem, wiki, utt) ir tik liels spēks, bet neredzu kā iesācēji tos izmantotu... Muļķīgi jau teikt (jo nav nekādas jēgas) - bet, kad es mācījos programmēt, par gūgles lietošanu nebija nekādas runas (tās vienkārši vēl nebija) un pat internetam pieeja man bija liels retums. Nācās lasīt daudz un dikti grāmatas un manuāļus, līdz sapratu vai izdomāju risinājumu saviem jautājumiem. Tāpēc galīgi neizprotu tos, kas paši nemeklē un tik gaida, ka visu priekšā iebaros. |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Thu Aug 30, 2007 6:54 pm Post subject: |
|
no sākuma es domāju, ka lenķi var no viena vektora izveidot, un nezinot tāda līmeņa matemātiku arī šādi ierakstīju... pavisam nedomāju, ka starp 2 punktiem var dabūt leņķi, kautgan tik un tā piemēros bija redzams, ka vispirms tur izvelk vektoru no tiem 2 punktiem!
btw - kāpēc izdzēsi trešo linku? es gan paspēju izmantot, bet tomēr...
un, tiešām, tā nav ne puse no maniem googles meklējumiem, kurus es nāku prasīt šeit... pirms apmēram 7 gadiem mani neinteresēja neviens links no forumiem googlē... pašlaik man forumi ir starp svarīgākajām lietām, ko vien var dabūt googlē! kautgan pēdējā laikā man ir sanācis tā, ka es pašu svarīgāko un retāko problēmu risinājumus neatrodu ne googlē, ne forumos - vienkārši esmu pirmais, ar kuru tā notiek... stulbi... jo nezinu, pat ar ko sākt, ko pārbaudīt, ko mēģināt... _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
Kamazs Guru
Joined: 17 Jan 2003 Posts: 829 Location: The glorious ancient city of Loja
|
Posted: Thu Aug 30, 2007 7:04 pm Post subject: |
|
Atrast leņķi no diviem punktiem...lai to izdarītu nevajag pat gūglē skatīties. Uzzīmē uz tiem diviem punktiem taisnleņķa trijstūri un paskaties, kur tam ir katetes, kur hipotenūza, kur vajadzīgais leņķis. Un tad izsaki leņķi ar vienkāršām trigonometriskām funkcijām -- pretkatete, pret piekateti būs tangenss. Arc-tangenss no tangensa (ko tu iegūsi vienkaarshi izdalot kateshu garumus) dos tev lenjkji.
Taisniibas labad gan, jaapiebilst, ka speelju programmeeshanaa neizmanto tieshi arctg (atan() ) funkciju, jo tā ir asimptotiska, ar singularitāti, tb, ja piekatete ir 0 (to var viegli pamanīt aplūkojot funkcijas grafiku), tad, saprotams ka izdalīt nevar. Tomēr ir ļoti noderīga funkcija atan2, kas šo problēmu risina.
Anyways, mans mērķis bija aicināt ik pa laikam atcerēties par matemātiku un ģeometriju -- esmu brīžiem vienkārši šokēts, cik ļoti noderīgas ir visprastākās pamatskolas/vidusskolas matemātikas zināšanas spēļu izstrādē. Tas, ko jums māca/mācīja skolās nav bullšits, bet šausmīgi praktiska un noderīga informācija.
Hail to school! _________________ ...un es uzskatu, ka Fallout ir etalons |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|