18/06/11 14:09
comina8
Ciao a tutti ho scritto questo semplice codice per iniziare la programmazione di Thread:
Facendolo girare però ogni tanto viene stampata la 'x' o il trattino sbagliati
e soprattutto quando si sparano più colpi insieme vengono fatte delle stampe
assurde. Il codice mi sembra giusto, cosa posso aver sbagliato?
EDIT:
Scusa anthony015 ma ho premuto per sbaglio INVIO e non riesco a modificare.
Comunque penso di si perchè ogni thread usa variabili diverse.
Forse per iniziare potrei mettere come parametro alla funzione spara la x_t
almeno non devo più assegnarla ad ausx.
Provo poi ti dico.
Grazie comunque per la risposta =)
#include <stdio.h> #include <stdlib.h> #include <process.h> #include "mia_libreria.h" bool esci=false; unsigned char x_b=1, y_b=1; unsigned char x_t=1, y_t=20; void spara() { unsigned char i, ausx=x_t; for(i=y_t-2;i>=1;i--) { delay(100); gotoxy(ausx,i+1); putchar(' '); gotoxy(ausx,i); putchar('*'); } if(x_b==ausx) { gotoxy(0,0); printf("Hai vinto!"); esci=true; } else { gotoxy(ausx,i); putchar(' '); } chiudi_thread(); } void muovi_x() { bool indietro; while(!esci) { delay(100); if(indietro) { gotoxy(x_b,y_b); putchar(' '); x_b--; gotoxy(x_b,y_b); putchar('x'); } else { gotoxy(x_b,y_b); putchar(' '); x_b++; gotoxy(x_b,y_b); putchar('x'); } if(x_b==60) indietro=true; else if(x_b==1) indietro=false; } chiudi_thread(); } int main() { _beginthread(muovi_x,0,NULL); unsigned char tasto; while(!esci) { tasto=getch(); if(tasto==27) esci=true; else if(tasto==75) { gotoxy(x_t,y_t); putchar(' '); x_t--; gotoxy(x_t,y_t); putchar('_'); } else if(tasto==77) { gotoxy(x_t,y_t); putchar(' '); x_t++; gotoxy(x_t,y_t); putchar('_'); } else if(tasto==' ') { _beginthread(spara,0,NULL); } } return 0; }
Facendolo girare però ogni tanto viene stampata la 'x' o il trattino sbagliati
e soprattutto quando si sparano più colpi insieme vengono fatte delle stampe
assurde. Il codice mi sembra giusto, cosa posso aver sbagliato?
EDIT:
Scusa anthony015 ma ho premuto per sbaglio INVIO e non riesco a modificare.
Comunque penso di si perchè ogni thread usa variabili diverse.
Forse per iniziare potrei mettere come parametro alla funzione spara la x_t
almeno non devo più assegnarla ad ausx.
Provo poi ti dico.
Grazie comunque per la risposta =)
Ultima modifica effettuata da comina8 23/06/11 10:30
aaa