#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
0 B
|👍
/👎
0 B
|0 👍
/0 👎
0 B
|👍
/👎