User Tag List

Էջ 1 3-ից 123 ՎերջինըՎերջինը
Ցույց են տրվում 1 համարից մինչև 15 համարի արդյունքները՝ ընդհանուր 38 հատից

Թեմա: Խաղի ծրագրավորում Directx-ով , C++ լեզվի օգնությամբ

  1. #1
    Սկսնակ անդամ Zte77-ի ավատար
    Գրանցման ամսաթիվ
    29.09.2009
    Գրառումներ
    15
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Խաղի ծրագրավորում Directx-ով , C++ լեզվի օգնությամբ

    Մենք կանցնենք այս թեմաները.
    1. Windows-ի ծրագրավորման հիմունքեր.
    2. Directx 9.
    3. Direct3D-ի ինիցիալիզացիան.
    4. Նկարում ենք 2D- օբեկտ.
    5. Մատրիցաներ.
    6. Էկրանի վրա 3D- օբեկտի դուրս բերում.
    7. Խորը բուֆֆեր կամ Z- բուֆֆեր.
    8. Լույս և նյութեր.
    9. Տեքտը Direct3D- ում.
    10. Նյութերի տեղադրում.
    11. Մուլտի նյութերի տեղադրում.
    12. X- ֆայլի բեռնավորում.
    13. DirectInput-ի ինիցիալիզացիա.
    14. Աշխատանք ստեղնաշարի հետ.
    15. Մկնիկ.

    Առաջինը պտի իմանաք C++ հետո անցեք Directx-ին.Օրինակ կարող եք ձեր մոտ քաշել այս գիրքը հաերեն լեզվով C++ մասին http://ifolder.ru/14227612



    Ամբողջը սկսվում է WinMain ( ) –ից

    Բոլոր Windows- ի ծրագրերը սկսում են կատարվել WinMain ( ) ֆունկցիաից:
    Բոլորը, ինչ ել ուզում եք կատարել ձեր ծրագրում, կատարվում է Winmain ( )- ում:
    Ստեղծվում է պատուհան, կատարվում իրադարձությունների մշակում և դուրս բերում էկրանի վրա:
    Հիմա ես ուզում եմ գրել մի ծրագիր որը դուրս կբերի փոքր պատուհանում մեր հաղորդագրությունը.



    Պրոեկտի ստեղծում
    C++ 6 ում մտեք File -> New և մտեկ Projects վկլադկաի վրա և ընտրեք Win32 Application.Project name- ում մուտքագրեք ձեր պրոեկտի անունը և Location-ում ընտրեք ֆայլերի պահպանման տեղը.Սխմեք OK և ոչ մի բան չփոխելով սխմեք FINISH, և OK.Նոր մենք ստեծեցինք մեր պրոեկտը.
    Իսկ հիմա մենք պետկ է ստեղծենկ ֆայլ վորի մեջ մենք կգրենք մեր ծրագիրը.
    Մտեք File -> New և Files վկլադկաի մեջ ընտրեք C++ Source File, File name –ում գրեք ձեր ֆայլի անունը և սխմեք ՕK, եվ էկրանի վրա դուրս կբերի սպիտակ տերթ որի մեջ մենք կգրենք մեր ծրագիրը. Մանրամասն կարող եք նաել վերը նշված գրքում.

    C++ 2005 կամ C++ 2008- ում մտեք File -> New Project ձախ կողմում ընտրեք win32 և աջ կողմում Win32 Project name – մեջ ընտրեք պրոեկտի անունե և Location-ում ձեր պրոեկտի տեղը և սխմեք OK -> Next և սխմեք Empty Project -> Finish.Նոր մենք ստեղծեցինք մեր պրոեկտը մնացելը ստեղծել ֆայլը. Ձախ կողմում աջ կլիկով սխմեք Source Files պապկաի վրա և սխմեք Add -> New Item.Ձախ կողմում սխմեք Code- ի վրա և աջ կողմում սխմեք C++ File ( .cpp ), name-ի մեջ գրեք ձեր ֆայլի անունը և սխմեք OK.Մանրամասն կարող եք նաել վերը նշված գրքում.



    Մուտքագրեք այս ծրագիրը.



    #include <windows.h>

    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    LPSTR lpCmdLine, int nCmdShow)
    {
    MessageBox(NULL, "Hello, Win32 world!", "Hello from Message Box", MB_OK);
    return 0;
    }

    Ծրագիրը կարող եք քաշել այստեղից http://ifolder.ru/14237622


    Պրոեկտի կոմպիլացիա
    C++ 6 Եթե ծրագիրե պատրաստը, և ուզում ենք այն աշխատեցնել ապա մենյուից ընտրեք Builde ցանկը և բացվաց ցուցակից ընտրել Compile ( մեր ֆայլի անունը ).
    Եվ ընտրեք Builde ցանկը և բացվաց ցուցակից ընտրել ! execute ( մեր ֆայլի
    անունը ). Եթե ծրագրում սխալներ չկան, ապա այն աշխատացնելուց հետո
    կտեսնենք փոքր պատուհան վորի մեջ գրված կլինի մեր հաղորդագրությունը.
    Մանրամասն կարող եք նաել վերը նշված գրքում

    C++ 2005 կամ C++ 2008 մենք պտի նաստրոյկեկի մեջ մի բան փոխենք որ սխալ չտա և ըտենց մենուի մեյ ընտրեք Project -> (մեր ֆայլի անունը ) Properties…, բացեք Configuration Properties -> General և աջ կողմում Character Set – մեջ Use Unicode Character Set սխմելով վրեն փոխեք Not set- ի վրա և սխմեք OK:
    Եթե ծրագիրե պատրաստը, և ուզում ենք այն աշխատեցնել
    ապա մենյուից ընտրեք Builde ցանկը և բացվաց ցուցակից ընտրել Builde Solution .
    Եվ ընտրեք Debuge ցանկը և բացվաց ցուցակից ընտրել Start Without Debugging. Եթե ծրագրում սխալներ չկան, ապա այն աշխատացնելուց հետո
    կտեսնենք փոքր պատուհան վորի մեջ գրված կլինի մեր հաղորդագրությունը.
    Մանրամասն կարող եք նաել վերը նշված գրքում




    Ծրագրի պարզաբանում

    Առաջին տողում գտնվում է

    #include <windows.h>

    Այս դիրեկտիվան ծրագրին միացնում է Windows-ի գլխավոր ֆայլի վերնագիրը(ավելի մանրամասն կարող եք իմանալ վերը նշվաց գրքից ).

    Հետո գալիս է WinMain ( ) ֆունկցիաի վերնագիրը

    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    LPSTR lpCmdLine, int nCmdShow)
    Ֆունկցիան վերադարձնում նշանակությունը որպես int տիպ, այսինքն նրանից է միշտ սկվում աշխատանքը.

    HINSTANCE hinstance – դեսկրիպտոր, որը Windows-ը տալիս է միացված ծրագրին.
    HINSTANCE hprevinstance – այս պարամետրը Win32-ում չի օգտագործվում և միշտ ստանում 0 արժեք.
    LPSTR lpcmdline – ցուցիչ տողի վրա, որի մեջ տպվում է ծրագրի արգումենտը եթե այն միացված է կոմանդաին տողի ռեժիմի մեջ.Ծրագիրը կարելի է միացնել կոմանդաին տողի ռեժիմի մեջ – Start -> Run(Пуск -> Выполнить ), և կոմանդաին տողի մեջ մուտքագրվում է ծրագրի անունը իսկ պրոբելից հետո ցույցեք տալի արգումենտների ցուցակը որոնք բաժանված են պրոբելներով.Եվ այս ձևով ծրագրի միացումը մնում է էկզոտիկ.Ամենաշատը այսօր ծրագրերը միանում են երկու անգամ սխմելով ֆայլի վրա, բայց այս ձևը մեզ թույլ չի տալի ծրագրին ուղարկել որևը արգումենտ.
    Int ncmdshow – ամբողջ նշանակություն, որը կարող է ուղարկվել ShowWindow ֆունկցիային.Այս պարամետրը կնայվի մյուս դասում.

    Պարզաբանելով ֆունկցիաի վերնագիրը կանցնենք նրա մարմնին.

    Ֆունկցիան ունի հետևյալ պրոտոտիպ

    MessageBox(NULL, "Hello, Win32 world!", "Hello from Message Box", MB_OK);

    Նրա պարամետրերը ինտրեպետացվում են հետևյալ ձև:

    hWnd – մայրական պատուհանի դեսկրիպտոր, ինքը ստանում է NULL (զրո ) արժեք եթե չունի մայրական պատուհան.
    lpText – ցուցիչ տողի վրա , որը պարունակում հաղորդագրության տեքտ .
    lpCaption - ցուցիչ տողի վրա, որը պարունակում է դիալոգաին պատոհանի վերնագրի տեքստ.
    uType - այս պարամետրը պարունակում է դրոշների կոմբինացիան, որը տալիս է
    կնոպկեկի քանաքությունը և տիպը, նաև պիկտոգրամմա ( փոքր նկար վերնագրի ձախ կողմում ).

    Մյուս դասում մենք կգրենք պատուհան մեր ուզաց չափերով և նաստրոյկեկով որը օգտագործվում է 3D օբեկտների, տեկստի և այլն էկրանի դուրս բերման համար ինչպես խաղերում.Եվ մեզ ամպայման պետք կգա Directx- ը որի ծավալը 550 մեգաբայթ է կարող եք քաշել այստեղից
    http://www.microsoft.com/downloads/d...0-edb2df5abad4
    ասեմ ձեզ որ առանց դրա դուք չեք կարող ստեղծել խաղ.

    իմ մեիլը [email protected]

  2. Գրառմանը 11 հոգի շնորհակալություն են հայտնել.

    aerosmith (29.09.2009), Chuk (30.09.2009), davidus (30.09.2009), Elmo (29.09.2009), h.s. (03.10.2009), keyboard (30.09.2009), Legolas (29.09.2009), xaker00 (01.10.2009), Yellow Raven (29.09.2009), _DEATH_ (29.09.2009), Արամ (01.10.2009)

  3. #2
    Մշտական անդամ
    Գրանցման ամսաթիվ
    24.12.2006
    Տարիք
    37
    Գրառումներ
    321
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Պատ. I.դաս: Խաղի ծրագրավորում Directx-ով , C++ լեզվի օգնությամբ.

    Մեջբերում Zte77-ի խոսքերից Նայել գրառումը
    C++ 2005 կամ C++ 2008 մենք պտի նաստրոյկեկի մեջ մի բան փոխենք որ սխալ չտա և ըտենց մենուի մեյ ընտրեք Project -> (մեր ֆայլի անունը ) Properties…, բացեք Configuration Properties -> General և աջ կողմում Character Set – մեջ Use Unicode Character Set սխմելով վրեն փոխեք Not set- ի վրա և սխմեք OK:
    մի անգամ այս պռոբլեմը իմ մոտ կար, միչև գտա ... ահագին ջղայանցա
    շատ օգտակար է, շնորհակալություն, կսպասեմ շարունակությանը:

  4. Գրառմանը 1 հոգի շնորհակալություն է հայտնել.

    aerosmith (29.09.2009)

  5. #3
    տկլոր պինգվին _DEATH_-ի ավատար
    Գրանցման ամսաթիվ
    30.07.2006
    Հասցե
    Ատլանտիդա
    Տարիք
    34
    Գրառումներ
    2,171
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Պատ. I.դաս: Խաղի ծրագրավորում Directx-ով , C++ լեզվի օգնությամբ.

    win32 api ահագին սովորել եմ, մի հատ անգլերեն գիրք էր կեժամում կարդացի, երկու օրում մի հատ 1500 տողանոց ծրագիր գրեցի, հետո էտ նույն ծրագիրը Քյուտով գրեցի 152 տող, դրանից հետո էլ ոչ մի անգամ win api-ով ծրագիր չեմ գրել ու դժվար էլ գրեմ…
    Մարդը լինելը լավ բան ա, բայց երկու ոտքի վրա կանգելը դեռ չի նշանակում որ դու մարդ ես:
    Ամենակարևորը էս կյանքում մարդ լինելն ա, մնացած ամենինչը երկրորդական ա:
    ԷԼ ԿՅԱՆՔՈՒՄ ԷՍ ՖՈՐՈՒՄԸ ՉԵՄ ՄՏՆԵԼՈՒ

  6. #4
    Պատվավոր անդամ aerosmith-ի ավատար
    Գրանցման ամսաթիվ
    22.08.2007
    Տարիք
    35
    Գրառումներ
    1,776
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Պատ. I.դաս: Խաղի ծրագրավորում Directx-ով , C++ լեզվի օգնությամբ.

    Ապրես , շատ լավ թեմայես բացել:
    Կարծում եմ C++ վին.ծրագրավորում սովորել ցանկացողներին ահագին կոգնի…
    Միայն շարունակական կդարձնես այս թեման…

  7. #5
    Lonesome Crow Yellow Raven-ի ավատար
    Գրանցման ամսաթիվ
    17.05.2006
    Հասցե
    Երևան
    Տարիք
    34
    Գրառումներ
    4,743
    Բլոգի գրառումներ
    11
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    Պատ. I.դաս: Խաղի ծրագրավորում Directx-ով , C++ լեզվի օգնությամբ.

    Կսպասեմ շարունակությանը

  8. #6
    տկլոր պինգվին _DEATH_-ի ավատար
    Գրանցման ամսաթիվ
    30.07.2006
    Հասցե
    Ատլանտիդա
    Տարիք
    34
    Գրառումներ
    2,171
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Պատ. I.դաս: Խաղի ծրագրավորում Directx-ով , C++ լեզվի օգնությամբ.

    Ով ուզում ա սովորի Win32 API-ն ու անգլերեն գիտի խորհուրդ եմ տալիս կարդալ այս tutorial-ը: Սկսելու համար ավելի լավ նյութ դժար թե ճարեք…
    Մարդը լինելը լավ բան ա, բայց երկու ոտքի վրա կանգելը դեռ չի նշանակում որ դու մարդ ես:
    Ամենակարևորը էս կյանքում մարդ լինելն ա, մնացած ամենինչը երկրորդական ա:
    ԷԼ ԿՅԱՆՔՈՒՄ ԷՍ ՖՈՐՈՒՄԸ ՉԵՄ ՄՏՆԵԼՈՒ

  9. #7
    Պատվավոր անդամ aerosmith-ի ավատար
    Գրանցման ամսաթիվ
    22.08.2007
    Տարիք
    35
    Գրառումներ
    1,776
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Պատ. I.դաս: Խաղի ծրագրավորում Directx-ով , C++ լեզվի օգնությամբ.

    անձամբ ես կասեմ, որ անգլերենմ չիմանալը էդքան էլ չի խոչնդոտում ծրագրավորում սովորելուն…
    որտև եթե սովորողը, գոնե մի քիչ էլ ծրագրավորումից տեղյակա, ուրեմն իրան հերիքա մենակ բերված օրինակները հեղինակների կողմից

  10. #8
    տկլոր պինգվին _DEATH_-ի ավատար
    Գրանցման ամսաթիվ
    30.07.2006
    Հասցե
    Ատլանտիդա
    Տարիք
    34
    Գրառումներ
    2,171
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Պատ. I.դաս: Խաղի ծրագրավորում Directx-ով , C++ լեզվի օգնությամբ.

    Մեջբերում aerosmith-ի խոսքերից Նայել գրառումը
    անձամբ ես կասեմ, որ անգլերենմ չիմանալը էդքան էլ չի խոչնդոտում ծրագրավորում սովորելուն…
    որտև եթե սովորողը, գոնե մի քիչ էլ ծրագրավորումից տեղյակա, ուրեմն իրան հերիքա մենակ բերված օրինակները հեղինակների կողմից
    Դե լեզուն կարող ա, բայց win api-ն դժվար թե առանց տեխնիկական անգլերեն իմանալու մեկը կարողանա էտ իմ ասածով նորմալ մի բան սովորի: Որովհետև լրիվ տրամաբանությունից հեռու բան ա, մենակ պտի կարդաս ինչը ինչի համար ա ու ինչը ոնց ա արվում: Իսկ օրինակը ոչ մի բան չի ասում, որովհետև "պարզ" անգլերենից շատ հեռու ա:
    Մարդը լինելը լավ բան ա, բայց երկու ոտքի վրա կանգելը դեռ չի նշանակում որ դու մարդ ես:
    Ամենակարևորը էս կյանքում մարդ լինելն ա, մնացած ամենինչը երկրորդական ա:
    ԷԼ ԿՅԱՆՔՈՒՄ ԷՍ ՖՈՐՈՒՄԸ ՉԵՄ ՄՏՆԵԼՈՒ

  11. #9
    Սկսնակ անդամ Zte77-ի ավատար
    Գրանցման ամսաթիվ
    29.09.2009
    Գրառումներ
    15
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    2.դաս խաղի ծրագրավորում Directx –ով, C++ լեզվի օգնությամբ:Ստեղծում ենք պատուհան(1)

    Այսօր մենք կսետղցենք այսպիսի պատուհան

    Մեր նայաց ծրագիրը կարող եք բեռնավորել(քաշել) ստեղից http://ifolder.ru/14252971
    Windows- ի ծրագրավորման հիմունքներ

    Մինչև որ մենք կանցնենք գրաֆիկաի ծրագրավորման Directx – ի օգնությամբ,մեզ անհրաժեշտ է ստեղծել ծրագրի կարկաս , որը հանդիսանում է մակերես 3D – ի դուրս բերմանը.Ստեղծելով ժրագրի կարկաս մենք կարող ենք անցնել գրաֆիկաի ծրագրավորմանը նկարելով տարբեր 3D- օբեկտներ.

    Windows-ի ընդհանուր հաղորդագրության մոդել

    Windows-ը շատ հետքաքրքիր օպեռացիոն համակարգ է և բոլոր ծրագրերի հետ շփումը կառուցվում է իրադարձությունների մոդելով.Ցանկացած պատուհան իր գոյության ժամանակ շփվում է Windows-ի հետ հահորդագրություններով.
    Այսպիսի հաղորդագրությունները կարողեն լինել անվերջ.Որպեսզի սիստեմացնենկ նրանց, գոյություն ունի իրադարձությունների հերթ, որը կատարվում է հասարակ ցիկլով.Ամեն մի ստացաց հաղորդագրություն սպասում է իր հերթին մշակման համար, որից հետո հանվում է Windows-ի օպեռացիոն համակարգով.Քանի որ Windows-ը շատ մեծ և բազմակարգանի օպեռացիոն համակարգ է, ապա ծրագրերը ինչ որ մի ժամանակաշրջանում կարող են լինել շատ,նշանակում է , և ստացող հաղորդագրությունները նոյնպես.

    Նկ1 վրա ցույց է տրված ծրագրի իրադարձությունների համագործակցություն.



    Իրադարձությունների մոդելից դուրս է գալի որ մեզ անհրաժեշտ է ստեղծել հաղորդագրությունների մշակող սարք.Սկզբից մենք կստեղծենք WinMain ( )ֆունկցիա որի մեջ կատարվում է պատուհանի ստեղծումը և հաղորդագրությունների մշակում.Այս պատճառով սկզբից մենք կստեղծենկ WinMain ( ) ֆունկցիա, որի մեջ կնկարագրենկ windowsclass դասս(class), որի մեջ ցույց կտանկ պատուհանի չափը,ձևը և ֆոնը.
    Հետո մենք կստեղծենք պատուհան CreateWindowEx ( ) ֆունկցիայի օգնությամբ.Հետո կգրանցենք, և վերջում կստեղծենք իրադարձությունների մշակող սարք.

    Գլխավոր WinMain ( ) ֆունկցիա

    Առաջինը մենք պետկ է միացնենկ գլխավոր վերնագրի windows.h ֆաիլ.

    #include <windows.h>

    Հետո գալիս է գլխավոր մուտքի ֆունկցիա բոլոր Windows-ի հավելվածների(приложение) համար:WinMain ( ) որի պրոտոտիպը ունի հետևյալ տեսք

    Int WINAPI WinMain (
    HINSTANCE hinstance,
    HINSTANCE hprevinstance,
    LPSTR lpcmdline,
    Int ncmdshow )

    WinMain ( ) ֆունկցիան ունի հետևյալ պարամետրեր.

    Hinstance – դա ստեղծվող պատուհանի դեսկրիպտոր, այսինքն handle.Դա կարելի է ասել ձեր ստեղծվող պատուհանի նշանը.
    Hprevinstance – այս պարամետրը արդեն չի օգտագործվում և միշտ ստանում է 0.
    Lpcmdline – ցուցիչ կոմանդաին տողի վրա.
    Ncmdshow – այս նշանակությունը ցույց է տալիս, ինչպես է ստեղծվող պատուհանը ցույց է տրվելու մոնիտորի էկրանի վրա ստեղծման ժամանակ.

    windowsclass –ի դասի պարզաբանում

    Հետո մեզ անհրաժեշտ է ստեղծել windowsclass դաս.Դաս – դա այն է որ մեզ տալիս է տարբերել պատուհանի տեսքը և նշանակությունը.Հաճախ ասում են որ պատուհանները իրարից տարբերվում են դասերով.Windows-ը արդեն ունի որոշված դասեր և մնում է պահպանել ինֆորմացիա windowsclass – ի դասի ստեղծումը WNDCLASSEX ստրուկտուրայում.



    WNDCLASSEX windowsclass // մեր դասը(class)

    Իսկ հիմա կնաենք WNDCLASSEX ստրուկտուրա, որը անհրաժեշտ է պատուհանի ստեղծման համար:

    typedef struct {
    UINT cbSize;
    UINT style;
    WNDPROC lpfnWndProc;
    int cbClsExtra;
    int cbWndExtra;
    HINSTANCE hInstance;
    HICON hIcon;
    HCURSOR hCursor;
    HBRUSH hbrBackground;
    LPCTSTR lpszMenuName;
    LPCTSTR lpszClassName;
    HICON hIconSm;
    }WNDCLASSEX, *PWNDCLASSEX;

    Ստրուկտուրան ունի հետևյալ պարամետրերը.

    cbSize – դա ստեղծվող ստրուկտուրաի չափը, windowclass.cbSize = sizeof ( windowclass ),
    եթե մոռացելեք sizeof ( ) ֆունկցիայով մենք ստանում ենք ինչ որ մի բանի չափ.
    Style – ունի պատուհանի ձևի տարբեր դրոշներ որոնց կարելի է կոմբինացնել լոգիկ ИЛИ “|” , լրացնում ենք style տող:

    windowsclass.style = CS_HREDRAW | CS_VREDRAW;

    Կոմբինացնելով տարբեր դրոշներ.Ուսումնասիրենք օգտագործվող դրոշներ.Եթե ուզում եք իմանալ ավելին ապա դուք կարող եք դիմել Win32Api.

    CS_VREDRAW - եթե պատուհանի բարձրությունը փոխվում է կամ պատուհանը տեղափոխվել է ապա անհրաժեշտ է պատուհանը վերանկարել.
    CS_HREDRAW – եթե պատուհանի լայնությունը փոխվում է կամ պատուհանը տեղափոխվել է ապա անհրաժեշտ է պատուհանը վերանկարել.
    CS_OWNDC – ամեն մի պատուհանի համար տվյալ դասի համար տրվում է իր սարքի կոնտեկստ.
    CS_DBLCLKS – երբ կատարվել է երկու կլիկ մկնիկով, պատուհանին հաղորդվում է 2 անգամ սղմում մկնիկով ինֆորմացիա.

    lpfnWndProc – դա ցուցիչ է ֆունկցիաի հակառակ կանչմանը.Ամեն մի Windows-ի հավելվածում(приложение) գոյություն ունի իրադարձությունների մշակման ցիկլ որի աշխատանքի ժամանակ կատարվում է MainWinProc – ի կանչում.
    Երկու հատ տող cbClsExtra և cbWndExtra, նախատեսված են լրացուցիչ ինֆորմացիաի պահպանման համար.Սակայն նրանց հազվադեպ են օգտագործում, մեզ Directx –ում այն պետկ չի գալու.Այս պատճառով գրում ենք. Windowsclass.cbClsExtra = 0; windowsclass.cbWndExtra = 0;
    hinstance – պարամետր, որը պատասխանում է ստեղծվող նմուշի հավելվածին.որը հաղորդվում է WiMain ( ) ֆունկցիայով. Windowsclass.hInstance = hinstance;
    hIcon – ծառայում է ձեր հավելվածում պիկտոգրամաի( փոքր նկար վերնագրի ձախ կողմում ) որոշման համար.LoadIcon ( ) ֆունկցիաի օգնությամբ կարելի է բեռնավորել սեփական կամ Windows-ի պիկտոգրամմա.LoadIcon ( ) –ի պրոտոտիպը ունի հետևյալ տեսք.
    HICON LoadIcon ( HINSTANCE hinstance, LPCTSTR IconName );
    Hinstance – հավելվածի նմուշ, որպեսզի բեռնավորենք ստանդարտ պիկտոգրամմա, օգտագործվում է NULL նշանակություն;
    LpIconName – դա բեռնավորվող պիկտոգրամմաի աղբյուրի ինդենտիֆիկատորն է.Այստեղ մենք օգտագործում ենք IDI_APPLICATION .Պրոտոտիպը հետևյալն է
    Windowsclass.hIcon = LoadIcon ( hinstance, IDI_APPLICATION );

    hCursor – Այս պարամետրը պատասխանում է կուրսորի համար.Ինքը գրվում է հետևյալ ձև
    windowsclass.hCursor = LoadCursor ( NULL, IDC_ARROW );
    hbrBackground – այս ստրուկտուրաի տողը ,պատասխանում է պատուհանի ֆոնի գույնի համար.Որպեսզի ներկենք ֆոնը մեր ուզաց գույնով, պետկ է օգտագործել GetStockObject ( ) ֆունկցիա, որը ընդունում է մեկ դրոշի պարամետր, որը որոշում է վրձինի գույնը.Որպեսզի ֆոնը ներկենք սերիյ գույնի կգրենք սա;
    windowclass.hbrBackground = ( HBRUSH ) GetStockObject ( WHITE_BRUSH );
    Կարելի է ներկել նաև ոևրիշ դրոշներով, նրանց ցուցակը:
    GRAY_BRUSH – սերիյ վրձին.
    BLACK_BRUSH – սև վրձին.
    WHITE_BRUSH – սպիտակ գույնն է որով մենք ներկում ենք մեր պատուհանի ֆոնը.
    LTGRAY_BRUSH – բաց – սերիյ վրձին.
    DKGRAY-BRUSH – մութ – սերիյ վրձին.
    HOLLOW_BRUSH – դատարկ վրձին.

    lpszMenuName – տող, որը անհրաժեշտ է ստանդարտ մենյուն պատուհանին միացնելու համար.Մեր մոտ դրված է NULL նշանակություն, քանի որ մենք չենք օգտագործելու մենյուն մեր պրոեկտենեորւմ: windowsclass.lpszMenuName = NULL.
    lpszClassName – տրվում է մեր պատուհանի դասի անվանումը , ստեղծվող հավելվածի համար: Windowsclass.lpszClassName = “WINDOWSCLASS”;
    hIconSm – սա ստեղծվող փոքր պիկտոգրամմաի դեսկրիպտորն է, որը դուրս է բերվում պանելի խնդրի վրա .
    windosclass.hIconSm = LoadIcon ( NULL, IDI_APPLICATION );

    Վերջացնելով բոլոր տողերի լրացումը նաենք թե ինչ է ստացվել:



    windowsclass.cbSize = sizeof(WNDCLASSEX);
    windowsclass.style = CS_DBLCLKS | CS_OWNDC |
    CS_HREDRAW | CS_VREDRAW;
    windowsclass.lpfnWndProc = MainWinProc;
    windowsclass.cbClsExtra = 0;
    windowsclass.cbWndExtra = 0;
    windowsclass.hInstance = hinstance;
    windowsclass.hIcon = LoadIcon(hinstance, IDI_APPLICATION);
    windowsclass.hCursor = LoadCursor(NULL, IDC_ARROW);
    windowsclass.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH);
    windowsclass.lpszMenuName = NULL;
    windowsclass.lpszClassName = "WINDOWSCLASS";
    windowsclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);



    Դրանից հետո երբ դուք լրացրել եք և պահպանել եք նշանակությունները windosclass փոփոխականում, windowsclass – ը պետկ է գրանցել.Արվում է դա RegistrerClassEx ( ) ֆունկցիայով. RegisterClassEx ( & windowsclass ); // գրանցում ենք ստեղծված դաս(class ).

    Ստեղծում ենք պատուհան

    Դրանից հետո երբ դասը(class) գրանցված է,կարելի է ստեղծել պատուհան.Դա արվում է CreateWindowEx ( ) ֆունկցիայով.Նրա տեսքը հետևյալնը:



    HWND CreateWindowEx(

    DWORD dwExStyle,
    LPCTSTR lpClassName,
    LPCTSTR lpWindowName,
    DWORD dwStyle,
    int x,
    int y,
    int nWidth,
    int nHeight,
    HWND hWndParent,
    HMENU hMenu,
    HINSTANCE hInstance,
    LPVOID lpParam
    );



    CreateWindowEx ֆունկցիայի պարամետրերը հետևյալն են:

    dwExStyle - պատուհանի ձևի դրոշներ,կարելի է ասել որ չի օգտագործվում և ստանում է NULL.
    LpClassName – դա ստեղծվող պատուհանի անվանումն է, մեր դեպքում “WINDOWSCLASS”.
    LpWindowName – դա մեր պատուհանի վերնագիրն է ստեղ կարող եք գրել ինչ ուզում եք, մենք կոգտագոծենք “Bazain patuhan Directx-i hamar”.

    Dwstyle- դա դրոշ է, որը նկարագրում է պատուհանի ձևը և վարքը.
    Ահա և նրանց մի քանիսը:
    WS_OVERLAPPED – պատուհան շերտի վերնագրով և րամկա.
    WS_VISIBLE – սկզբնականից տեսնվող պատուհան.
    WS_CAPTION – պատուհան շերտի վերնագրով ( ինքը իր մեջ ընկալում է WS_BORDER ձև ).
    WS_BORDER – պատուհան բարակ րամկաով.
    WS_ICONIC – պատուհանը սկզբնականից փոքրացված է.
    WS_OVERLAPPEDWINDOW – ծածկվող պատուհան ( որը իր մեջ ընկալում է հետևյալ վեցը ձև: WS_OVERLAPPED, WS_CAPTION, WS_SYSMENU, WS_THICKFRAME, WS_MINIMIZEBOX –նրան մենք և կոգտագործենք.
    WS_MINIMIZE – սկզբնականից մինիմիզացվաց պատուհան.
    WS_MAXIMIZE – սկզբնականից մակսիմազված պատուհան.
    WS _MAXIMIZEBOX – պատուհան MAXIMIZE կնոպկայով .
    WS_MINIMIZEBOX – պատուհան MINIMIZE կնոպկայով.

    x, y – դա վերևի ձախ անկյունի պատուհանի դիրքն է.Նրանց կորդինատները կդնենք x -300 ,y – 150.
    nwidth և nheight - պատուհանի լայնությունը և բարձրությունը.Մենք կդնենք 500 և 400.
    hwndParent – մայրական պատուհանի դեսկրիպտոր,եթե մայրական պատուհան չկա ապա օգտագործվում է NULL նշանակություն.
    Hmenu – մենուի դեսկրիպտոր, եթե դուք ունեք մենու կարող եք ցույց տալ նրան.Եթե մենյուն չկա ապա դրվում է NULL նշանակություն.
    Hinstance – ձեր պատուհանի նմուշն է, օգտագործում է hinstance նշանակություն.

    Այս պահին մեզ հայտնի է ֆունկցիայի բոլոր նշանակությունները.Ստեղծենք պատուհան.
    Կհայտարարենք պատուհանի դեսկրիպտոր և կկանչենք CreatWindowEx ( ) ֆունկցիա.

    HWND hwnd;
    hwnd = CreateWindowEx(NULL, // պատուհանի ձևը
    "WINDOWSCLASS", // դաս(class)
    "Урок 1. Базовое Окно для DirectX ", // պատւհանիանվանում окна
    WS_OVERLAPPEDWINDOW | WS_VISIBLE,
    300,150, // վերևի ձախ անկյուն
    500,400, // լայնություն և բարձրություն
    NULL, // մայրական պատուհանի դեսկրիպտոր
    NULL, // մենուի դեսկրիպտոր
    hinstance, // նմուշի դեսկրիպտոր
    NULL)))

    Դրանից հետո երբ պատուհանը ստեղծված է ,Նրան պետկ է դուրս բերել և թարմացնել.
    Դա կատարվում երկու ֆունկցիաներով.


    ShowWindow( hwnd, SW_SHOWDEFAULT ); //Կնկարենք պատուհան
    UpdateWindow( hwnd ); //Կթարմացնենք պատուհան

  12. Գրառմանը 5 հոգի շնորհակալություն են հայտնել.

    Cyber (30.09.2009), davidus (30.09.2009), keyboard (30.09.2009), xaker00 (01.10.2009), Yellow Raven (30.09.2009)

  13. #10
    Սկսնակ անդամ Zte77-ի ավատար
    Գրանցման ամսաթիվ
    29.09.2009
    Գրառումներ
    15
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    2.դաս խաղի ծրագրավորում Directx –ով, C++ լեզվի օգնությամբ:Ստեղծում ենք պատուհան(2)

    Իրադարձությունների մշակում Windows-ում

    Windows- ում իրադարձությունները մշակվում են ձեր ստեղծաց իրադարձությունների մշակիչ սարքով.Հավելվածի աշխատանքի ժամանակ գեներացվում են տարբեր հաղորդագրություններ որոնք հաղորդվում են հերթ.Որից հետո իրադարձությունների մշակիչը վերցնում է նրանց և հաղորդում է MainWinProc ( ) ֆունկցիային մշակման համար.

    Նաենք MainWinProc – ի պրոտոտիպը.

    LRESULT CALLBACK MainWinProc ( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam )

    MainWinProc –ի պարամետրերը հետևյալն են.

    Hwnd – պատուհանի դեսկրիպտոր.
    Msg – իրադարձությունների ինդենտիֆիկատոր, որը պետկ է հաղորդվի MainWinProc ( ) ֆունկցիային մշակման համար.
    wparam և lparam - դա իրադարձությունների մշակման լրացուցիչ պարամետրերն են.Իրադարձությունների մշակիչ գրելու համար հաճախ օգտագործվում է switch ( msg ) կոնստրուկցիան.Նաենք մի քանի հաղորդագրություն ,որոնք կարող են պետկ գալ խաղի ստեղծման համար.

    WM_PAINT – այդ հաղորդագրությունը ուղարկվում է երբ մեզ պետկ է վերանկարել ամբողջ պատուհանը, որը կարող էր տեղփոված լինել կամ չափ է փոխվել.
    WM_DESTROY - այդ հաղորդագրությունը ուղարկվում է Windows, երբ պատուհանը պետկ է փագվի.
    WM_QUIT - դրանից հետո կանչվում է այդ հաղորդագրությունը, որը և փագում է պատուհանը.

    Միավորելով իրար մենք կստանանք MainWinProc ( ) ֆունկցիա.


    LRESULT CALLBACK MainWinProc(HWND hwnd,
    UINT msg, WPARAM wparam,
    LPARAM lparam)
    {

    switch(msg)
    {


    case WM_PAINT:
    break;

    case WM_DESTROY:
    {
    PostQuitMessage(0);
    return(0);
    } break;

    }

    return (DefWindowProc(hwnd, msg, wparam, lparam));
    }


    PostQuitMessage ( 0 ) ֆունկցիան QUIT ֆունկցիաին դնում է հերթին. Որը և կփագի ձեր պատուհանը.DefWindowProc ( ) ֆունկցիան մշակում է այն հաղորդագրությունները որոնք դուք չեք օգտագործում.

    Գլխավոր իրադարձությունների մշակիչ

    Կնաենք գլխավոր իրադարձությունների մշակիչ, որը օգտագործվում է հետևյալ օրինակում:

    while(GetMessage(&msg,NULL,0,0))
    {

    TranslateMessage(&msg);

    DispatchMessage(&msg);
    }

    While ցիկլը կատարվում է եդքան մինչև GetMessage ( ) ֆունկցիան վերադարձնում ոչ զրո նշանակություն.Ցիկլի աշխատանքը կատարվում է հետևյալ ձև երբ ստանում ենք հերթից հաղորդագրություն ինքը մշակվում է TranslateMessage ( ) ֆունկցիայով և հաղորդվում է DispatchMessage ( ) ֆունկցիային, որը կանշում է MainWinProc ( ) ֆունկցիա մշակմա համար, հաղորդելով նրան ամբողջ պետկական ինֆորմացիա.

    Հիմա նաեք թե ինչ է մեր մոտ ստացվել.
    Մեր նայաց ծրագիրը կարող եք բեռնավորել(քաշել) ստեղից http://ifolder.ru/14252971

    //---------------------------------------------------------------------------------------

    #include <windows.h> // Միացնում ենք Windows-ի վերնագրի ֆաիլ
    #include "resource.h"

    //----------------------------------------------------------------------------------------
    // Ֆունկցիա
    // MainWinProc()
    //Ստեղ կատարվում է իրադարձությունների մշակում
    //----------------------------------------------------------------------------------------

    LRESULT CALLBACK MainWinProc(HWND hwnd, //Պատուհանի դեսկրիպտոր
    UINT msg, //հաղորդագրության ինդենտիֆ.
    WPARAM wparam, //լրացուցիչ ինֆորմացիա
    LPARAM lparam) // լրացուցիչ ինֆորմացիա
    {

    switch(msg)
    {


    case WM_PAINT:
    break;

    case WM_DESTROY:
    {
    PostQuitMessage(0);
    return(0);
    } break;

    }

    return (DefWindowProc(hwnd, msg, wparam, lparam));
    }
    //---------------------------------------------------------------------------------------
    // Ֆունկցիա
    // WinMain()
    //---------------------------------------------------------------------------------------

    int WINAPI WinMain( HINSTANCE hinstance,
    HINSTANCE hprevinstance,
    LPSTR lpcmdline,
    int ncmdshow)
    {

    WNDCLASSEX windowsclass; // Ստեղծում ենք դաս(class)
    HWND hwnd; // Ստեղծում ենք պատուհանի դեսկրիպտոր
    MSG msg; // Հաղորդագրություն


    // Определим класс окна WNDCLASSEX
    windowsclass.cbSize = sizeof(WNDCLASSEX);
    windowsclass.style = CS_DBLCLKS | CS_OWNDC |
    CS_HREDRAW | CS_VREDRAW;
    windowsclass.lpfnWndProc = MainWinProc;
    windowsclass.cbClsExtra = 0;
    windowsclass.cbWndExtra = 0;
    windowsclass.hInstance = hinstance;
    windowsclass.hIcon = LoadIcon(hinstance, IDI_APPLICATION);
    windowsclass.hCursor = LoadCursor(NULL, IDC_ARROW);
    windowsclass.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH);
    windowsclass.lpszMenuName = NULL;
    windowsclass.lpszClassName = "WINDOWSCLASS";
    windowsclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);

    // Կգրանցենք դասը(class)
    if (!RegisterClassEx(&windowsclass))
    return(0);

    // Երբ դասը(class) գրանցված է կարելի է ստեղծել պատուհան

    if (!(hwnd = CreateWindowEx(NULL, // պատուհանի ձևը
    "WINDOWSCLASS", // դաս(class).
    " Bazain patuhan Directx-i hamar ", // անվանում о
    WS_OVERLAPPEDWINDOW | WS_VISIBLE,
    300,150, // վերևի ձախ անկյու
    500,400, // լայնություն և բարձրություն
    NULL, // մայրական պատուհանի դեսկրիպտոր
    NULL, // մենուի դեսկրիպտոր
    hinstance, // հավելվածի նմուշի դեսկրիպտոր
    NULL))) //
    return(0);


    ShowWindow( hwnd, SW_SHOWDEFAULT ); //Կնկարենք պատուհան
    UpdateWindow( hwnd ); //Կթարմացնենք պատուհանը

    while(GetMessage(&msg,NULL,0,0))
    {

    TranslateMessage(&msg);

    DispatchMessage(&msg);
    }


    return(msg.wParam);

    }

    Կոմպիլացիաից հետո կտեսնեք դա


    Մյուս դասում մենք կավելացնենք մեր պատուհանի կոդին Directx- ի կոդը.Եվ մյուս դասում մենք կվերջացնենք պատուհանի ստեղծելը և կանցնենք գրաֆիկաի ծրագրավորմանը , 3D օբեկտների դուրս բերում մեր ստեղծաց պատուհանում.

  14. Գրառմանը 3 հոգի շնորհակալություն են հայտնել.

    Cyber (30.09.2009), xaker00 (01.10.2009), Yellow Raven (30.09.2009)

  15. #11
    Ուշադիր
    Chuk-ի ավատար
    Գրանցման ամսաթիվ
    17.03.2006
    Հասցե
    Երևան
    Տարիք
    41
    Գրառումներ
    25,245
    Բլոգի գրառումներ
    31
    Mentioned
    85 Post(s)
    Tagged
    1 Thread(s)

    Պատ. Խաղի ծրագրավորում Directx-ով , C++ լեզվի օգնությամբ

    Մոդերատորական. «I.դաս: Խաղի ծրագրավորում Directx-ով , C++ լեզվի օգնությամբ», «2.դաս խաղի ծրագրավորում Directx –ով, C++ լեզվի օգնությամբ:Ստեղծում ենք պատուհան(1)» և «2.դաս խաղի ծրագրավորում Directx –ով, C++ լեզվի օգնությամբ:Ստեղծում ենք պատուհան(2)» թեմաները միացվել են իրար ընդհանուր «Խաղի ծրագրավորում Directx-ով , C++ լեզվի օգնությամբ» վերնագրի տակ, որպեսզի ավելորդ խառնաշփոթ չստեղծվի, հետաքրքրվողի համար հարմար լինի օգտվելը:

    Քայլ առ քայլ՝ դարից դար

    Խենթ եմ

  16. #12
    Սկսնակ անդամ
    Գրանցման ամսաթիվ
    10.05.2009
    Գրառումներ
    62
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Պատ. Խաղի ծրագրավորում Directx-ով , C++ լեզվի օգնությամբ

    Ավելի ճիշտ կլինի տեղափոխել բլոգ:

  17. #13
    Մշտական անդամ
    Գրանցման ամսաթիվ
    24.12.2006
    Տարիք
    37
    Գրառումներ
    321
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Պատ. Խաղի ծրագրավորում Directx-ով , C++ լեզվի օգնությամբ

    Նման նյութերը գուգլում շատ են, բայց սրանք դրանց նկատմամբ ունեն մի մեծ առավելություն՝ հայերեն են:
    Ուշադրություն դարձրու նաև ճիշտ հայերեն շարադրանքին, այդպես ավելի հաճելի է կարդալ:

  18. #14
    Սկսնակ անդամ Zte77-ի ավատար
    Գրանցման ամսաթիվ
    29.09.2009
    Գրառումներ
    15
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Պատ. Խաղի ծրագրավորում Directx-ով , C++ լեզվի օգնությամբ

    Մեջբերում Legolas-ի խոսքերից Նայել գրառումը
    Նման նյութերը գուգլում շատ են, բայց սրանք դրանց նկատմամբ ունեն մի մեծ առավելություն՝ հայերեն են:
    Ուշադրություն դարձրու նաև ճիշտ հայերեն շարադրանքին, այդպես ավելի հաճելի է կարդալ:
    Ետ իմ մոտ դրանիցա որ ռուսերենը ավելի լավ գիդեմ քան թե հաերենը
    Վերջին խմբագրող՝ Աթեիստ: 30.09.2009, 23:04:

  19. #15
    Մշտական անդամ
    Գրանցման ամսաթիվ
    24.12.2006
    Տարիք
    37
    Գրառումներ
    321
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Պատ. Խաղի ծրագրավորում Directx-ով , C++ լեզվի օգնությամբ

    Մեջբերում Zte77-ի խոսքերից Նայել գրառումը
    Ետ իմ մոտ դրանիցա որ ռուսերենը ավելի լավ գիդեմ քան թե հաերենը
    վոոոոոոոոոոոոոյ, նու տագդա նալիվայ, պագավարիմ,
    պռա մուժսկիե ձելա
    ի պռա ժենսկիե ծելա


    իսկ եթե լուրջ, համ գրի օգտակար նյութերը, համ ուշադրություն դարձրու հայերենին,
    մենք ծրագրավորում ու հայերեն կսովորենք, դու՝ հայերեն:
    Վերջիվերջո սա հայերեն սովորելու մեծ դարբնոց ա:

