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;
- int HP;
- struct zbran Zbran;
- }bojovnik_t;
- void parseInput(const char *input, bojovnik_t *boj);
- 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 hp);
- void vypis(FILE *fp, bojovnik_t b1, bojovnik_t b2);
- int main()
- {
- int hp1, hp2;
- printf("nacitajte zivoty pre jednotlivych bojovnikov:\n");
- scanf("%d %d", &hp1, &hp2);
- fflush(stdin);
- srand(time(NULL));
- bojovnik_t *bojovnik1 = (bojovnik_t *)malloc(sizeof(bojovnik_t));
- bojovnik_t *bojovnik2 = (bojovnik_t *)malloc(sizeof(bojovnik_t));
- init(bojovnik1, hp1);
- init(bojovnik2, hp2);
- parseInput("2d6+1\n", bojovnik1);
- parseInput("2d6+1\n", bojovnik2);
- while(fight(bojovnik1, bojovnik2) == 2);
- return 0;
- }
- void vypis(FILE *fp, bojovnik_t b1, bojovnik_t b2)
- {
- fprintf(fp,"\n");
- fprintf(fp,"Bojovnik1\t\tBojovnik2\n");
- fprintf(fp,"arm=: %d\t\t\tarm=: %d\n", b1.ARM, b2.ARM);
- fprintf(fp,"dex=: %d\t\t\tdex=: %d\n", b1.DEX, b2.DEX);
- fprintf(fp,"str=: %d\t\t\tstr=: %d\n", b1.STR, b2.STR);
- fprintf(fp,"hp=: %d\t\t\thp=: %d\n", b1.HP, b2.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, *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 hp)
- {
- boj->STR = generator(0, 10);
- boj->DEX = generator(0, 10);
- boj->ARM = generator(0, 10);
- boj->HP = hp;
- }
- void parseInput(const char *input, bojovnik_t *boj)
- {
- unsigned char *tempBuf = input;
- sscanf(tempBuf, "%d%*c%d%*c%d%[^\n]", &boj->Zbran.MUL, &boj->Zbran.SIZE, &boj->Zbran.BONUS);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement