Fryshuset Gamer Forum
Vill du reagera på det här meddelandet? Registrera dig för forumet med några klick eller logga in för att fortsätta.


Fryshuset Forum
 
HemHem  SökSök  Bli medlemBli medlem  Logga inLogga in  

 

 Projekt 1: Peka & klicka -äventyr

Gå ner 
FörfattareMeddelande
Johan



Antal inlägg : 47
Registreringsdatum : 08-09-03

Projekt 1: Peka & klicka -äventyr Empty
InläggRubrik: Projekt 1: Peka & klicka -äventyr   Projekt 1: Peka & klicka -äventyr I_icon_minitimeons jan 21, 2009 10:53 am

Jag har lagt upp mitt exempel på hur ett pekaklickaspel kan se ut på J: under:

J:\Läsår 08-09\Passioner\Gamer\Programmering C\pekaklicka-exempel

Men jag varnar er. Det är helt icke-objektorienterat, mycket dåligt kommenterad fulkod.

Jag hoppas få se mycket snyggare program från er sen Wink
Till överst på sidan Gå ner
http://www.cplusplus.com/doc/tutorial/
Migon

Migon

Antal inlägg : 40
Registreringsdatum : 08-08-29
Ålder : 30
Ort : In my room, building stuff.

Projekt 1: Peka & klicka -äventyr Empty
InläggRubrik: Sv: Projekt 1: Peka & klicka -äventyr   Projekt 1: Peka & klicka -äventyr I_icon_minitimeons jan 21, 2009 11:06 am

Här är koden för de lata som inte orkar gå in på J:

Kod:
#include <SFML/System.hpp>
#include <SFML/Graphics.hpp>
#include <iostream>



