[Pillola] Sono inesperto, come faccio a creare il mio primo videogioco? - Pag 9
  • In diretta da GamesVillage.it
    • News
    • -
    • In Evidenza
    • -
    • Recensioni
    • -
    • RetroGaming
    • -
    • Anteprime
    • -
    • Video
    • -
    • Cinema

Pag 9 di 13 PrimoPrimo ... 6789101112 ... UltimoUltimo
Visualizzazione risultati da 121 a 135 di 184

Discussione: [Pillola] Sono inesperto, come faccio a creare il mio primo videogioco?

Cambio titolo
  1. #121
    Utente
    Registrato il
    02-06
    Località
    ...
    Messaggi
    4.972
    Citazione Tommy_2 Visualizza Messaggio
    Ora una cosa vorrei riuscire a creare... praticamente vorrei avere maggior controllo sulla fine della camera. Ad esempio aggiungere che appena il quadrato raggiunge uno degli estremi, comparirà al suo opposto (una sorta di snake)
    Per quello ti basta controllare ogni frame le coordinate del quadrato.
    Se superano lo schermo lo riposizioni all'altro estremo.

  2. #122
    TheEnigmist L'avatar di Tommy_2
    Registrato il
    04-05
    Località
    Italy
    Messaggi
    9.116
    Ho provato a compilare... funziona meglio però continua a non compilarmi le librerie esterne il Cmake :/

  3. #123
    Utente
    Registrato il
    02-06
    Località
    ...
    Messaggi
    4.972
    Citazione Tommy_2 Visualizza Messaggio
    Ho provato a compilare... funziona meglio però continua a non compilarmi le librerie esterne il Cmake :/
    CMake serve solo a creare il progetto di Visual Studio già impostato correttamente.
    Non compila.
    Inoltre i file dentro extlibs dovrebbero essere già compilati.
    Sono linkati in fase di compilazione da Visual Studio e basta.

  4. #124
    TheEnigmist L'avatar di Tommy_2
    Registrato il
    04-05
    Località
    Italy
    Messaggi
    9.116
    Infatti ho deciso di creare una seconda cartella "extlib" con tutte quelle librerie e le ho aggiunte al progetto. Ho messo poi sndfile.lib al linker, messo libsndfile.dll nella cartella di debug e tutto funziona bene
    Solo che se avvio il programma in debug mode da VS2010 parte tutto bene e anche il suono, solo che quando chiudo mi si apre una finestra di errore.
    Ti posto un immagine:
    Spoiler:

    in basso a destra c'è questo errore:
    "Eccezione first-chance a 0x76bca4b9 (ole32.dll) in SFML.exe: 0xC0000005: Violazione di accesso nella lettura del percorso 0xfeeefeee.
    Eccezione non gestita a 0x76bca4b9 (ole32.dll) in SFML.exe: 0xC0000005: Violazione di accesso nella lettura del percorso 0xfeeefeee."

    EDIT: forse ho capito l'errore... è che non chiudo il flusso di output audio e quindi il programma mi segnala che non c'è uno stop al file audio eseguito... credo!
    Ultima modifica di Tommy_2; 10-05-2011 alle 23:00:25

  5. #125
    Utente
    Registrato il
    02-06
    Località
    ...
    Messaggi
    4.972
    aloCLoseDevice() lancia una eccezzione.
    Prova a metterlo in un try catch, e stampati sulla console la stringa dell'eccezzione.
    Vedi se ti dà informazioni in più.

  6. #126
    TheEnigmist L'avatar di Tommy_2
    Registrato il
    04-05
    Località
    Italy
    Messaggi
    9.116
    Lo sai non ho mai visto prima d'ora il try catch?
    Quante cose si imparano fuori dai corsi :P

    Bhe visto che è la priam volta che sento paralre di try catch, dove lo devo schiaffare per avere più informazioni sull'errore?

    EDIT: questo è il codice sorgente
    Spoiler:
    Codice:
    #include <SFML/Graphics.hpp>
    #include <SFML/Audio.hpp>
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        
    
        //Creazione Finestra Applicazione
        sf::RenderWindow Game(sf::VideoMode::GetDesktopMode(),"Game",sf::Style::Fullscreen);
        
        Game.SetFramerateLimit(60);
    
        //Creazione Rettangolo
        sf::Shape box(sf::Shape::Rectangle(0, 0, 50, 50, sf::Color(127, 0, 0)));
    
        //Posizionamento di 'box'
        box.SetPosition(100, 100);
    
        sf::SoundBuffer Buffer;
        if (!Buffer.LoadFromFile("guitar_1.ogg"))
            return EXIT_FAILURE;
    
        
        // Create a sound instance and play it
        sf::Sound Sound(Buffer);
        Sound.Play();
    
    
        //Buffer Immagine
        sf::Image Image;
        if (!Image.LoadFromFile("image.png"))
        {
            return EXIT_FAILURE;
        }
    
        //Set Image Mask
        Image.CreateMaskFromColor(sf::Color(0, 255, 0, 255));
    
        //Creazione Sprite
        sf::Sprite Sprite;
    
        //Set Sprite Image
        Sprite.SetImage(Image);
    
        //Set Sprite Position
        Sprite.SetPosition(400,400);
    
        //Game Loop
        while (Game.IsOpened())
        {
            
            //Pulizia finestra
            Game.Clear(sf::Color(1,158,241));
    
            //Creazione Eventi
            sf::Event Event;
    
            //Eventi
            while (Game.PollEvent(Event))
            {
                //Uscita dal gioco
                if (Event.Type == sf::Event::Closed)
                {
                    Game.Close();
                }
                
                //ESC per chiudere l'applicazione!
                if (Game.GetInput().IsKeyDown(sf::Key::Escape))
                {
                    Game.Close();
                }
    
    
                if (Game.GetInput().IsMouseButtonDown(sf::Mouse::Left))
                {
                    if (Game.GetInput().IsKeyDown(sf::Key::A))
                    {
                        box.Move(-1,0);
                    }
                    else if (Game.GetInput().IsKeyDown(sf::Key::D))
                    {
                        box.Move(1,0);
                    }
                } 
                else if (Game.GetInput().IsMouseButtonDown(sf::Mouse::Right))
                {
                    if (Game.GetInput().IsKeyDown(sf::Key::A))
                    {
                        Sprite.Move(-1,0);
                    }
                    else if (Game.GetInput().IsKeyDown(sf::Key::D))
                    {
                        Sprite.Move(1,0);
                    }
                }
            }
    
            //Movimenti
            box.Move(1,0);
    
            //Inserimento 'box'
            Game.Draw(box);
    
            //Inserimento 'sprite'
            Game.Draw(Sprite);
    
            //Mostrare la finestra
            Game.Display();
        }
    
        system("pause");
        return EXIT_SUCCESS;
    }
    Ultima modifica di Tommy_2; 10-05-2011 alle 23:25:42

  7. #127
    Utente
    Registrato il
    02-06
    Località
    ...
    Messaggi
    4.972
    Probabilmente basta fare dopo la fine del "while" un'istruzione tipo:
    Sound.Stop();

    Cmq in questo codice non puoi fare molto in realtà.
    Perchè l'eccezzione e nel Distruttore, e non lo chiami esplicitamente.

    Vedi se effettivamente fermando esplicitamente la riproduzione non crasha.

  8. #128
    TheEnigmist L'avatar di Tommy_2
    Registrato il
    04-05
    Località
    Italy
    Messaggi
    9.116
    Citazione CorralX Visualizza Messaggio
    Probabilmente basta fare dopo la fine del "while" un'istruzione tipo:
    Sound.Stop();

    Cmq in questo codice non puoi fare molto in realtà.
    Perchè l'eccezzione e nel Distruttore, e non lo chiami esplicitamente.

    Vedi se effettivamente fermando esplicitamente la riproduzione non crasha.
    In realtà non ho nessun crash... se lo eseguo fuor da VS2010 non ho nessun tipo di problema... Se lo eseguo in debug mode (F5). L'istante prima di finire il programma VS2010 mi mostra quella finestra.
    Bha... sinceramente non so cosa voglia da me
    Ho provato a mettere anche Sound.Stop(); fuori il ciclo while, VS mi da sempre quel messaggio, mentre eseguirlo fuori l'ambiente VS va tutto bene!

  9. #129
    Utente
    Registrato il
    02-06
    Località
    ...
    Messaggi
    4.972
    Citazione Tommy_2 Visualizza Messaggio
    In realtà non ho nessun crash... se lo eseguo fuor da VS2010 non ho nessun tipo di problema... Se lo eseguo in debug mode (F5). L'istante prima di finire il programma VS2010 mi mostra quella finestra.
    Bha... sinceramente non so cosa voglia da me
    Ho provato a mettere anche Sound.Stop(); fuori il ciclo while, VS mi da sempre quel messaggio, mentre eseguirlo fuori l'ambiente VS va tutto bene!
    In realtà probabilmente crasha mentre si sta chiudendo, e senza VS che ti avvisa, non te ne accorgi.
    Cmq è strano.
    Da quel che leggo non richiede nessun tipo di clean up.
    Non dovrebbe crashare.

  10. #130
    TheEnigmist L'avatar di Tommy_2
    Registrato il
    04-05
    Località
    Italy
    Messaggi
    9.116
    Citazione CorralX Visualizza Messaggio
    In realtà probabilmente crasha mentre si sta chiudendo, e senza VS che ti avvisa, non te ne accorgi.
    Cmq è strano.
    Da quel che leggo non richiede nessun tipo di clean up.
    Non dovrebbe crashare.
    Il problema che ho lo hanno un po' tutti a quanto vedo sul forum. E Laurent ci sta lavorando sopra per risolverlo... nel frattempo continuo a creare stronzate per comprendere al meglio queste librerie xD

  11. #131
    Utente
    Registrato il
    02-06
    Località
    ...
    Messaggi
    4.972
    Ah beh, allora è un bug delle 2.0
    Pazienza tanto crasha alla fine XD

  12. #132
    TheEnigmist L'avatar di Tommy_2
    Registrato il
    04-05
    Località
    Italy
    Messaggi
    9.116
    Come non detto... improvvisamente ora crasha all'inizio <.< Bastardo!
    Noto che i movimenti fatti con .move vanno in base ai frame.
    Più framerate più velocità...
    Per evitare ho messo un framelimit a 60!

  13. #133
    Utente
    Registrato il
    02-06
    Località
    ...
    Messaggi
    4.972
    Citazione Tommy_2 Visualizza Messaggio
    Come non detto... improvvisamente ora crasha all'inizio <.< Bastardo!
    Noto che i movimenti fatti con .move vanno in base ai frame.
    Più framerate più velocità...
    Per evitare ho messo un framelimit a 60!
    Quello è ovvio, perchè il codice dentro il while viene eseguito ogni frame.
    Più frame hai, più volte viene eseguito il codice, più volte sposti gli oggetti.
    La soluzione è moltiplicare il movimento per il tempo passato dall'ultimo frame.
    Così tutto l'aggiornamento sarà una funzione del tempo, e diventa indipendente dal frame rate.
    Dai un occhio alla classe Clock, per sapere quanto tempo passa ogni frame.

  14. #134
    TheEnigmist L'avatar di Tommy_2
    Registrato il
    04-05
    Località
    Italy
    Messaggi
    9.116
    Citazione CorralX Visualizza Messaggio
    Quello è ovvio, perchè il codice dentro il while viene eseguito ogni frame.
    Più frame hai, più volte viene eseguito il codice, più volte sposti gli oggetti.
    La soluzione è moltiplicare il movimento per il tempo passato dall'ultimo frame.
    Così tutto l'aggiornamento sarà una funzione del tempo, e diventa indipendente dal frame rate.
    Dai un occhio alla classe Clock, per sapere quanto tempo passa ogni frame.
    Ah si, mi ricordo di sta parte nel tutorial, usare il clock per spostare ogni elemento... mi sa che uso quello, lasciando i miliardi di frame liberi così i movimenti dovrebbero essere molto più fluidi!
    Per quanto riguarda il problema dell'audio non so come risolvere, priam non mi crashava subito, ora si :/ che palle

  15. #135
    Utente
    Registrato il
    02-06
    Località
    ...
    Messaggi
    4.972
    https://github.com/LaurentGomila/SFML/issues/30

    Purtroppo come vedi è un bug di cui è ha conoscenza e che il prossimo update fixerà.
    Nel frattempo prova ad usare la classe Music ( http://www.sfml-dev.org/documentatio...f_1_1Music.htm ) anzichèla classe sound, l'implementazione è leggermente diversa, magari non soffre dello stesso bug.

Pag 9 di 13 PrimoPrimo ... 6789101112 ... UltimoUltimo

Regole di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •