dev.gamez.lv Forum Index dev.gamez.lv
Latvian Game Developers Community
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups 

need tutorialz
Goto page Previous  1, 2, 3, 4, 5, 6  Next
 
dev.gamez.lv Forum Index -> Iesācējiem
View previous topic :: View next topic  
Author Message
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: 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
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: 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
View user's profile Send e-mail
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: 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
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: 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
View user's profile Send e-mail
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Thu Aug 30, 2007 12:31 pm    Post subject:

ok, ok, pārliecināji Smile
tie >> un << operatori ir bitu pārvietošanai?
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
EDDY



Joined: 07 Oct 2005
Posts: 1610
Location: Dzimtā zeme, Latvija

PostPosted: 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? Wink
_________________
Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: 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
View user's profile Send e-mail
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: 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
View user's profile Visit poster's website
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: 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? Wink

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
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Thu Aug 30, 2007 2:06 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!

http://www.cplusplus.com/reference/clibrary/cmath/atan2.html
http://en.wikipedia.org/wiki/Atan2


Last edited by bubu on Thu Aug 30, 2007 5:26 pm; edited 1 time in total
Back to top
View user's profile Send e-mail
DeRatizators



Joined: 27 Apr 2006
Posts: 492

PostPosted: 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. Cool
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
View user's profile
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: 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! Cool 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... Smile
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: 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
View user's profile Send e-mail
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: 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
View user's profile Visit poster's website
Kamazs
Guru
Guru


Joined: 17 Jan 2003
Posts: 829
Location: The glorious ancient city of Loja

PostPosted: 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
View user's profile Send e-mail Visit poster's website
Display posts from previous:   
dev.gamez.lv Forum Index -> Iesācējiem All times are GMT + 2 Hours
Goto page Previous  1, 2, 3, 4, 5, 6  Next
Page 5 of 6

 
Jump to:  
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