c++ - RPG 统计问题

标签 c++

我的 RPG 统计代码有点问题。我希望人们使用 6 个基本属性(力量、敏捷、体质、智力、智慧和魅力),最小值为 10。创建角色时,我希望他们有 15 点可以使用,并且在我的代码,一切正常,除非你在到达最后一个统计数据之前用完了要放置的点。假设您将所有 15 点都投入力量。显示屏显示您将拥有 25 力量、32478493 敏捷、-42734627 体质、-1 智力等(这些不是确切数字,只是看起来像的示例。)这是代码。

字符创建.h

#ifndef CharCreate_H
#define CharCreate_H
#include<fstream>
#include<string>

using namespace std;

int charcreate(){

      fstream file;

      char gender, choice;
      string name, dummy;
      int points;
      int str, dex, con, intel, wis, cha;
      float level;
      double experience;


      level = 1;
      experience = 0;

      ofstream myFile;
      myFile.open ("T:\\character.txt");

      system("color 2");
      cout << "Welcome to the character creator." << endl;
      genderchoice:cout << "First, are you male or female? (M/F)" << endl;
      cin >> gender;
      system("cls");

      if (gender == 'M' || gender == 'm'){
                 cout << "You're male? (Y/N)" << endl;
                 cin >> choice;
                 system("cls");
                          if (choice == 'Y' || choice == 'y'){
                                    cout << "Great!" << endl;
                                    goto name;
                          } else if (choice == 'N' || choice == 'n'){
                                     goto genderchoice;
                          }
      } else if (gender == 'F' || gender == 'f'){
                cout << "You're female? (Y/N)" << endl;
                cin >> choice;
                system("cls");
                         if (choice == 'Y' || choice == 'y'){
                                     cout << "Great!" << endl;
                                     goto name;
                          } else if (choice == 'N' || choice == 'n'){
                                     goto genderchoice;
                          }
//------------------------------------------------------------------------------                          
 name:system("cls");
      system("color 3");
      cout << "What is your name, traveler?" <<endl;
      getline(cin,dummy);
      getline(cin, name);
      cout << "" << endl;
      cout << "Your name is " << name << "? (Y/N)" << endl;
      cin >> choice;

          if (choice == 'Y' || choice == 'y'){
                     system("cls");
                     cout << "Greetings, " << name << "!" << endl;
          } else if (choice == 'N' || choice == 'n'){
                     system("cls");
                     cout << "You must provide your name, stranger."  << endl;
                     goto name;
          }
//------------------------------------------------------------------------------
stats:system("cls");
      system("color 4");
      cout << "You have 6 stats to deal with in this game, and 15 points" << endl;
      cout << "to allocate between them all." << endl;
      cout << "These are: Strength (STR), Dexterity (DEX), Constitution (CON)," << endl;
      cout << "Intelligence (INT), Wisdom (WIS), and Charisma (CHA)." << endl;
      cout << "Continue: C" << endl;
      cout << "Help: H" << endl;
      cin >> choice;

      if (choice == 'C' || choice == 'c'){

          attrib:points = 15;

             str:cout << "You have 10 Strength. How many more points do you wish to add?" << endl;
                 cin >> str;
                 points = points - str;
                        if (str > points > 15){
                                cout << "Not enough points!" << endl;
                                str = str - points;
                                goto str;
                        } else if (str == points){
                                cout << "Are you sure you want to put all of your points here?" << endl;
                                cin >> choice;
                                    if (choice == 'Y' || choice == 'y') {
                                               goto fin;
                                    } else if (choice == 'N' || choice == 'n'){
                                               goto str;
                        } else if (str < points){
                               goto dex;
                        }
                 }
                 cout << "Remaining points: " << points;
                 cout << "" << endl;
                 str = str + 10;
                 cout << "You have " << str << " Strength" << endl;
                 system("pause");
                 system("cls");

             dex:cout << "You have 10 Dexterity. How many more points do you wish to add?" << endl;
                 cin >> dex;
                 points = points - dex;
                        if (dex > points > 15){
                                cout << "Not enough points!" << endl;
                                dex = dex - points;
                                goto dex;
                        } else if (dex == points){
                                cout << "Are you sure you want to put all of your points here?" << endl;
                                cin >> choice;
                                    if (choice == 'Y' || choice == 'y') {
                                               goto fin;
                                    } else if (choice == 'N' || choice == 'n'){
                                               goto dex;
                        } else if (dex < points){
                               goto con;
                        }
                 }
                 cout << "Remaining points: " << points;
                 cout << "" << endl;
                 dex = dex + 10;
                 cout << "You have " << dex << " Dexterity" << endl;
                 system("pause");
                 system("cls");

             con:cout << "You have 10 Constitution. How many more points do you wish to add?" << endl;
                 cin >> con;
                 points = points - con;
                        if (con > points > 15){
                                cout << "Not enough points!" << endl;
                                con = con - points;
                                goto con;
                        } else if (con == points){
                                cout << "Are you sure you want to put all of your points here?" << endl;
                                cin >> choice;
                                    if (choice == 'Y' || choice == 'y') {
                                               goto fin;
                                    } else if (choice == 'N' || choice == 'n'){
                                               goto con;
                        } else if (con < points){
                               goto intel;
                        }
                 }
                 cout << "Remaining points: " << points;
                 cout << "" << endl;
                 con = con + 10;
                 cout << "You have " << con << " Constitution" << endl;
                 system("pause");
                 system("cls");

           intel:cout << "You have 10 Intelligence. How many more points do you wish to add?" << endl;
                 cin >> intel;
                 points = points - intel;
                  if (intel > points > 15){
                                cout << "Not enough points!" << endl;
                                intel = intel - points;
                                goto intel;
                        } else if (intel == points){
                                cout << "Are you sure you want to put all of your points here?" << endl;
                                cin >> choice;
                                    if (choice == 'Y' || choice == 'y') {
                                               goto fin;
                                    } else if (choice == 'N' || choice == 'n'){
                                               goto intel;
                        } else if (intel < points){
                               goto wis;
                        }
                  }
                 cout << "Remaining points: " << points;
                 cout << "" << endl;
                 intel = intel + 10;
                 cout << "You have " << intel << " Intelligence" << endl;
                 system("pause");
                 system("cls");

             wis:cout << "You have 10 Wisdom. How many more points do you wish to add?" << endl;
                 cin >> wis;
                 points = points - wis;
                  if (wis > points > 15){
                                cout << "Not enough points!" << endl;
                                wis = wis - points;
                                goto wis;
                        } else if (wis == points){
                                cout << "Are you sure you want to put all of your points here?" << endl;
                                cin >> choice;
                                    if (choice == 'Y' || choice == 'y') {
                                               goto fin;
                                    } else if (choice == 'N' || choice == 'n'){
                                               goto wis;
                        } else if (con < points){
                               goto cha;
                        }
                  }
                 cout << "Remaining points: " << points;
                 cout << "" << endl;
                 wis = wis + 10;
                 cout << "You have " << wis << " Wisdom" << endl;
                 system("pause");
                 system("cls");

             cha:cout << "You have 10 Charisma. How many more points do you wish to add?" << endl;
                 cin >> cha;
                 points = points - cha;
                  if (cha > points == 15){
                                cout << "Not enough points!" << endl;
                                cha = cha - points;
                                goto cha;
                        } else if (cha == points){
                                cout << "Are you sure you want to put all of your points here?" << endl;
                                cin >> choice;
                                    if (choice == 'Y' || choice == 'y') {
                                               goto fin;
                                    } else if (choice == 'N' || choice == 'n'){
                                               goto cha;
                        } else if (con < points){
                               goto fin;
                        }
                  }
                 cout << "Remaining points: " << points;
                 cout << "" << endl;
                 cha = cha + 10;
                 cout << "You have " << cha << " Charisma." << endl;
                 system("pause");
                 system("cls");

             fin:cout << "Your stats are:" << endl;
                 cout << "Strength: " << str << endl;
                 cout << "Dexterity: " << dex << endl;
                 cout << "Constitution: " << con << endl;
                 cout << "Intelligence: " << intel << endl;
                 cout << "Wisdom: " << wis << endl;
                 cout << "Charisma: " << cha << endl;
                 cout << "Are these correct? (Y/N)" << endl;
                 cin >> choice;
                 cout << "" << endl;

                  if (choice == 'Y' || choice == 'y'){
                   cout << "Congratulations, you have successfully finished your character." << endl;
                  } else if (choice == 'N' || choice == 'n')
                    goto attrib;
                  }
      } else if (choice == 'H' || choice == 'h'){
             cout << "Strength is how easily you can crush a tomato." << endl;
             cout << "Dexterity is how easily you can handle a tomato with your hands." << endl;
             cout << "Constitution is how easily you can eat a bad tomato." << endl;
             cout << "Intelligence is knowing that tomato is a fruit." << endl;
             cout << "Wisdom is not putting tomato in a fruit salad." << endl;
             cout << "Charisma is selling a tomato-based fruit salad." << endl;
             system("pause");
             goto stats;
      }

          myFile << "Name: " << name << "\n";
          myFile << "Gender: " << gender << "\n";
          myFile << "\n";
          myFile << "Level: " << level << "\n";
          myFile << "Experience: " << experience << "\n";
          myFile << "\n";
          myFile << "Strength: " << str << "\n";
          myFile << "Dexterity: " << dex << "\n";
          myFile << "Constitution: " << con << "\n";
          myFile << "Intelligence: " << intel << "\n";
          myFile << "Wisdom: " << wis << "\n";
          myFile << "Charisma: " << cha << "\n";
   myFile.close();      
}              
#endif