int main()
{

    ///////////////////////////
    // I N I T
    ///////////////////////////
    //Variabler
        //Spelaren
        int aktivtRum = 3;

        //Världen
        int antalRum = 4;
        int antalLankarPerRum = 2;
        std::string rumFil[antalRum][2]; //[0]:rum [1]:mask
        int lank[antalRum][antalLankarPerRum][4]; //[0]:mål-rum [1]:rött [2]:grönt [3]:blått

        //Katalog för grafikfiler
        std::string graphLocation = "graphics/";

        //rum0
        rumFil[0][0] = "pos0Hangar.jpg";
        rumFil[0][1] = "pos0HangarMask.jpg";
        lank[0][0][0] = 1; lank[0][0][1] = 254; lank[0][0][2] = 0; lank[0][0][3] = 2;
        lank[0][1][0] = 3; lank[0][1][1] = 1;  lank[0][1][2] = 0; lank[0][1][3] = 254;

        //rum1
        rumFil[1][0] = "pos1Hangar.jpg";
        rumFil[1][1] = "pos1HangarMask.jpg";
        lank[1][1][0] = 0; lank[1][0][1] = 254; lank[1][0][2] = 0; lank[1][0][3] = 2;
        lank[1][0][0] = 2; lank[1][1][1] = 1;  lank[1][1][2] = 0; lank[1][1][3] = 254;

        //rum2
        rumFil[2][0] = "pos2Hangar.jpg";
        rumFil[2][1] = "pos2HangarMask.jpg";
        lank[2][0][0] = 1; lank[2][0][1] = 254; lank[2][0][2] = 0; lank[2][0][3] = 2;
        lank[2][1][0] = 3; lank[2][1][1] = 1;  lank[2][1][2] = 0; lank[2][1][3] = 254;

        //rum3
        rumFil[3][0] = "pos3Hangar.jpg";
        rumFil[3][1] = "pos3HangarMask.jpg";
        lank[3][0][0] = 0; lank[3][0][1] = 254; lank[3][0][2] = 0; lank[3][0][3] = 2;
        lank[3][1][0] = 2; lank[3][1][1] = 1;  lank[3][1][2] = 0; lank[3][1][3] = 254;

        //Rotationskänslighet
        int rotationTrigger = 50;
        float rotationSpeed = 500;


    //Skapa Fönstret
    sf::RenderWindow App(sf::VideoMode(600, 400, 32), "Click!");


    //Skapa bild som ska skrivas ut
    sf::Image rum;
    if (!rum.LoadFromFile(graphLocation + rumFil[aktivtRum][0]))
    {
        // Error...
    }

    //Skapa maskbild som ska ligga osynlig över bilden
    sf::Image mask;
    if (!mask.LoadFromFile(graphLocation + rumFil[aktivtRum][1]))
    {
        // Error...
    }

    //Skapa bild till pekaren
    sf::Image pointerImage;
    if (!pointerImage.LoadFromFile("graphics/pointer.png"))
    {
        // Error...
    }

    //Skapa bildens sprite nr 1
    sf::Sprite Sprite;
    Sprite.SetImage(rum);
    Sprite.SetColor(sf::Color(255, 255, 255));
    Sprite.SetPosition(0.f, 0.f);
    http://Sprite.SetScaleX(1.625);

    //Skapa bildens sprite nr 2
    sf::Sprite Sprite2;
    Sprite2.SetImage(rum);
    Sprite2.SetColor(sf::Color(255, 255, 255));
    Sprite2.SetPosition(Sprite.GetSize().x, 0.f);
    http://Sprite2.SetScaleX(1.625);

    //Skapa maskens Sprite nr 1
    sf::Sprite MaskSprite;
    MaskSprite.SetImage(mask);
    MaskSprite.SetColor(sf::Color(255, 255, 255));
    MaskSprite.SetPosition(0.f, 0.f);

    //Skapa maskens Sprite nr 2
    sf::Sprite MaskSprite2;
    MaskSprite2.SetImage(mask);
    MaskSprite2.SetColor(sf::Color(255, 255, 255));
    MaskSprite2.SetPosition(MaskSprite.GetSize().x, 0.f);

    //Pekarens Sprite
    sf::Sprite Pointer;
    Pointer.SetImage(pointerImage);
    Pointer.SetColor(sf::Color(255, 255, 255));
    Pointer.SetPosition(10,10);
    Pointer.SetSubRect(sf::IntRect(0,0,30,30));

    //Ta bort den ursprungliga muspekaren
    App.ShowMouseCursor(0);


    ///////////////////////////
    // G A M E  L O O P
    ///////////////////////////
    while (App.IsOpened())
    {

        //EVENT - HANTERING
        ////////////////////

        //Engångsklick
        sf::Event event;
        while (App.GetEvent(event))
        {
            // Close window : exit
            if (event.Type == sf::Event::Closed)
                App.Close();

            //Escape stänger av spelet
            if ((event.Type == sf::Event::KeyPressed) && (event.Key.Code == sf::Key::Escape))
                App.Close();

            //Kolla om man klickar på färgade ytor av masken och byt bild
            if (event.Type == sf::Event::MouseButtonPressed){
                //Mask1
                if ((App.GetInput().GetMouseX()-MaskSprite.GetPosition().x)>0 && (App.GetInput().GetMouseX()-MaskSprite.GetPosition().x)<MaskSprite.GetSize().x){
                    //Länk 1
                    if (MaskSprite.GetPixel(App.GetInput().GetMouseX()-MaskSprite.GetPosition().x, App.GetInput().GetMouseY()) == sf::Color(lank[aktivtRum][0][1],lank[aktivtRum][0][2],lank[aktivtRum][0][3])){
                        aktivtRum = lank[aktivtRum][0][0];
                        if (!rum.LoadFromFile(graphLocation + rumFil[aktivtRum][0])){
                            // Error...
                        }
                        if (!mask.LoadFromFile(graphLocation + rumFil[aktivtRum][1])){
                            // Error...
                        }
                    }
                    //Länk 2
                    else if (MaskSprite.GetPixel(App.GetInput().GetMouseX()-MaskSprite.GetPosition().x, App.GetInput().GetMouseY()) == sf::Color(lank[aktivtRum][1][1],lank[aktivtRum][1][2],lank[aktivtRum][1][3])){
                        aktivtRum = lank[aktivtRum][1][0];
                        if (!rum.LoadFromFile(graphLocation + rumFil[aktivtRum][0])){
                            // Error...
                        }
                        if (!mask.LoadFromFile(graphLocation + rumFil[aktivtRum][1])){
                            // Error...
                        }
                    }
                }
                //Mask2
                else if ((App.GetInput().GetMouseX()-MaskSprite2.GetPosition().x)>0 && (App.GetInput().GetMouseX()-MaskSprite2.GetPosition().x)<MaskSprite2.GetSize().x){
                    if (MaskSprite2.GetPixel(App.GetInput().GetMouseX()-MaskSprite2.GetPosition().x, App.GetInput().GetMouseY()) == sf::Color(lank[aktivtRum][0][1],lank[aktivtRum][0][2],lank[aktivtRum][0][3])){
                        aktivtRum = lank[aktivtRum][0][0];
                        if (!rum.LoadFromFile(graphLocation + rumFil[aktivtRum][0])){
                            // Error...
                        }
                        if (!mask.LoadFromFile(graphLocation + rumFil[aktivtRum][1])){
                            // Error...
                        }
                    }else if (MaskSprite2.GetPixel(App.GetInput().GetMouseX()-MaskSprite2.GetPosition().x, App.GetInput().GetMouseY()) == sf::Color(lank[aktivtRum][1][1],lank[aktivtRum][1][2],lank[aktivtRum][1][3])){
                        aktivtRum = lank[aktivtRum][1][0];
                        if (!rum.LoadFromFile(graphLocation + rumFil[aktivtRum][0])){
                            // Error...
                        }
                        if (!mask.LoadFromFile(graphLocation + rumFil[aktivtRum][1])){
                            // Error...
                        }
                    }//if (MaskSprite2.GetPixel...
                }//if ((App.GetInput().GetMouseX...
            }//if (event.Type == sf::Event...
        }//while (App.GetEv..

        //Collisioner
            //Om musen nuddar kanten så ska bilden ska rotera
            if (App.GetInput().GetMouseX()< rotationTrigger){
                Sprite.Move(rotationSpeed * App.GetFrameTime(),0);
                Sprite2.Move(rotationSpeed * App.GetFrameTime(),0);
                MaskSprite.Move(rotationSpeed * App.GetFrameTime(),0);
                MaskSprite2.Move(rotationSpeed * App.GetFrameTime(),0);
            }else if (App.GetInput().GetMouseX()> (App.GetWidth()-rotationTrigger)){
                Sprite.Move(-rotationSpeed * App.GetFrameTime(),0);
                Sprite2.Move(-rotationSpeed * App.GetFrameTime(),0);
                MaskSprite.Move(-rotationSpeed * App.GetFrameTime(),0);
                MaskSprite2.Move(-rotationSpeed * App.GetFrameTime(),0);
            }

            //Om musen nuddar en färgad yta på maskbilden så ska den byta bild
            if ((App.GetInput().GetMouseX()-MaskSprite.GetPosition().x)>0 && (App.GetInput().GetMouseX()-MaskSprite.GetPosition().x)<MaskSprite.GetSize().x){
                    if (MaskSprite.GetPixel(App.GetInput().GetMouseX()-MaskSprite.GetPosition().x, App.GetInput().GetMouseY()) == sf::Color(lank[aktivtRum][0][1],lank[aktivtRum][0][2],lank[aktivtRum][0][3])){
                        Pointer.SetSubRect(sf::IntRect(30,0,60,30));
                    }else if (MaskSprite.GetPixel(App.GetInput().GetMouseX()-MaskSprite.GetPosition().x, App.GetInput().GetMouseY()) == sf::Color(lank[aktivtRum][1][1],lank[aktivtRum][1][2],lank[aktivtRum][1][3])){
                        Pointer.SetSubRect(sf::IntRect(30,0,60,30));
                    }else{
                        Pointer.SetSubRect(sf::IntRect(0,0,30,30));
                    }
            }else if ((App.GetInput().GetMouseX()-MaskSprite2.GetPosition().x)>0 && (App.GetInput().GetMouseX()-MaskSprite2.GetPosition().x)<MaskSprite2.GetSize().x){
                    if (MaskSprite2.GetPixel(App.GetInput().GetMouseX()-MaskSprite2.GetPosition().x, App.GetInput().GetMouseY()) == sf::Color(lank[aktivtRum][0][1],lank[aktivtRum][0][2],lank[aktivtRum][0][3])){
                        Pointer.SetSubRect(sf::IntRect(30,0,60,30));
                    }else if (MaskSprite2.GetPixel(App.GetInput().GetMouseX()-MaskSprite2.GetPosition().x, App.GetInput().GetMouseY()) == sf::Color(lank[aktivtRum][1][1],lank[aktivtRum][1][2],lank[aktivtRum][1][3])){
                        Pointer.SetSubRect(sf::IntRect(30,0,60,30));
                    }else{
                        Pointer.SetSubRect(sf::IntRect(0,0,30,30));
                    }
            }


        //Flytta rotations-sprite ifall den hamnar utanför skärmen
            //Sprite 1
            if(Sprite.GetPosition().x< -Sprite.GetSize().x){
                Sprite.SetX(Sprite2.GetPosition().x+Sprite2.GetSize().x-1);
                MaskSprite.SetX(MaskSprite2.GetPosition().x+MaskSprite2.GetSize().x);
            }else if(Sprite.GetPosition().x > Sprite.GetSize().x){
                Sprite.SetX(Sprite2.GetPosition().x-Sprite2.GetSize().x+1);
                MaskSprite.SetX(MaskSprite2.GetPosition().x-MaskSprite2.GetSize().x);
            }

            //Sprite 2
            if(Sprite2.GetPosition().x< -Sprite2.GetSize().x){
                Sprite2.SetX(Sprite.GetPosition().x+Sprite.GetSize().x-1);
                MaskSprite2.SetX(MaskSprite.GetPosition().x+MaskSprite.GetSize().x);
            }else if(Sprite2.GetPosition().x > Sprite2.GetSize().x){
                Sprite2.SetX(Sprite.GetPosition().x-Sprite.GetSize().x+1);
                MaskSprite2.SetX(MaskSprite.GetPosition().x-MaskSprite.GetSize().x);
            }


        //GÖR UPPDATERINGAR
        ///////////////////////

        //Placera muspekarbilden på rätt position
        Pointer.SetPosition(App.GetInput().GetMouseX(), App.GetInput().GetMouseY());



        //SKRIV UT
        ///////////////////
        App.Draw(Sprite);
        App.Draw(Sprite2);
        App.Draw(Pointer);
        App.Display();
    }

    ///////////////////////////
    // E N D
    ///////////////////////////
    return EXIT_SUCCESS;
}
Till överst på sidan Gå ner
 
Projekt 1: Peka & klicka -äventyr
Till överst på sidan 
Sida 1 av 1

Behörigheter i detta forum:Du kan inte svara på inlägg i det här forumet
Fryshuset Gamer Forum :: Programmering :: Koder-
Hoppa till: