|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Mar 2003
Città: Rimini
Messaggi: 1842
|
Giochino in c++, ho un problema nel codice...
Allora questo è il codice che mi da problema:
int main(int argc, char *argv[]) { void carica_oggetti(); void gestione_eventi(); carica_engine(risoluzione_x, risoluzione_y, bit_colori, modalita); carica_oggetti(); //loop principale while (GetAsyncKeyState(VK_ESCAPE)==0){ fps=calcola_fps(); pulisci_schermo(); gestione_eventi(); metti_su_schermo(); } chiudi_engine(); return 0; } /*--------------------------------FUNZIONI------------------------------------*/ //////////////////////////////////////////////////////////////////////////////// /////////////////////*GESTIONE EVENTI*///////////////////////////////// //loop principale void gestione_eventi(){ disegna(sfondo, 0, 0); disegna(scacchiera, 100, 100); disegna(giocatore, coord_xg, coord_yg, 40, 40, 0, 0); disegna(pc, coord_xp, coord_yp, 40, 40, 0, 0); scegli_mossa(); //il problema fondamentalmente è qui imput_tastiera(); } ///////////////////////////////*IMPUTTASTIERA*/////////////////////////////////// void imput_tastiera ( ) { if(mossa==1) { //PULSANTI GIOCATORE if (GetAsyncKeyState(VK_UP)) { if(Ncasella>10){Ncasella=Ncasella-10;} scelta_casella(); disegna(giocatore, coord_xg, coord_yg, 40, 40, 0, 0); } if (GetAsyncKeyState(VK_DOWN)) { if(Ncasella<91){Ncasella=Ncasella+10;} scelta_casella(); disegna(giocatore, coord_xg, coord_yg, 40, 40, 0, 0); } if (GetAsyncKeyState(VK_LEFT)) { if(Ncasella>1){Ncasella=Ncasella-1;} scelta_casella(); disegna(giocatore, coord_xg, coord_yg, 40, 40, 0, 0); } if (GetAsyncKeyState(VK_RIGHT)) { if(Ncasella<99){Ncasella=Ncasella+1;} scelta_casella(); disegna(giocatore, coord_xg, coord_yg, 40, 40, 0, 0); } } } Ho omesso molte cose perchè non utili per capire il problema, cmq nel codice non ci sono errori tutto funziona se faccio partire. Il problema è: questo codice mi fa muovere un quadrato che rappresenta il giocatore 1 su una scacchiera, quando parte il programma io il giocatore lo muovo ma il movimento è continuo, cioè io devo fare in modo che premendo a destra (ad es.) il quadrato si muova a destra di una casella anche se tengo premuto, mentre per come è impostato ora si muove a destra fino all'ultima cassella a destra della scacchiera. La cosa è problematica perchè tutto è dentro un ciclo while e non posso fare una cosa del tipo creare una variabile che è impostata a 0 e dopo che mi ha chiamato la funzione imput tastiera(che viene eseguita solo se quella variabile è a 0) si mette a 1 e la volta successiva che devo muovermi la reimposto a 0. Non so quanto possiate aver capito di quello che ho detto ma sono un attimo fuso, se necessita posso postare l'intero codice. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:03.