Lakhai

Member
  • Content count

    2
  • Joined

  • Last visited

Community Reputation

106 Neutral

About Lakhai

  • Rank
    Newbie
  1. Damaging Enemy AI

    Well, here's my entire code: Main.cpp [SPOILER] [CODE] #include <iostream> #include "Player.cpp" #include "Enemy.cpp" using namespace std; int main() { int opc; Player* player; Enemy enemy; player->SetHealth(); cout << "What's your name?" << endl; player->SetName(); cout << endl << "Your name is: " << player->name << " and your health is: " << player->GetHealth() << endl; // First enemy enemy.SetHealth(); enemy.curhealth=100; cout << endl << "An enemy appears!" << endl; cout << "Enemy name: Chobi." << endl << "Enemy HP: " << enemy.GetHealth() << "." << endl; option: cout << endl << "What to do?" << endl; cout << "1. Attack #1." << endl; cin >> opc; if (opc==1) player->Attack(enemy); goto option; return 0; } [/CODE] [/SPOILER] Player: [SPOILER] [CODE] // Player.h #ifndef PLAYER_H_INCLUDED #define PLAYER_H_INCLUDED #include <cstring> #include "Enemy.h" using namespace std; class Player { public: int health, curhealth, atk1, atk2; string name; int GetHealth(); void SetHealth(); void TakeDamage(int); void SetName(); void Attack(Enemy); }; #endif // PLAYER_H_INCLUDED // Player.cpp #include <iostream> #include <cstdlib> #include <ctime> #include "Player.h" using namespace std; int urand(int min, int max) { srand(time(NULL)); return rand() % (max - min + 1) + min; } void Player::SetHealth() { health = urand(100, 200); curhealth = health; } int Player::GetHealth() { return curhealth; } void Player::TakeDamage(int damage) { curhealth -= damage; } void Player::SetName() { getline (cin, name); } void Player::Attack(Enemy enemy) { int atk = urand(10, 30); enemy.curhealth = enemy.TakeDamage(atk); cout << endl << "Attacked for: " << atk << "." << endl; cout << "Enemy HP: " << enemy.curhealth << "." << endl; } [/CODE] [/SPOILER] Enemy: [SPOILER] [CODE] // Enemy.h #ifndef ENEMY_H_INCLUDED #define ENEMY_H_INCLUDED #include <cstring> #include "Player.h" using namespace std; class Enemy { public: int health; int curhealth, atk1; string name; int GetHealth(); void SetHealth(); void TakeDamage(int); }; #endif // ENEMY_H_INCLUDED // Enemy.cpp #include <iostream> #include "Enemy.h" using namespace std; void Enemy::SetHealth() { health = urand(100, 120); curhealth = health; } int Enemy::GetHealth() { return curhealth; } void Enemy::TakeDamage(int damage) { curhealth -= damage; } [/CODE] [/SPOILER]
  2. Damaging Enemy AI

    Hello everyone! This is my first topic, since I've started reading these forums a while ago. So I finally felt ready to start a little "game" project in C++; I've been using this language on and off for a bit, and I thought a project would help me understand it and practice it more. What I want to do is a text-based RPG (focusing more on combat system, like Pokémon for example) and for now I'm just trying to get the basics to work. You can make a character, name him and the game will randomly generate an amount of HP for you. So I made this for the enemy: [CODE] class Enemy { public: int health; int curhealth, atk1; string name; int GetHealth(); void SetHealth(); int TakeDamage(int); }; [/CODE] Everything is going fine, but when I tried damaging one of those enemies with this function: [SPOILER] [CODE] void Player::Attack(Enemy enemy) { int atk = urand(10, 30); enemy.TakeDamage(atk); cout << endl << "Attacked for: " << atk << "." << endl; cout << "Enemy HP: " << enemy.GetHealth() << "." << endl; } // Enemy void Enemy::SetHealth() { health = urand(100, 120); curhealth = health; } int Enemy::GetHealth() { return curhealth; } int Enemy::TakeDamage(int damage) { curhealth -= damage; } [/CODE] [/SPOILER] The first time I damage the enemy the health returns fine( ex. Enemy health is 100, I attack for 20 it returns 80); now, the second time instead of taking the current health value of 80 and reducing, say another attack of 10, it'll reduce to the total health, returning 90. I think that's because it's always re-setting curhealth to the value of maxhealth, therefore everytime I damage him it ignores the times before. This is probably a silly mistake, and I'll try to fix it tonight if I have time, but a little insight wouldn't hurt [img]http://public.gamedev.net//public/style_emoticons/default/tongue.png[/img]. Apart from that, if you have any ideas as to what I could put in the game, let me know! Cheers [img]http://public.gamedev.net//public/style_emoticons/default/smile.png[/img] EDIT: It now works just fine, thanks to Servant of the Lord and Sollum!