Էջ 1 3-ից 123 ՎերջինըՎերջինը

Թեմայի մասին

Այս թեման նայող անդամներ

Այս պահին թեմայում են 1 հոգի. (0 անդամ և 1 հյուր)

Համանման թեմաներ

  1. Գրառումներ: 10
    Վերջինը: 29.07.2012, 11:57
  2. Գրառումներ: 38
    Վերջինը: 26.12.2010, 13:13
  3. Ստորագրության լեզվի հարցը
    Հեղինակ՝ StrangeLittleGirl, բաժին` Հայերեն
    Գրառումներ: 90
    Վերջինը: 15.06.2010, 00:14
  4. Directx 10 թե 9
    Հեղինակ՝ ..Ando.., բաժին` Համակարգչային ծրագրեր
    Գրառումներ: 21
    Վերջինը: 10.05.2009, 15:07
  5. Լեզվի ընտրություն
    Հեղինակ՝ Սահակ, բաժին` Առաջարկություններ և դիտողություններ
    Գրառումներ: 6
    Վերջինը: 25.03.2007, 23:05

Էջանիշներ

Էջանիշներ

Ձեր իրավունքները բաժնում

  • Դուք չեք կարող նոր թեմաներ ստեղծել
  • Դուք չեք կարող պատասխանել
  • Դուք չեք կարող կցորդներ տեղադրել
  • Դուք չեք կարող խմբագրել ձեր գրառումները
  •