Jump to content

  • Log In with Google      Sign In   
  • Create Account


c++ combat code


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
6 replies to this topic

#1 Mr Stx   Members   -  Reputation: 116

Like
0Likes
Like

Posted 14 September 2013 - 02:15 PM

Hi, im learning c++ currently and am adventuring into creating a very basic game, I posted list week regarding a problem with a while loop on a coin flip program, I currently have an issue with the following code and was hoping someone could offer me advice. (please ignore the int startfight2 and my over-indulgent use of header files).

#include <string>
#include <sstream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <iostream>

using namespace std;

int userhitpoints = 100;
int manhitpoints = 100;
int bla;
int startfight;
int startfight2;

int main()



{
    cout << "Begin?\n\n1: Yes\n2:No\n\n";
    cin >> startfight;

        if (startfight == 1)
            {
                cout << "\nA man approaches you 'lets fight'\n\n1:Fight\n2:Defend\n\n";
                cin >> startfight2;
                    if (startfight2 == 1)
                        {
                            do
                        {
                                srand(time(0));
                                int damage = rand() % (50 - 10) + 10;
                                int damage2 = rand() % (50 - 10) + 10;
                                int minushp = userhitpoints - damage;
                                cout << "\nYou hit the man for: " << damage << "\nThe man hits you for: " << damage2 << "\n\n" << "mans Hit Points:" << minushp;

                                cout << "\nYour Hit Points: ";
                                int minushp2 = manhitpoints - damage2;
                                cout << minushp2 << "\n\nHit Again?\n";
                                cin >> startfight2;
                        }
                        while (manhitpoints > 0);
                        }
                            else
                                {
                                cout << "You are dead";
                                }
                        }

                    else if (startfight2 == 2)
                        {
                            int damage = rand() % (50 - 10) + 10;
                            int defend = damage / 2;
                            cout << "You defend and do 0 damage";
                        }


        else
        cout << "fail";
        return 0;
}






Its a work in progress and isn't complete but my current issue regards the "hitpoints" integers i want them to retain their value after the first loop so the attacker will have to keep attacking untill either userhitpoints or manhitpoints reaches 0.


Edited by Mr Stx, 14 September 2013 - 02:15 PM.


Sponsor:

#2 Servant of the Lord   Crossbones+   -  Reputation: 17189

Like
5Likes
Like

Posted 14 September 2013 - 02:43 PM

Hello! C++ is fun, but takes quite alot of patience, so try to stick with it through the frustrations. smile.png

 

With new C++ code and standard library headers, you should use the <cstdio> instead of the older <stdio.h> variants. Same with stdlib and time.

Your variables shouldn't be outside the main function. While easy and convenient at first, global variables bite you hard later on in your programming life and should be avoided. It's best to start off learning good practices rather than trying to unlearn bad practices later.

 

Variables should be declared and initialized as close as possible to when they are first needed.

 

The problem you were asking about:

If you want your health to persist, you need to actually modify the original variable 'manhitpoints', instead of creating a new variable 'minushp2that later gets thrown away.

 

Also, variables need very good descriptive names (again, better to learn good practices right at the start, then trying to unlearn bad practices later). 'minushp2' and 'bla' are not very descriptive.

 

Now is also a good time to learn about structs: You can put multiple variables in a struct, and then use the struct to create a variable for both the user and the user's enemy.

//"Person" becomes a new _type_ of variable.
struct Person
{
     int attackPower = 5;
     int maxHealth = 100;
     int currentHealth = 100;
};
 
Person player;
Person humanEnemy;
Person wolf;

 

srand(time(0)); is only supposed to be called once at the very start of your program. It initializes the random number generator. It could be initialized more than once, but people only do that for specifically creating a sequence of numbers that intentionally repeats. You want it to be random every time, so a single initialization is the right way to go.


It's perfectly fine to abbreviate my username to 'Servant' rather than copy+pasting it all the time.

[Fly with me on Twitter] [Google+] [My broken website]

All glory be to the Man at the right hand... On David's throne the King will reign, and the Government will rest upon His shoulders. All the earth will see the salvation of God.                                                                                                                                                       [Need free cloud storage? I personally like DropBox]

Of Stranger Flames - [indie turn-based rpg set in a para-historical French colony] | Indie RPG development journal


#3 135790   Members   -  Reputation: 83

Like
-5Likes
Like

Posted 14 September 2013 - 06:09 PM

I say do not share much of your code.  Especially all of it unless it is copyrighted because communists will own your code.



#4 SimonForsman   Crossbones+   -  Reputation: 5790

Like
2Likes
Like

Posted 14 September 2013 - 06:34 PM

I say do not share much of your code.  Especially all of it unless it is copyrighted because communists will own your code.

 

I'm pretty sure the cold war has ended, copyright applies automatically to anything you create even if you share it, posting code in a online forum does not remove the copyright nor does it give anyone else the right to re-distribute that code or derivates of it.

 

Code you find online is not automatically free to use in your own projects, you always need permission from the copyrightholder. (In some cases that permission may be considered implicitly given but there is absolutely nothing in the original post that suggests that the OP is granting anyone permission to do anything with his code except read and review it).


Edited by SimonForsman, 14 September 2013 - 06:43 PM.

I don't suffer from insanity, I'm enjoying every minute of it.
The voices in my head may not be real, but they have some good ideas!

#5 jbadams   Senior Staff   -  Reputation: 17251

Like
2Likes
Like

Posted 15 September 2013 - 01:18 AM

I say do not share much of your code.  Especially all of it unless it is copyrighted because communists will own your code.

 

1.  Copyright protection is immediate and automatic; you do not have to do anything for copyright to apply to your work (although in many countries registration will strengthen your protection).

 

2.  The code a beginner or even intermediate developer writes whilst learning will not be particularly interesting or novel, and "stealing" it would not likely be beneficial to others.  The feedback that can be gained by sharing relevant samples of code for review will be far more valuable than keeping code a secret.  By the time a programmer is skilled enough to write code that is interesting or novel enough to warrant this type of paranoia they will be less likely to benefit from this type of review, and will know that what they are producing is valuable.

 

3.  You didn't help the original poster with their question at all, and in this particular case they can only possibly benefit from having shared the code.



#6 Khatharr   Crossbones+   -  Reputation: 2828

Like
1Likes
Like

Posted 15 September 2013 - 01:56 AM

Well, what he posted doesn't work right, so I guess the joke's on the communists.


void hurrrrrrrr() {__asm sub [ebp+4],5;}

There are ten kinds of people in this world: those who understand binary and those who don't.

#7 Servant of the Lord   Crossbones+   -  Reputation: 17189

Like
1Likes
Like

Posted 15 September 2013 - 12:22 PM

Well, what he posted doesn't work right, so I guess the joke's on the communists.

Quick, anyone have a gas pipeline we can run the code on?


It's perfectly fine to abbreviate my username to 'Servant' rather than copy+pasting it all the time.

[Fly with me on Twitter] [Google+] [My broken website]

All glory be to the Man at the right hand... On David's throne the King will reign, and the Government will rest upon His shoulders. All the earth will see the salvation of God.                                                                                                                                                       [Need free cloud storage? I personally like DropBox]

Of Stranger Flames - [indie turn-based rpg set in a para-historical French colony] | Indie RPG development journal





Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS