Witam. Jestem początkujący w programowaniu, ostatnio zacząłem sobie robić grę (tekstową, dla zabawy) i natrafiłem na problem z zapisem do struktury. Mianowicie po wykonaniu funkcji atak wszystkie parametry ze struktury wracają do swojego poprzedniego stanu.
A gdy wykonuję Case 2(z ucieczką) jest tak jak powinno. Jak to naprawić?
PS. Wiem, że program jest jeszcze niedopracowany, ale na nic rozbudowywanie go jeśli tego nie naprawię.
Oto kod:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Bron{
char nazwa[50];
int DMG;
int DEF;
};
struct statyc{
char nazwa[50];
int HP;
int ATK;
int DEF;
int Kasa;
struct Bron swd;
struct Bron bow;
struct Bron shd;
};
struct statyp{
char nazwa[50];
int HP;
int ATK;
int DEF;
int Kasa;
};
struct statyc X = { "Janek", 100, 15, 5, 100, "Sun Sword +7", 0, 3,"Looong Bow +3",3,0,"Drzwiod karczmy",0,3};
struct statyp Ugabuga = { "Ugabuga", 35, 15, 10, 100,};
struct statyp Makumbaska = { "Makumbaska", 35, 10, 10, 10,};
int atak(struct statyc X, struct statyp Y, int l)
{
X.DEF = X.DEF + X.swd.DEF + X.shd.DEF;
X.ATK = X.ATK + X.swd.DMG;
while(3){
l = Y.HP;
Y.HP = Y.HP - (X.ATK - Y.DEF);
l = l - Y.HP;
printf("Zadajesz %d Obrazen\n",l);
l = X.HP;
X.HP = X.HP - (Y.ATK - X.DEF);
l = l - X.HP;
printf("Otrzymujesz %d obrazen\n", l);
if(Y.HP <= 0){
printf("Wygrales! Zdobywasz %d kasy\n", Y.Kasa);
X.Kasa = X.Kasa + Y.Kasa;
printf("%d", X.HP);
break;}
if(X.HP <= 0){
printf("Dedasz! Twoje HP wynosi %d\n", X.HP);
printf("%d", X.HP);
break;}
}
printf("%d\n", X.HP);
printf("%d\n", X.DEF);
}
int main(int argc, char *argv[])
{
int uci, i, st, g;
char kier, wyb;
//,DEF: %d\nKasa: %d\
printf("The Switcher ver.0.1 BETA\n");
printf("Aby rozpoczac, wpisz 1\n");
printf("Wpisz imie\n");
scanf("%s", &X.nazwa);
printf("Twoje imie to %s!\n\n", X.nazwa);
printf("Znajdujesz sie na rozdrozu. Z lewej slychac UGABUGA! Gdzie idziesz?(lewo = 1/prawo = 2/prosto = 3)");
while(2){
if(kier > 5){
printf("Blad");
}
scanf("%d", &kier);
switch(kier){
case 1:{
printf("Idziesz w lewo. Atakuje cie %s! Co robisz? (Atak = 1. Ucieczka = 2", Makumbaska.nazwa);
scanf("%d", &wyb);
switch(wyb){
case 1:{
atak(X, Ugabuga, 0);
break;
}
case 2:{
X.HP = X.HP - 5;
printf("Uciekasz! Twoje HP po ucieczce wynosi %d\n", X.HP);
break;
}}}
case 3:{
printf("Ugabuga2");
break;}
case 4:{
printf("%d", X.HP);
break;}
}
}
system("pause");
return 0;
}