1.) Get rid of using namespace std since you are using .h's
2.) initalize the names as char name[20]
3.) use strcpy() not = for strings
Corrected Code:
Code:
#include <stdio.h>
#include <string.h>
#include <iostream.h>
#include <conio.h>
#include <fstream.h>
#include <stdlib.h>
int input;
int menu()
{
cout << "Make a choice: " <<endl;
cout << "1. fight" <<endl;
cout << "2. run" <<endl;
cout << "3. save" <<endl;
return 0;
}
struct ENEMY
{
char name[20];
int hp;
int atk;
}baddy;
struct HERO
{
char name[20];
int hp;
int atk;
}goodguy;
void save()
{
ofstream jin;
jin.open("player.txt");
jin << "<NAME> " << goodguy.name << endl;
jin << "<ATK> " << goodguy.atk << endl;
jin << "<HP> " << goodguy.hp << endl;
jin << "<ENEMY> " << baddy.name << endl;
jin.close();
}
int main(int argc, char *argv[])
{
strcpy(goodguy.name, "baddy");
baddy.hp=10;
baddy.atk=3;
strcpy(goodguy.name, "Akira");
goodguy.hp=10;
goodguy.atk=3;
cout << "BATTLE" << endl;
while(goodguy.hp>0 || baddy.hp>0)
{
cout << "What to do: ";
menu();
cin >> input;
switch(input)
{
case 1:
{
int hdamage= rand() % goodguy.atk;
int edamage= rand() % baddy.atk;
cout << goodguy.name <<"attacked causing" << hdamage <<endl;
baddy.hp= baddy.hp - hdamage;
cout << baddy.name<< "attacked causing" << edamage <<endl;
goodguy.hp= goodguy.hp - edamage;
cout << "Your health is now: " << goodguy.hp;
cout << endl << baddy.name<<"'s health is now" << baddy.hp <<endl;
getchar();
}
break;
case 2:
{
cout << "Your Coward";
getchar();
}
break;
case 3:
{
save();
}
break;
default:
cout << "Please make a choice" << endl;
}
}
return 0;
}