SFML community forums

Help => General => Topic started by: Tigre Pablito on May 09, 2013, 12:51:42 pm

Title: My Mario game crashes if I click the mouse
Post by: Tigre Pablito on May 09, 2013, 12:51:42 pm
Hello Ladies and Guys from SFML
I made a Mario game with C# .NET and SFML,

https://www.dropbox.com/s/akpuofnp6tdro7e/Super%20Mario%20Bros%20by%20Pablito.rar

My problem is that if I click the mouse while it is running, it immediatly crashes.
I tried to disable the mouse but just was able to set it invisible
If the applicaction is minimized it also crashes at restoring
A letter appears like "Your app stopped working", but at its background the app still running Ok but the screen has turned gray ... and if I press "Wait for the app to respond", the letter leaves and appears once and again

If you want, you can see this by yourselves, downloading and running the program

Could you help me,  and my program to be mouse clicking safe?
Thank you very much

Pablo Marty (Bs As, Argentina)

PS Now I m working in a very nicer version
Title: Re: My Mario game crashes if I click the mouse
Post by: Grimshaw on May 09, 2013, 02:03:12 pm
We cant' see why it crashes from a binary.. We 'd need code..
Title: Re: My Mario game crashes if I click the mouse
Post by: Tigre Pablito on May 09, 2013, 04:15:25 pm
Hello
the code is quite extense, but here you have the link to it (is C#)

https://www.dropbox.com/s/5ejes56atnwbm40/CODIGO%20FUENTE.rar

it just builds the exe file,
if you want to test the program, there should be the data files, that is the folders GRAFICOS and MUSICA at the same directory level than the exe, and also the dll s, as it is in the link I passed in the previous post

Warning: the code is quite untidy; and if needed to translate it to English, please tell me and in 1 or 2 days I will ... I m sorry, sometimes neither do I understand my code

Thanks for replying
Pablo
Title: Re: My Mario game crashes if I click the mouse
Post by: zsbzsb on May 09, 2013, 05:23:48 pm
Please do not just give us your entire project and ask us to find your problem. I can safely say most of us probably do not have time to dig through your project to find what you are doing wrong. Please read this (http://en.sfml-dev.org/forums/index.php?topic=5559.0) and then post a complete and minimal example that causes a crash when the mouse is clicked.

On a side note, its usually better if you host your code in a git repository like github or bitbucket rather than using dropbox.
Title: Re: My Mario game crashes if I click the mouse
Post by: eigenbom on May 10, 2013, 12:36:58 am
I m sorry, sometimes neither do I understand my code

Well, there's your problem. :)

The best way to solve any issues like this, is to create the simplest possible program you can that causes the error to occur. By that time hopefully you would have found the problem, but if not, then you should post the code here.

But at a guess, I would say the problem is in your event handler, are you checking the event.type when you process the events? (As is shown in the tutorials)

Title: Re: My Mario game crashes if I click the mouse
Post by: Tigre Pablito on May 10, 2013, 07:57:05 am
I m not using the Events, I m just using Keyboard.IsKeyPressed(), ... I feel I can guess it s wrong? Anyway, the game works. Could this be the cause of the crash? I don t suposse that an input that is not read by the program may cause it crash
Well, I ll see if using the Events solves my problem, ... I was ignoring them cos I have the intention to use multiple threads in my program soon, and thought that using that class would make it impossible ... I suposse I m wrong in this too
Then I tell you
Thank you
Title: Re: My Mario game crashes if I click the mouse
Post by: zsbzsb on May 10, 2013, 11:02:26 am
Please post a complete a minimal CODE example that causes this problem, without we can NOT help you.


I m not using the Events, I m just using Keyboard.IsKeyPressed(), ... I feel I can guess it s wrong?
Quote
I made a Mario game with C# .NET and SFML
Quote
but at its background the app still running Ok but the screen has turned gray ... and if I press "Wait for the app to respond", the letter leaves and appears once and again



Without a minimal example I can only guess. If you are using the .NET package for SFML you still need to call

RenderWindow.DispatchEvents()

If you do not call that then the system event queue will stack up in your window unprocessed and cause windows to think that your application is not responding.



Quote
I was ignoring them cos I have the intention to use multiple threads in my program soon, and thought that using that class would make it impossible ...

Apparently you are new to programming (as this thread shows), so I highly recommend you do not touch multi threading. Multiple threads just add unneeded complexity for no gain to a program. Very rarely will a 2d game need to have multiple threads, so unless you discover a bottle neck that threading could solve do not multi thread your application. Be wary of premature optimization.
Title: Re: My Mario game crashes if I click the mouse
Post by: Tigre Pablito on May 10, 2013, 10:18:50 pm
No, I m a programmer since I was 16, now I m 33. Although I know I still need to learn so much, specially what concerns to multi threading, but I ll follow your advise, I won t use it, you re right that s not necesary

I ll do this, I ll try to use Event Handling, and then if the problem doesnt go away, I ll write a minimal but complete code example that recreates the application crash at mouse clicking, I suposse you guessed well that there is an overflow in the event queue

Could you tell me where to find the Event handling tutorial, or pass me the link? (for C# .NET) I can t find it with Google
I tried this:

App.KeyPressed += new EventHandler(App_KeyPressed);
App.KeyReleased += new EventHandler(App_KeyReleased);
App.DispatchEvents();

But the events were not launched, keys doesn t reply, I don t know how to use them in SFML

Thank you for all
////
Have you seen my game? I know it isn t the most professional, and I can t draw very well, ... but I think it s quite interesting ... What s your opinion?
Title: Re: My Mario game crashes if I click the mouse
Post by: zsbzsb on May 11, 2013, 02:12:45 am
No, I m a programmer since I was 16, now I m 33. Although I know I still need to learn so much, specially what concerns to multi threading, but I ll follow your advise, I won t use it, you re right that s not necesary

Yes that is a good idea, I am sure you can find a lot of information on that in google.



Quote
I ll do this, I ll try to use Event Handling, and then if the problem doesnt go away, I ll write a minimal but complete code example that recreates the application crash at mouse clicking, I suposse you guessed well that there is an overflow in the event queue

Could you tell me where to find the Event handling tutorial, or pass me the link? (for C# .NET) I can t find it with Google
I tried this:

App.KeyPressed += new EventHandler(App_KeyPressed);
App.KeyReleased += new EventHandler(App_KeyReleased);
App.DispatchEvents();

But the events were not launched, keys doesn t reply, I don t know how to use them in SFML


You can find .NET examples in the SFML .NET download.
Also make sure you call DispatchEvents() in your main game loop. It needs to be called every loop to clear the event queue.
Here is an example of how the handling should work.

static void Main()
        {

            window.Closed     += new EventHandler(OnClosed);
            window.KeyPressed += new EventHandler<KeyEventArgs>(OnKeyPressed);
            window.Resized    += new EventHandler<SizeEventArgs>(OnResized);

           
            while (window.IsOpen())
            {
               
                window.DispatchEvents();
                // Draw Here
                window.Display();
            }
        }

        static void OnClosed(object sender, EventArgs e)
        {
            //close here
        }

        static void OnKeyPressed(object sender, KeyEventArgs e)
        {
            //key pressed
        }

        static void OnResized(object sender, SizeEventArgs e)
        {
            //view port resized
        }



Quote
Have you seen my game? I know it isn t the most professional, and I can t draw very well, ... but I think it s quite interesting ... What s your opinion?

I haven't had time to look at it yet, with it being my last week of school and having a lot to work on at my job. You should make a thread for it in the projects section to share it with everyone  :D
Title: Re: My Mario game crashes if I click the mouse
Post by: Tigre Pablito on May 11, 2013, 05:43:52 pm
I used the event handling as you told me and now the problem disappeared  :), you were right that Windows thought my app wasn t responding cos of the stack up of events, so I thank you, and all those who replied, and also those who have viewed this post (or thread), I see it has more views than most ... I don t know if many ladies and guys from SFML would have been seing my Super Mario game  8) ... I ll never know ... anyway, get ready for the next version, it s much better  ;)

There s another problem, that happened 2 times to me, on other persons' PCs, and don t know on how many others could happen, cos I want to distribute my game:
The application crashes and the command shell says:
"Unhandled exception: System.IO.FileNotFoundException: Unable to load file or assembly ´sfml-graphics-2´, Version 0.0.0.0, PublicKeyToken = null, neither one of its dependencies. System can t find the file.
.......
AVS: The assembly linking register is disabled.
To enable the assembly linking error register, set the register value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) as 1.
Note: Exists a performance decrease related to assembly linking error register.
To disable this issue, delete the register value [HKLM\Software\Microsoft\Fusion!EnableLog]."

This nice letter is in Spanish, I hope my translation is Ok.

The OS in what this occurs is Windows 7. Mine is W 7 too, and here my program runs fine. I know very little about OS s ... I think I should enable or disable something, as it says in the letter, but don t know what nor where, nor how ... Could you help, once again?  ;D