Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

21

01.10.2013, 21:51

Eigentlich heißt es genau genommen "solange Anweisung ungleich 1"... Ich glaub wenn er das noch nicht raus hat, wird's schwer.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

22

01.10.2013, 22:04

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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
// TSIM - Konsole


#include <iostream>



using namespace std;


int main()
{
    // temp
    int tmp;
    //Gebaeude
    int Burg;
    int Holzfaeller;
    int Saegewerk;
    int Steinmetz;
    int Lager_Klein;

    
    //Ressourcen
    int Baumstaemme = 0;
    int Bretter = 0;
    int Steine = 0;
    
    unsigned int Ressourcen = 0;
    
    int Ressourcen_Gesamt;
    unsigned int Storage = 0;
    unsigned int Free_Storage = 0;
    
    
    Burg = 1;
    Holzfaeller = 2;
    Saegewerk = 1;
    Steinmetz = 2;
    Lager_Klein = 0;
    
    
    
    
    
    Storage = 550;
    Ressourcen = Baumstaemme += Bretter += Steine;
    Free_Storage = Storage -= Ressourcen;
    
    
    
    int Anweisung;


    
    
    


    
    
    
    

    while(Anweisung){
        //Frage
    cout << "Was moechtest du tun? \n" 
        "|1 - Holz hacken | + 10 Baumstaemme \n"
        "|2 - Baumstaemme saegen | +10 Bretter | -5 Baumstaemme \n"
        "|3 - Fels meiseln | +10 Stein \n"
        "|4 - Lager ansehen | \n"
        "|5 - Gebaeude ansehen | \n"
        "|6 - Gebaeude bauen | \n"
        "|7 - Spiel Beenden | \n";

    cin >> Anweisung;


    
    
    if((Anweisung == 1) && (Free_Storage >= 10)){   
        Baumstaemme += 10;
        Ressourcen += 10;
    cout << "Du hast Holz gehackt! \n" << endl;
    cout << Baumstaemme << " Baumstaemme \n" << endl;

    continue;
    }

    else if((Anweisung == 2) && (Baumstaemme >= 5) && (Free_Storage >= 10)){
        Baumstaemme -= 5;
        Bretter += 10;
        Ressourcen -= 5;
        Ressourcen += 10;
    cout << "Du hast Baumstaemme gesaegt! \n" << endl;
    cout << Bretter << " Bretter \n" << endl;

    continue;
    
    }   

    else if((Anweisung == 3) && (Free_Storage >= 10)){
        Steine += 10;
        Ressourcen += 10;
    cout << "Du hast den Fels gemeiselt! \n" << endl;
    cout << Steine << " Steine \n" << endl;

    continue;   
    }

    else if(Anweisung == 4){
        //Ressourcen
    cout << Baumstaemme << " Baumstaemme | " << Bretter << " Bretter | " << Steine << " Steine | \n" << endl;
    cout << Ressourcen << " Ressourcen | \n" << endl;
        //Lagerplatz
    cout << Storage << " Lagerplatz | " << Free_Storage << " Freier Lagerplatz | \n" << endl;

    continue;
    }

    else if(Anweisung == 5){
        //Gebaeude
    cout << Burg << " Burg | \n" << endl; 
    
    cout << Holzfaeller << " Holzfaeller | " << Saegewerk << " Saegewerk | " << Steinmetz << " Steinmetz | " << Lager_Klein << " kleine Lager | \n" << endl;

    continue;
    
    }

    else if(Anweisung == 6){
        
        //Frage
        cout << "Was für ein Gebaeude moechtest du bauen? \n"
                "|1 - Holzfaeller | -20 Bretter und -20 Steine \n"
                "|2 - Saegewerk | -25 Bretter und -50 Steine \n"
                "|3 - Steinmetz | -50 Bretter und -25 Steine \n"
                "|4 - Kleines Lager | -250 Bretter und -250 Steine \n";

        cin >> Anweisung;

        if((Anweisung == 1) && (Bretter >= 20) && (Steine >= 20)){
            Bretter -= 20;
            Steine -= 20;
            Ressourcen -= 40;
            Holzfaeller ++;
        cout << "Du hast einen Holzfaeller gebaut! \n" << endl;
        cout << Holzfaeller << " Holzfaeller \n" << endl;

        continue;
        }
        else if((Anweisung == 2) && (Bretter >= 25) && (Steine >= 50)){
            Bretter -= 25;
            Steine -= 50;
            Ressourcen -= 75;
            Saegewerk ++;
        cout << "Du hast ein Saegewerk gebaut! \n " << endl;
        cout << Saegewerk << " Saegewerk \n" << endl;

        continue;
        }
        else if((Anweisung == 3) && (Bretter >= 50) && (Steine >= 25)){
            Bretter -= 50;
            Steine -= 25;
            Ressourcen -= 75;
            Steinmetz ++;
        cout << "Du hast einen Steinmetz gebaut! \n" << endl;
        cout << Steinmetz << " Steinmetz \n" << endl;

        continue;
        }
        else if((Anweisung == 4) && (Bretter >= 250) && (Steine >= 250)){
            Bretter -= 250;
            Steine -= 250;
            Ressourcen -= 500;
            Lager_Klein ++;
        cout << "Du hast ein kleines Lager gebaut! \n" << endl;
        cout << Lager_Klein << " kleine Lager \n" << endl;

        continue;
        }
        else {
        continue;
        }

    }
    else if(Anweisung == 7){
        return 0;
    }

    else {

        continue;
    }

}
    
    
    return 0;




    
            
}

