Il programma in c++ crasha durante lo svolgimento?

Sto cercando di creare un simulatore del gioco degli scacchi in c++ utilizzando la libreria grafica graphics.h, molto elementare ma semplice da utilizzare.

Il programma nel mezzo dello svolgimento smette di funzionare. Il problema avviene in diversi casi, sia durante la funzione che sposta i pezzi, sia durante la funzione che evidenzia le caselle accessibili.

Il programma si struttura su un while infinito che ad ogni ciclo controlla che il tasto sinistro sia stato premuto, in tal caso vengono calcolate le coordinate del mouse e della casella della griglia corrispondente che col mouse si vuole selezionare. Dopodiché si indaga sull'accessibilità di quella casella secondo le regole del gioco e infine si stampa il pezzo in quella casella.

Non vengono utilizzate texture ma funzioni che ho creato per disegnare ciascun pezzo stilizzato. Ho già provato a mettere Sleep al while infinito e ad alcuni for che gestiscono le matrici che contengono le coordinate di tutti i pezzi-

5 risposte

Classificazione
  • 2 mesi fa

    Alla fine ho risolto. Non c'erano puntatori puntanti a NULL ma semplicemente la funzione GetAsyncKeyState(VK_LBUTTON) dopo alcuni secondi di utilizzo dell' applicazione ritornava senza motivo sempre true e quindi il programma andava in loop infinito e crashava. Ho risolto affiancando alla funzione, in caso di sola attesa dell'input un getch().

  • 42
    Lv 7
    2 mesi fa

    Hai provato a collegare il debugger quando lanci il programma? 

    - http://www.pierotofy.it/pages/guide_tutorials/CPlu...

  • 2 mesi fa

    Ciao,  è buona consuetudine evitare i cicli infiniti non gestiti.

    Hai pensato di utilizzare un handler invece di un ciclo infinito ?

  • 2 mesi fa

    E come diamine faremmo a saperlo? Comunque concordo con Nick la maggior parte delle volte i problemi sono puntatori a Null e quel farabutto di segmentation fault.

  • Che ne pensi delle risposte? Puoi accedere per votare la risposta.
  • Nick
    Lv 7
    2 mesi fa

    inifite cause possibili, ma le prime di solito sono Null pointer e memoria esaurita...

Altre domande? Fai una domanda e ottieni le risposte che cerchi.