Tag,
Ich habe mich mal an einem kleinen "Stadt" Simulator gewagt.
Main:
|
C#-Quelltext
|
1
2
|
#include "iostream"#include "SimuCore.cpp"
int main(){ int Money;std::cin >> Money;Game MainGame(Money); return 0;}
|
Die MainCore:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
class Game {
bool IsRunning;
int People;
int Days;
int Houses;
int Money;
int PeopleCopy;
int DeathCounter;
int i;
public: Game(int GetMoney = 10) {
IsRunning = true;
Money = GetMoney;
People = 8;
Days = 0;
Houses = 2;
DeathCounter = 0; //Init the Games vars
NewDay();
} private:void NewDay() //New Day Beginns, update all Vars
{
Days += 1;
std::cout << "New Day: " << Days << std::endl;
std::cout << "##########################" << std::endl;
Money += People; //People pay tax
PeopleCopy = People;
for (i = 1; i <= PeopleCopy; ++i) //Try to buy food for every People
{
if (BuyFood()) {
} else {
--People;
++DeathCounter;
} //If not enough food -> People Die
}
BuildNew();
if (People != Houses * 4) {
++People;
} //If enough space in a house, a new person go into it
std::cout << "People: " << People << " #### Houses: " << Houses << " #### Money: " << Money << " #### This Day People Died: " << DeathCounter << std::endl; //give out game informations
std::cout << "##########################" << std::endl;
DeathCounter = 0; //reset DeathCount
getchar();
NewDay();
}
void BuildNew() //Try build a new house
{
if (Money >= 50) {
Houses += 1;
Money -= 50;
}
}
int BuyFood() {
if (Money >= 2) {
Money -= 2;
return 1;
}
return 0;
}
};
|
Alles funktionierte, als ich einen festen Start Geld Wert hatte.
Dies war mir zu langweilig, und ich wollte ihn durch eine User eingabe festlegen.
Schon kommen die Probleme.
Nach der Eingabe des Wertes (gültiger int) ergebnis: Es werden direkt 2 Tage ausgegeben (Sollte normal nach einem Tag auf "ENTER" warten, um nächsten tag zu starten)
Nach Eingabe eines ungültigen wertes sollte eigentlich der standardwert im konstruktor automatisch 10 betragen. Ergebnis: Das Geld beträgt -858993449 - Es werden direkt 3 Tage angezeigt.
Am besten ihr c&p diesen code kurz in eigene dateien und testet es, falls ich es zu schwer erklärt habe.
Und: Gibt es verbesserungen in meinem Schreibstil? (
C++ Schreibstil)
Edit: Die Codetags scheinen verbuggt zu sein, das wird alles in 2 zeilen gepresst?