SOOOOO :D Jetzt fehlt mir nur noch ne Speicherfunktion und eine Ladefunktion. Werde aber mal die Tage googeln :)
Ich bedanke mich sehr sehr sehr bei euch für eure großartige Hilfe :) Ihr seid super :thumbsup: :thumbup: Werde es natürlich auch weiter ausbauen und dann euch allen wenn ihr möchtet das irgendwie zukommen lassen :)
ganz liebe Grüße

/* edit:
Die Lagerfunktion funktioniert immer noch nicht :dash: :search: :pillepalle:

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »LazerBeak« (02.10.2013, 10:25)


FSA

Community-Fossil

  • Private Nachricht senden

23

01.10.2013, 22:05

@BC: Ja du hast recht. Letztendlich ist das Ergebnis dasselbe.

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

24

02.10.2013, 16:40

Mit Lagerfunktion meinst du die "4" ? Das sollte eigentlich gehen. Hab den Code aber grad nur fix gelesen und nicht getestet. Vielleicht ist die Bedingung nicht erfüllt? Hast du zu wenig Ressourcen? Davon müssen ja genug da sein. Ansonsten kannst du nicht bauen. So steht es zumindest in deinem Code. Ein paar kleine Verbesserungsvorschläge hab ich noch an dich. Die Eingaben kannst du auch mit Switch-Case abfragen. Dann machst du dir das if-else Gedöns ein wenig einfacher und übersichtlicher. Die Zusatzbedingungen wie (sind genug Ressourcen vorhanden) musst du dann natürlich trotzdem noch in den Case-Blöcken abfragen. Und du könntest das ganze versuchen durch Funktionen zu strukturieren. Für jede Aktion die du machen kannst könntest du eine Funktion schrieben die genau diese Ausführt. Ist natürlich alles kein muss sondern nur ein Vorschlag. Aber ist doch schon ganz gut.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

25

02.10.2013, 19:53

Das mit switch case ist eine gute Idee werde ich umsetzen. :thumbsup: Mein immer noch bestehendes Problem ist aber allerdings das: Ich will ja, dass sich die Ressourcen selbstständig pro Minute oder pro Tick addieren. Nur wie setze ich das jetzt am besten um? ?( Weil die ganze Zeit 1 oder 2 oder 3 eingeben wird auf dauer ziemlich anstrengend. :pillepalle: Ich habe ehrlich gesagt so etwas vor, wie das Spiel Time for Exploration für das Smartphone. Nur möchte ich das für den PC umsetzen. D.H. früher oder später wird auf jedenfall das Thema GUI auf mich zukommen. Werde die nächste Woche mal das Buch: "C++ für Spieleprogrammierer" bestellen. War heute in der Buchhandlung und die hatten das aber leider nicht mehr auf Lager. :grumble: So Ende der Lebensgeschichte :P Kann mir jmd privat und unter entzug der Öffentlichkeit dabei helfen? Das wäre supernett. Wenn alles fertig ist werde ich den Link oder den Sourcecode hier veröffentlichen. IM-Daten oder Facebook-Daten schicke ich dann an den der sich bei mir per PN meldet.

Liebe Grüße
LazerBeak

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

26

02.10.2013, 21:23

Das musst du so machen, wie ichs gesagt hab.

patrick246

Treue Seele

Beiträge: 328

Wohnort: nahe Heilbronn/BW

Beruf: TG Profil Informatik-Schüler

  • Private Nachricht senden

27

02.10.2013, 21:27

Wenn du Spiele mit Grafik schreibst, läuft die Hauptschleife normalerweise 60x in der Sekunde durch. Die 16,67ms kannst du dann auf eine Variable addieren und wenn diese Variable den Wert 1 Minute oder größer hat, dann setzt du diese zurück und addierst deine Ressourcen.

In der Konsole geht das leider nicht, der Text würde flimmern, da du ihn jeden Schleifendurchlauf löschen und neu schreiben müsstest, dafür ist die Konsole nicht ausgelegt. Die Eingaben wären auch nicht mehr so einfach, da du das ganze selbst verwalten muss, du kannst, wenn du 60 Schleifendurchläufe/Sekunde haben willst, keine 5 Sekunden auf eine Benutzereingaben warten, also musst du jeden Durchlauf selber nachsehen ob eine Benutzereingabe erfolgt ist, ob diese Taste nicht noch vom vorherigen Durchlauf gedrückt ist, ... Ich habe mal so ein kleines System für einen Kumpel geschrieben um ihm zu zeigen, dass man sowas besser nicht in der Konsole umsetzt.

Du kannst natürlich die Schleife mit einer geringeren Frequenz durchlaufen lassen, darfst aber dafür keine blockierenden Funktionen aufrufen (std::cin >> zum Beispiel).
Eine Möglichkeit wäre es, wenn die Option zum Holzfällen gedrückt wurde, eine neue Schleife laufen zu lassen, die nachfragt, ob eine Taste gedrückt wurde und dann die Schleife unterbricht oder falls nichts gedrückt wurde den Prozess für ne halbe Sekunden in den Schlaf zu schicken (verbraucht keine unnötige Rechenzeit). Zuvor speicherst du dir die aktuelle Zeit ab und berechnest nach der Schleife die darin verbrachte Zeit. Damit kannst du dann den neuen Ressourcenwert berechnen.

http://en.cppreference.com/w/cpp/thread/sleep_for oder http://msdn.microsoft.com/en-us/library/…v=vs.85%29.aspx
GetTickCount() (MSDN)

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

28

02.10.2013, 22:26

TGGC hat dir ja einen Link gepostet. Das sind aber Sachen die für einen Anfänger meiner Meinung nach nicht taugen. Ich will damit nicht sagen, dass TGGCs Link nichts taugt, den hab ich mir nicht mal wirklich vernünftig angeguckt, sondern viel mehr dass die Thematik dahinter zu komplex für Anfänger ist. Du könntest das ganze mit Windows Forms umsetzen. Dann hast du eine GUI. Die Sache mit den Ressourcen würdest du dann über einen Timer lösen. Aber auch hierfür sollten die Grundlagen schon ordentlich sitzen und ich bin selbst auch kein großer Freund von C++ in Verbindung mit Windows Forms. Ich denke das würde dich erst mal überfordern. Sinnvoller ist es auf das Buch zu warten und dies durchzuarbeiten. Hier lernst du dann im Prinzip was du brauchst um das ganze als "normales Spiel" umzusetzen. Davon hast du eigentlich am meisten.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

29

02.10.2013, 22:45

Okay alles klar. Wollte sowieso erst einmal die ganzen Grundfunktionen machen bevor ich dann an die WIN-Form gehe. Werde aber jetzt mal aif das Buch warten und kann ja nebenher ein wenig das bisherige "Spiel" erweitern. Den Link den TGGC mir geschickt hat war irgendwie zu arg :P ich konnte irgendwie nicht sehr viel damit anfangen. Bedanke mich aber trotzdem nochmals für die Mühe. Ich habe c++ gewählt da es einige parallelen zu PHP hat was ich seit circa einem halben Jahr intensiv benutze.Gibt es ausser dem Buch "C++ für Spieleprogrammierer" noch ein anderes was ich mir aneignen könnte? Oder eine sinnvolle und gut erklärte Onlinelösung?

LG

patrick246

Treue Seele

Beiträge: 328

Wohnort: nahe Heilbronn/BW

Beruf: TG Profil Informatik-Schüler

  • Private Nachricht senden

30

02.10.2013, 22:48

Es gibt meiner Meinung nach mehr Parallelen zwischen C# und PHP, sowie zwischen Java und PHP als zwischen C++ und PHP...

Werbeanzeige