主要.cpp

#include <cstdlib>
#include <iostream>
#include "CharCreate.h"

using namespace std;

int main(int argc, char *argv[])
{
    charcreate();
    system("PAUSE");
    return EXIT_SUCCESS;
}

如何解决点数用完后数字乱码的问题?如果有帮助,我正在运行 Bloodshed Dev C++ 作为编译器,因为这是我们在大学必须使用的编译器。

最佳答案

在 C++ 中,如果您不为变量设置值,它将包含当时恰好存在的任何随机数据。您将要在开始时将每个统计数据初始化为 10(或一些合理的默认值)。

关于c++ - RPG 统计问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27042731/

相关文章:

c++ - 具有 protected 派生成员的 CRTP

c++ - 作为友元的运算符重载

c++ - 用函数/模板替换宏

类似于 C# 的 C++ 库?

c++ - STL 允许使用指向不同 map 的迭代器删除 map 的键/值吗?

c++ - 为什么复制构造函数 "chained"不像默认构造函数和析构函数?

c++ - 用于防止重复和语法错误问题的 boolean 数组?

带有 C++ UnsatisfiedLinkError 的 Android Studio JNI

c++ - 如何在makefile中添加.c、.cc和.so文件来创建另一个.so?

c++ - 对话框单位到屏幕坐标