Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #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--;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement