Refactored everything to use arrays and enumerations...
This commit is contained in:
parent
dcf1480dc8
commit
f6e9aff61b
100
xerbia.c
100
xerbia.c
@ -1,87 +1,55 @@
|
|||||||
#include <xolatile/xtandard.c>
|
#include <xolatile/xtandard.c>
|
||||||
|
|
||||||
static int wheat = 600,
|
enum { wheat, gold, wood, stone, resources };
|
||||||
gold = 600,
|
enum { granary, mine, storehouse, quarry, constructions };
|
||||||
wood = 600,
|
|
||||||
stone = 600;
|
|
||||||
|
|
||||||
static int granaries = 1,
|
static int resource [resources] = { 600, 300, 300, 300 };
|
||||||
mines = 1,
|
static int construction [constructions] = { 1, 1, 1, 1 };
|
||||||
storehouses = 1,
|
|
||||||
quarries = 1;
|
|
||||||
|
|
||||||
static int check_resource (int have, int need, char * name) {
|
static char * resource_name [] = { "wheat", "gold", "wood", "stone" };
|
||||||
if (have < need) {
|
static char * construction_name [] = { "granary", "mine", "storehouse", "quarry" };
|
||||||
print ("You have only /3%i %s/- and you need /3%i/-, meaning that you miss /1%i/- more.\n", have, name, need, need - have);
|
|
||||||
|
|
||||||
return (true);
|
static int construction_cost [constructions] [resources] = {
|
||||||
|
{ 0, 10, 60, 30 },
|
||||||
|
{ 0, 120, 60, 10 },
|
||||||
|
{ 0, 30, 10, 60 },
|
||||||
|
{ 0, 60, 30, 10 }
|
||||||
|
};
|
||||||
|
|
||||||
|
static void build_construction (int index) {
|
||||||
|
int cost;
|
||||||
|
|
||||||
|
for (cost = 0; cost < resources; ++cost) {
|
||||||
|
if (resource [cost] < construction_cost [index] [cost]) {
|
||||||
|
print ("You have only /3%i %s/- and you need /3%i/-, meaning that you miss /1%i/- more.\n", resource [cost], resource_name [cost], construction_cost [index] [cost], construction_cost [index] [cost] - resource [cost]);
|
||||||
|
print ("Your architects humbly refused to build %s, while complaining about lacking the resources for that.\n", construction_name [index]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (false);
|
for (cost = 0; cost < resources; ++cost) {
|
||||||
}
|
resource [cost] -= construction_cost [index] [cost];
|
||||||
|
|
||||||
static void build_granary (void) {
|
|
||||||
if (check_resource (gold, 10, "gold") || check_resource (wood, 60, "wood") || check_resource (stone, 30, "stone")) {
|
|
||||||
print ("Your architects humbly refused to build the /1granary/-, complaining about lacking the resources for that.\n");
|
|
||||||
} else {
|
|
||||||
gold -= 10;
|
|
||||||
wood -= 60;
|
|
||||||
stone -= 30;
|
|
||||||
|
|
||||||
print ("/2Granary/- that you ordered to be built was finished without issues, now you have /2%i/- granaries.\n", ++granaries);
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
static void build_mine (void) {
|
construction [index] += 1;
|
||||||
if (check_resource (gold, 120, "gold") || check_resource (wood, 60, "wood") || check_resource (stone, 30, "stone")) {
|
|
||||||
print ("Your architects humbly refused to build the /1mine/-, complaining about lacking the resources for that.\n");
|
|
||||||
} else {
|
|
||||||
gold -= 120;
|
|
||||||
wood -= 60;
|
|
||||||
stone -= 30;
|
|
||||||
|
|
||||||
print ("/2Mine/- that you ordered to be built was finished without issues, now you have /2%i/- mines.\n", ++mines);
|
print ("Construction that you ordered to be built was finished without issues.\n", construction [index]);
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void build_storehouse (void) {
|
|
||||||
if (check_resource (gold, 30, "gold") || check_resource (wood, 10, "wood") || check_resource (stone, 60, "stone")) {
|
|
||||||
print ("Your architects humbly refused to build the /1storehouse/-, complaining about lacking the resources for that.\n");
|
|
||||||
} else {
|
|
||||||
gold -= 30;
|
|
||||||
wood -= 10;
|
|
||||||
stone -= 60;
|
|
||||||
|
|
||||||
print ("/2Storehouse/- that you ordered to be built was finished without issues, now you have /2%i/- storehouses.\n", ++storehouses);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void build_quarry (void) {
|
|
||||||
if (check_resource (gold, 60, "gold") || check_resource (wood, 30, "wood") || check_resource (stone, 10, "stone")) {
|
|
||||||
print ("Your architects humbly refused to build the /1quarry/-, complaining about lacking the resources for that.\n");
|
|
||||||
} else {
|
|
||||||
gold -= 60;
|
|
||||||
wood -= 30;
|
|
||||||
stone -= 10;
|
|
||||||
|
|
||||||
print ("/2Quarry/- that you ordered to be built was finished without issues, now you have /2%i/- quarries.\n", ++quarries);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void print_resources (void) {
|
static void print_resources (void) {
|
||||||
print ("Wheat = %i\n", wheat);
|
print ("Wheat = %i\n", resource [wheat]);
|
||||||
print ("Gold = %i\n", gold);
|
print ("Gold = %i\n", resource [gold]);
|
||||||
print ("Wood = %i\n", wood);
|
print ("Wood = %i\n", resource [wood]);
|
||||||
print ("Stone = %i\n", stone);
|
print ("Stone = %i\n", resource [stone]);
|
||||||
}
|
}
|
||||||
|
|
||||||
int main (void) {
|
int main (void) {
|
||||||
print_resources ();
|
print_resources ();
|
||||||
|
|
||||||
build_granary ();
|
build_construction (granary);
|
||||||
build_mine ();
|
build_construction (mine);
|
||||||
build_storehouse ();
|
build_construction (storehouse);
|
||||||
build_quarry ();
|
build_construction (quarry);
|
||||||
|
|
||||||
print_resources ();
|
print_resources ();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user