BlueBear icon

zadanie.c

BlueBear | PRO | 12/01/13 07:34:40 PM UTC | 0 ⭐ | 398 👁️ | Never ⏰ | []
C |

3.97 KB

|

None

|

0 👍

/

0 👎

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
 
typedef struct zbran
{
    unsigned int MUL;
    unsigned int SIZE;
    unsigned int BONUS;
}zbran_t;
 
typedef struct bojovnik
{
    unsigned int STR;
    unsigned int DEX;
    unsigned int ARM;
    unsigned int CON;
    unsigned int level;
    int HP;
    char *meno;
    struct zbran Zbran;
}bojovnik_t;
 
bojovnik_t gWar[1000];
zbran_t gWep[1000];
int i = 1;
int j = 1;
 
void parseInput(bojovnik_t *boj, int id);
unsigned int generator(int a, int b);
int getDamage(zbran_t weapon);
signed int fight(bojovnik_t *boj1, bojovnik_t *boj2);
void init(bojovnik_t *boj, int id);
void vypis(FILE *fp, bojovnik_t *b1);
unsigned int level(bojovnik_t *boj);
zbran_t getWeapon(int id);
bojovnik_t *getFighter(int id);
const char *getText(int id);
 
int main()
{
    int poc;
    srand(time(NULL));
    printf("%s", getText(6));
    scanf("%d", &poc);
    for(poc; poc > 0; poc--)
    {
        init(getFighter(i), i);
        parseInput(getFighter(i), i);
        i++;
    }
    while(fight(getFighter(1), getFighter(2)) == 2);
 
    return 0;
}
 
const char *getText(int id)
{
    char text[1000];
    FILE *fp = fopen("strings.txt", "r");
    while(id > 0)
    {
        fgets(text, 100, fp);
        id--;
    }
    fclose(fp);
    return text;
}
 
zbran_t getWeapon(int id)
{
    return gWep[id - 1];
}
 
bojovnik_t *getFighter(int id)
{
    return &gWar[id - 1];
}
 
unsigned int level(bojovnik_t *boj)
{
    return boj->STR + boj->DEX + boj->ARM + boj->CON;
}
 
void vypis(FILE *fp, bojovnik_t *b1)
{
    fprintf(fp,"\n");
    fprintf(fp,"%s\n", b1->meno);
    fprintf(fp,"%s%d\n", getText(2), b1->ARM);
    fprintf(fp,"%s%d\n", getText(3), b1->DEX);
    fprintf(fp,"%s%d\n", getText(4), b1->STR);
    fprintf(fp,"%s%d\n", getText(5), b1->HP);
}
 
signed int fight(bojovnik_t *boj1, bojovnik_t *boj2)
{
    int dmg = 0, advantage1, advantage2;
 
    dmg = 0;
    advantage1 = generator(0, 10) + boj1->DEX;
    advantage2 = generator(0, 10) + boj2->DEX;
 
    if(advantage1 == advantage2)
    {
        dmg = 0;
        return 2;
    }
    if(advantage1 > advantage2)
    {
        dmg = getDamage(boj1->Zbran) + boj1->STR - boj2->ARM;
        if(dmg <= 0)
        {
            dmg = 1;
        }
        boj2->HP -= dmg;
    }
    if(advantage1 < advantage2)
    {
        dmg = getDamage(boj2->Zbran) + boj1->STR - boj1->ARM;
        if(dmg <= 0)
        {
            dmg = 1;
        }
        boj1->HP -= dmg;
    }
    vypis(stdout, boj1);
    vypis(stdout, boj2);
    if(boj1->HP < 1)
    {
        return 1;
    }
    if(boj2->HP < 1)
    {
        return -1;
    }
    if(boj1->HP == boj2->HP)
    {
        return 0;
    }
    return 2;
}
 
int getDamage(zbran_t weapon)
{
    int i;
    int total = 0;
    for(i = 0; i < weapon.MUL; i++)
    {
        total += generator(1, weapon.SIZE);
    }
    return total + weapon.BONUS;
}
 
unsigned int generator(int a, int b)
{
    return a + rand() % (b-a+1);
}
 
void init(bojovnik_t *boj, int id)
{
    FILE *fp = fopen("fighters.txt", "r");
    int a = 0;
    char meno[100];
    while(id > 0)
    {
        fscanf(fp, "%s", &meno);
        fscanf(fp, "%d", &a);
        boj->STR = a;
        fscanf(fp, "%d", &a);
        boj->DEX = a;
        fscanf(fp, "%d", &a);
        boj->ARM = a;
        fscanf(fp, "%d", &a);
        boj->CON = a;
        boj->HP = 50 + 10 * boj->CON;
        boj->level = level(&boj);
        boj->meno = (char *)malloc(strlen(meno) * sizeof(char));
        strcpy(boj->meno, meno);
        id--;
    }
    fclose(fp);
}
 
void parseInput(bojovnik_t *boj, int id)
{
    unsigned char tempBuf[100];
    FILE *fp = fopen("weapons.txt", "r");
    while(id > 0)
    {
        fscanf(fp, "%s", &tempBuf);
        sscanf(tempBuf, "%d%*c%d%*c%d%[^\n]", &boj->Zbran.MUL, &boj->Zbran.SIZE, &boj->Zbran.BONUS);
        id--;
    }
}

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  • Syutrsz icon
    03/31/26 10:25:24 PM UTC
    text |

    0 B

    |

    0 👍

    /

    0 👎

    Best t33n active cpx link daily updates!
     Copy and paste the link in a new browser tab and then hit enter!
     https://crazyporn.@xxx/members/157354/?asgtbndr=1&play=true&spon=adworld&zone=400
     Remove the @ 
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