当有很多需要的数组时,我想知道在RAM/内存中保存的最佳方法(我计划有更多的NPC和其他各种带有文本和项的数组)。我想知道到目前为止我还能改进什么。
#include <iostream>
#include <cstring>
#define NUM_NPC 10 // Number of NPC players
#define DETAILS_HEARTS 0 // Heart Position
#define DETAILS_BDMON 1 // Birthday Month Position
#define DETAILS_BDDAY 2 // Birthday Day Position
#define DETAILS_GENDER 3 // NPC Gender
using namespace std;
class npcPlayers {
public:
int getHearts(int playerID);
int getItem(int playerID, int itemID);
int getBirthdayMonth(int playerID);
int getBirthdayDay(int playerID);
char *getName(int playerID);
npcPlayers();
private:
int npcDetails[NUM_NPC][10];
char npcNames[NUM_NPC][20];
int updateHearts(int PlayerID,int value);
};
npcPlayers::npcPlayers() {
npcNames = {"Ace","Amber","Benny","Ethan","Michael","Jay","William","Mia","Chloe","Emily"};
npcDetails = {
{0,3,5,0}, // Ace
{0,9,20,1}, // Amber
{0,1,10,0}, // Bennny
{0,12,30,0}, // Ethan
{0,2,17,0}, // Michael
{0,6,10,0}, // Jay
{0,8,9,0}, // William
{0,4,1,1}, // Mia
{0,5,13,1}, // Chloe
{0,8,5,1} // Emily
};
}
int npcPlayers::getHearts(int playerID) {
return npcDetails[playerID][DETAILS_HEARTS];
}
int npcPlayers::getItem(int playerID, int itemID) {
}
int npcPlayers::getBirthdayDay(int playerID) {
return npcDetails[playerID][DETAILS_BDDAY];
}
int npcPlayers::getBirthdayMonth(int playerID) {
return npcDetails[playerID][DETAILS_BDMON];
}
char *npcPlayers::getName(int playerID) {
return npcNames[playerID];
}
int main() {
npcPlayers npc;
cout << "Player 1 Details:" << endl;
cout << "Name: " << npc.getName(1) << endl;
cout << "Hearts: " << npc.getHearts(1) << endl;
cout << "Birthday: " << npc.getBirthdayMonth(1) << "/" << npc.getBirthdayDay(1) << endl;
return 0;
}发布于 2012-04-14 16:01:03
NUM_NPC这样的vars使您的应用程序不可伸缩。#include <iostream>
#include <string>
#include <vector>
typedef int Hearts;
typedef bool Gender;
struct Date
{
Date(int month,int day) : month(month), day(day) {}
int month;
int day;
};
class Item
{
// TODO: implement
};
class Player
{
public:
Player(std::string name, Hearts hearts, Date birthday, Gender gender)
: name(name), hearts(hearts), birthday(birthday), gender(gender) {}
Hearts getHearts() const
{
return hearts;
}
const std::vector<Item>& getItems()
{
return items;
}
Date getBirthday() const
{
return birthday;
}
std::string getName() const
{
return name;
}
private:
std::vector<Item> items;
Hearts hearts;
Date birthday;
std::string name;
Gender gender;
};
int main()
{
using namespace std;
vector<Player> players;
players.push_back(Player("Ace", 0, Date(3,5), 0));
players.push_back(Player("Amber", 0, Date(9,20), 1));
players.push_back(Player("Benny", 0, Date(1,10), 0));
players.push_back(Player("Ethan", 0, Date(12,30), 0));
Player& p = players[1];
cout << "Player 1 Details:" << endl;
cout << "Name: " << p.getName() << endl;
cout << "Hearts: " << p.getHearts() << endl;
cout << "Birthday: " << p.getBirthday().month << "/" << p.getBirthday().day << endl;
cout << "Item count: " << p.getItems().size() << endl;
}https://codereview.stackexchange.com/questions/10460
复制相似问题