PDA

View Full Version : [c] Problema parametri funzione?


BlackLukeS
16-02-2012, 21:37
Ciao a tutti, ho un problemino con un gioco stupidissimo che ho pensato. In pratica ci sono due player che in modalità 1vs1 si attaccano a vicenda, il problema è che man mano che aumentano i turni, la vita dei player non scende come dovrebbe, ma sembra ci siano "sessioni" diverse ogni due turni. Mi aiutereste?

#include <stdio.h>


typedef struct pl{
int vita;
int danno;
int frecce;

}Player;

void attacca(Player * firstPlayer, Player * secondPlayer);

int main(){

int dec;

do{
printf("Scegli modalita': \n\n 1) - 1vs1 \n\n");
scanf("%d", &dec);
printf("\n");


}while(dec < 0 || dec > 10);
if(dec == 1){

int turno = -1;
Player giocatore1;
Player giocatore2;
giocatore1.vita = 45;
giocatore2.vita = 60;
giocatore1.danno = 5;
giocatore2.danno = 2;
giocatore1.frecce = 34;
giocatore2.frecce = 40;

while(giocatore1.vita != 0 || giocatore2.vita != 0){
turno+=1;
if (turno%2 == 0){
printf("Turno %d giocatore 1, INVIO per attacco\n\n", turno);
attacca(&giocatore1, &giocatore2);
getch();}

else{
printf("Turno %d giocatore 2, INVIO per attacco\n\n", turno);
attacca(&giocatore2, &giocatore1);
getch();}

}

}

}



void attacca(Player * firstPlayer, Player * secondPlayer){

firstPlayer->frecce -=1;
secondPlayer->vita = secondPlayer->vita - firstPlayer->danno;
printf("vita P1: %d, frecce P1: %d\n", firstPlayer->vita,firstPlayer->frecce);
printf("vita P2: %d, frecce P2: %d\n\n", secondPlayer->vita,secondPlayer->frecce);



}

GByTe87
16-02-2012, 22:16
Metti le graffe mancanti (probabilmente questo è solo uno stralcio del codice e le hai copia-incollate male) e sostituisci
while(giocatore1.vita != 0 || giocatore2.vita != 0){
...
}
con
while(giocatore1.vita > 0 && giocatore2.vita > 0){
...
}

Per il resto a me funziona.

BlackLukeS
17-02-2012, 07:25
Ecco questo era un'altro errore, però se vedi i punti vita, quando al primo turno il giocatore1 atacca l'altro vengono tolti i punti vita, ma al turno successivo non "tiene conto" del turno precedente ed è come se fosse il primo turno. Non riesco a capire se è perchè attacca() fa una copia strana delle variabili..

BlackLukeS
17-02-2012, 09:32
Ho risolto, mi ero fissato con il fatto che p1 e p2 venissero visualizzati sempre come giocatore1 e giocatore2 senza alternarsi..

tecno789
17-02-2012, 21:49
carina la pensata, anche perchè mi sono sempre domandato se fosse possibile creare un qualche giochino di intrattenimento con il C. Se posso consigliarti, non ti conviene magari mettere una funzione rand(), perchè perde sempre il giocatore 1 :D