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

Schappy

Frischling

  • »Schappy« ist der Autor dieses Themas

Beiträge: 17

Wohnort: Scheeßel

Beruf: Schüler

  • Private Nachricht senden

1

09.05.2009, 07:46

C++ - Browsergamemöglichkeit? Zeitangabe erstellen!

Hey liebe Community!,

Nach einigen weiteren Übungen (vorallem auch im optischen Sinne) habe ich nun einen neuen Quelltext als Beispiel geschrieben und habe nun einige Fragen direkt zum Thema meines Quelltextes.

Zu allererst. Ist es möglich, mit C++ ein Browsergame zu schreiben? (Meine logische Antwort wäre ja, denn es hat alle Funktionen die man dafür benötigt! Allerdings möchte ich nochmals nachfragen :!: )

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
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
// Verwaltung des Browsergame


// Browsergame C++ Gebäude / Forschungen / Truppen


#include <iostream>

using namespace std;

// Punkte

unsigned int Punkte = 0;

// Ressourcen

unsigned int Eisen = 5000;
unsigned int Wasser = 500;
unsigned int Reis = 500;
//Ressourcenpunkte

unsigned int Eisenpunkte = 0;
unsigned int Wasserpunkte = 0;
unsigned int Reispunkte = 0;

// Gebäude

unsigned int Eisenhuette = 0;
unsigned int Wohnhaus = 0;
unsigned int Wasserwerk = 0;
unsigned int Reisplantage = 0;
// Gebäudebauzeiten

unsigned float Eisenhuettezeit = 5.53;
unsigned float Wohnhauszeit = 2.21;
unsigned float Wasserwerkzeit = 9.554;
unsigned float Reisplantagezeit = 0.64;
// Gebäudekosten

unsigned int Eisenhuettekosten = 180;
unsigned int Eisenhuettekostenmann = 3;
unsigned int Wohnhauskosten = 210;
unsigned int Wasserwerkkosten = 120;
unsigned int Wasserwerkkostenmann = 4;
unsigned int Reisplantagekosten = 20;
unsigned int Reisplantagekostenfrau = 2;
// Gebäudepunkte

float Eisenhuettestf = 0.0125;
float Wohnhausstf = 0.0146;
float Wasserwerkstf = 0.0083;
float Reisplantagestf = 0.0014;


// Forschungen

int Eisenverarbeitung = 0;
// Forschungszeiten

const float Eisenverarbeitungzeit = 15.664;
// Forschungskosten

unsigned int Eisenverarbeitungkosten = 5120;


// Bewohner und Truppen

unsigned int Mann = 15;
unsigned int Frau = 15;
unsigned int Schwertkaempfer = 0;
// Bewohner- und Truppenbauzeiten

const float Mannzeit = 0.23;
const float Frauzeit = 0.41;
const float Schwertkaempferzeit = 16.44;
// Bewohner- und Truppenkosten

int Mannkostenwasser = 10;
int Mannkostenreis = 21;
int Fraukostenwasser = 18;
int Fraukostenreis = 41;
int Schwertkaempferkosten = 81;
// Bewohnergewinn

unsigned int Fraugewinnkinder = 0;
// Trupppunkte

float Schwertkaempferpk1 = 0.0056;

// Punkteberechnungsvariablen

unsigned float Eisenhuettepunkte = 0;
unsigned float Wohnhauspunkte = 0;
unsigned float Wasserwerkpunkte = 0;
unsigned float Reisplantagepunkte = 0;
unsigned float Gebaeudepunkte = 0;
unsigned float Schwertkaempferpunkte = 0;
unsigned float Trupppunkte = 0;
unsigned float Ressourcenpunkte = 0;
// Hauptprogramm

int main ()
{
    cout << "Willkommen im Browsergame #1" << endl;
    cout << "Möchtest du mein Browsergame testen? (j)a/(n)ein" << endl;
    
    char EingabeStart;
    
    cin >> EingabeStart;
    
    // Schleifenanfang

    int Gesamtrunde = 1;
    for (int g=0 ; g<Gesamtrunde ; g++) 
    {
        // x + ( x * (y * y))

        // Ressourchenpunkte

        Eisenpunkte = Eisen * 0.0000278;
        Wasserpunkte = Wasser * 0.0000113;
        Reispunkte = Reis * 0.000005456;
        
        Ressourcenpunkte = Eisenpunkte + Wasserpunkte + Reispunkte;
        // Gebäudepunkte

        Eisenhuettepunkte = Eisenhuettestf + ( Eisenhuettestf * ( Eisenhuette * Eisenhuette ));
        Wohnhauspunkte = Wohnhausstf + ( Wohnhausstf * ( Wohnhaus * Wohnhaus ));
        Wasserwerkpunkte = Wasserwerkstf + ( Wasserwerkstf * ( Wasserwerk * Wasserwerk ));
        Reisplantagepunkte = Reisplantagestf * ( Reisplantagestf * ( Reisplantage * Reisplantage ));
        Gebaeudepunkte = Eisenhuettepunkte + Wohnhauspunkte + Wasserwerkpunkte + Reisplantagepunkte;
        // Trupppunkte

        Schwertkaempferpunkte = Schwertkaempferpk1 * Schwertkaempfer;
        Trupppunkte = Schwertkaempferpunkte;
        // Gesamtpunkte

        Punkte = Ressourcenpunkte + Gebaeudepunkte + Trupppunkte;

        // Kosten und Gewinn

        // Gebäude Kosten

        Eisen += Eisenhuette * 0.21;
        Wasser += Wasserwerk * 0.32;
        Reis += Reisplantage * 0.49;
        Mann += Frau * 0.001464293796492746592783641;
        Frau += Frau * 0.00019461783694859173569171;


        // Spielmenü

        if ((EingabeStart == 'j') || (EingabeStart == 'J'))
        {   // Ausgabe was vorhanden ist

            Gesamtrunde += 1;
            cout << "\n\nSie spielen das Reich der Asaketen und haben " << Punkte << " Punkte" << endl;
            cout << "Zur Zeit besitzen sie folgendes: " << endl;
            cout << "\n   Ressourcen" << endl;
            cout << "Eisen: " << Eisen << "\nWasser: " << Wasser << "\nReis: " << Reis << endl;
            cout << "\nArbeitslose Männer: " << Mann << "\nArbeitslose Frauen: " << Frau << endl;
            cout << "\n   Gebäude" << endl;
            cout << "Eisenhütte Stufe: " << Eisenhuette << endl;
            cout << "Wohnhaus Stufe: " << Wohnhaus << endl;
            cout << "Wasserwerk Stufe: " << Wasserwerk << endl;
            cout << "Reisplantage Stufe: " << Reisplantage << endl;
            cout << "\n   Bewohner und Truppen" << endl;
            cout << "Männer: " << Mann << endl;
            cout << "Frauen: " << Frau << endl;
            cout << "Schwertkämpfer: " << Schwertkaempfer << endl;
            cout << "\n   Forschungen" << endl;
            cout << "Einsenverarbeitung Stufe: " << Eisenverarbeitung << endl;
            
            // chMenueansicht

            cout << "\n\n(K)onstruktionen" << endl;
            cout << "(F)orschungen" << endl;
            cout << "(B)ewohner und Truppen" << endl;
            cout << "\n(n)ächste Runde" << endl;
            cout << "(E)nde" << endl;

            //Bauleiste

            char chMenueansicht;
            cout << "\n\nWähle was du machen möchtest!" << endl;
            cin >> chMenueansicht;

            switch (chMenueansicht)
            {
                case ('k'):
                case ('K'):
                {
                    cout << "\n   Gebäude" << endl;
                    cout << "(1)Eisenhütte Stufe: " << Eisenhuette << endl;
                    cout << "(2)Wohnhaus Stufe: " << Wohnhaus << endl;
                    cout << "(3)Wasserwerk Stufe: " << Wasserwerk << endl;
                    cout << "(4)Reisplantage Stufe: " << Reisplantage << endl;
                    
                    char Gebaeudebau;
                    cout << "\nWelches Gebäude möchten Sie ausbauen?" << endl;
                    cin >> Gebaeudebau;
                    switch (Gebaeudebau)
                    {
                        case ('1'):
                        {
                            if ((Eisen < 180) || (Mann < 3))
                            {
                                cout << "Du hast nicht genügend Eisen/arbeitsloase Männer...\n" << endl;
                            }
                            else 
                            {
                                Eisenhuette +=1;
                                Eisen -= Eisenhuettekosten;
                                Mann -= Eisenhuettekostenmann;
                            }
                        } break;
    
                        case ('2'):
                        {
                            if (Eisen < 210)
                            {
                                cout << "Du hast nicht genügend Eisen...\n" << endl;
                            }
                            else
                            {
                                Wohnhaus +=1;
                                Eisen -= Wohnhauskosten;
                            }
                        } break;
    
                        case ('3'):
                        {
                            if ((Eisen < 120) || (Mann < 4))
                            {
                                cout << "Du hast nicht genügend Eisen/arbeitslose Männer...\n" << endl;
                            }
                            else
                            {
                                Wasserwerk +=1;
                                Eisen -= Wasserwerkkosten;
                                Mann -= Wasserwerkkostenmann;
                            }
                        } break;
    
                        case ('4'):
                        {
                            if ((Eisen < 20) || (Frau < 2))
                            {
                                cout << "Du hast nicht genügend Eisen...\n" << endl;
                            }
                            else
                            {
                                Reisplantage +=1;
                                Eisen -= Reisplantagekosten;
                                Frau -= Reisplantagekostenfrau;
                            }
                        } break;
                    } break;
                } break;


                case ('f'):
                case ('F'):
                {
                    cout << "\n   Forschungen" << endl;
                    cout << "(1)Einsenverarbeitung Stufe: " << Eisenverarbeitung << endl;
                    char Forschungenforschen;
                    cout << "\nWelches Forschungen möchten Sie weiterforschen?" << endl;
                    cin >> Forschungenforschen;
                    switch (Forschungenforschen)
                    {
                        case ('1'):
                        {
                            if (Eisen < 5120)
                            {
                                cout << "Du hast nicht genügend Eisen...\n" << endl;
                            }
                        
                            else
                            {
                                Eisenverarbeitung +=1;
                                Eisen -= Eisenverarbeitungkosten;
                            }
                        } break;
                    } break;
                } break;

                case ('b'):
                case ('B'):
                {
                    cout << "\n   Bewohner und Truppen" << endl;
                    cout << "(1)Männer: " << Mann << endl;
                    cout << "(2)Frauen: " << Frau << endl;
                    cout << "(3)Schwertkämpfer: " << Schwertkaempfer << endl;
                    cout << "\nWelche Bewohner/Einheiten wollen sie rekrutieren?" << endl;
                    char Bewohnertruppenrekrutieren;
                    cin >> Bewohnertruppenrekrutieren;
                    switch (Bewohnertruppenrekrutieren)
                    {
                        case ('1'):
                        {
                            if ((Wasser < 10) || (Reis < 21))
                            {
                                cout << "Du hast nicht genügend Wasser/Reis...\n" << endl;
                            }
                            else
                            {
                                Mann +=1;

                                Wasser -= Mannkostenwasser;
                                Reis -= Mannkostenreis;
                            }
                        } break;

                        case ('2'):
                        {
                            if ((Wasser < 12) || (Reis < 41))
                            {
                                cout << "Du hast nicht genügend Wasser/Reis...\n" << endl;
                            }
                            else
                            {
                                Frau +=1;
    
                                Wasser -= Fraukostenwasser;
                                Reis -= Fraukostenreis;
                            }
                        } break;

                        case ('3'):
                        {
                            if ((Eisen < 81) || (Mann < 1))
                            {
                                cout << "Du hast nicht genügend Eisen/arbeitslose Männer...\n" << endl;
                            }
                            else
                            {
                                Schwertkaempfer += 1;
                                Eisen -= Schwertkaempferkosten;
                                Mann -= 1;
                            }
                        } break;
                    } break;
                } break;

                case ('n'):
                case ('N'):
                {
                    cout << "\n\n\nEine Runde Später..." << endl;
                } break;

                default:
                {
                    cout << "\n\n\nfalsche Eingabe\n\n\n" << endl;
                } break;
            } //switchende

        } //ifende

        else if ((EingabeStart == 'n') || (EingabeStart == 'N'))
        {
            Gesamtrunde += 0;
            cout << "Schade das Sie uns verlassen!" << endl;
        } //elseifende


        else
        {
            cout << "Falsche Eingabe" << endl;
        } //elseende

    } //Schleifenende


    return 0;
} //mainende


Hier war nun der Quelltext!

Nun es funktioniert im moment alles super mit der WIN32 anwendung!
Nur eines gibt mir jede Menge Kopfzerbrechen.
Wie bekomme ich es mit den Zeitvariablen...

C-/C++-Quelltext

1
2
3
4
5
6
z.b.
// Gebäudebauzeiten

unsigned float Eisenhuettezeit = 5.53;
unsigned float Wohnhauszeit = 2.21;
unsigned float Wasserwerkzeit = 9.554;
unsigned float Reisplantagezeit = 0.64;

...so hin, das es wirklich in Minuten angezeit wird, wie lange es noch zum bauen benötigt und das wenn man etwas bauen möchte, es auch diese gewisse Zeit dauert. [Überlegung nun --> Wie bei Browsergames üblich, man drückt auf Bauen und dann steht die Anzeige dort, wie lange es noch benötigt, bis diese Kontruktion gebaut wurde.]


Dazu wollte ich noch wissen, wäre es Sinnvoll die Variablen und / oder Rechnungen auf einem "extra Blatt" zu deklarieren?


Diesen Quelltext habe ich von ca.2:00 bis um 7:30 Uhr erstellt, drum bitte ich meine Rechtsschreibfehler zu überstehen :D .


Mfg. Michael Herker
Mfg. Michael Herker :D

2

09.05.2009, 09:38

Und wie willst du das im Browser ausgeben?

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

3

09.05.2009, 10:53

Ja, ist möglich.

http://www.tntnet.org/index.html

Ob es viel Sinn macht und man mit einer Websprache nicht doch besser genügt wäre, sei dahingestellt. ;)

Schappy

Frischling

  • »Schappy« ist der Autor dieses Themas

Beiträge: 17

Wohnort: Scheeßel

Beruf: Schüler

  • Private Nachricht senden

4

09.05.2009, 12:40

Danke für diese Seite! Das ist sehr interessant!
Also muss ich zu allererst das Browsergame schreiben und danach diesen Compiler downloaden? Oder direkt in einem der Compiler auf dieser Seite enthaltenen Compiler das komplette BG schreiben?
So weit ich verstanden habe, reagiert der Compiler auf c++ und html? D.h. dies wird einfach in diesem Compiler mit benutzt?
Mfg. Michael Herker :D

5

09.05.2009, 12:48

Noch ein Hinweis: Wenn du schon C++ benutzt, solltest du unbedingt Klassen einsetzen. Besonders wenn dein Spiel grösser werden soll, wird die Wartung sonst zur Hölle. Globale Variablen sind etwas vom Schlimmsten, weil sie viel zu grosse Abhängigkeiten schaffen. In C++ kommt man praktisch ohne aus, wenn man sein Programm richtig strukturiert. Auch ellenlange Funktionen sind unüblich, da sie die Übersicht und Wartung stark behindern und somit Fehler fördern. Aufteilung in mehrere Funktionen (je nach Aufgabe) kann Abhilfe schaffen.

Schappy

Frischling

  • »Schappy« ist der Autor dieses Themas

Beiträge: 17

Wohnort: Scheeßel

Beruf: Schüler

  • Private Nachricht senden

6

09.05.2009, 13:25

Ja okay, das mit Klassen sehe ich sofort ein! Allerdings bin ich noch nicht ganz bei den Seiten des Spieleprogrammiererbuch um damit gut umzugehen! ich werde mich dort hinein lesen, bevor ich nun weiter arbeite ;)

ich danke :!:
Mfg. Michael Herker :D

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

7

09.05.2009, 13:37

Hehe. Dann würde ich das mit dem programmieren für den Browser aber lassen. ;) - Bleib noch ein wenig in der Konsole, auch wenn es halt ein wenig öde wirkt.. Besser, als übereilig irgendetwas zu machen, was du am Ende nicht verstehst..

8

09.05.2009, 14:11

Falls du jetzt C++ lernst um ein Browsergame zu schreiben (nur für den Fall... ^^) - sicher ist das möglich, aber irgendwie so, als würdest du den Führerschein machen, um dann mit dem Auto deinen Pizzateig plattzufahren.

Fürs Browsergame: nimm PHP und fang hier an:

http://tut.php-quake.net/de/

Schappy

Frischling

  • »Schappy« ist der Autor dieses Themas

Beiträge: 17

Wohnort: Scheeßel

Beruf: Schüler

  • Private Nachricht senden

9

09.05.2009, 14:14

Nein, ich lerne c++ um späterzu versuchen in die Game Academy hinein zu kommen, dazu möchte ich Spieleprogrammierer werden!
Es ist ein zusätzlicher Versuch ein Browsergame mit c++ zu schreiben und dazu mit zu lernen die c++ funktioniert um ein gutes ansehnliches Minigame zu bauen (oder wie geschrieben das Browsergame).

Ich lerne -nicht um ein BG zu bauen- c++, sondern mit dem Versuch ein BG zu bauen um damit mir c++ kenntnisse anzueignen! ;)

*hoffe ihr versteht mich* hehe!



Ich merke selber gerade, das ich noch ein wenig mehr Übung benötige :) und diese erstmal in der Konsole mir holen muss! Dazu arbeite ich ja im moment nur mit der Konsole!
Mfg. Michael Herker :D

10

09.05.2009, 15:04

Du produzierst dir mit C++ aber einen ziemlichen Overhead an Arbeit nur um das dann über einen Webserver auszugeben.

Für ein Browsergame solltest du lieber eine Sprache nehmen, welche direkt verwendet werden kann.

Empfehlen würde ich dir dafür eher Java oder PHP


Ich glaube nicht, dass du besonderen Eindruck damit schinden kannst, dass du etwas mit einer Sprache geschrieben hast, was sonst keiner dafür benutzt.

Dann lern lieber Java und realisier das Ganze auf einem Tomcat Server als Servlet/JSP/Java Server Faces oder was es da sonst noch gibt.

Dann hast du eine direkte Unterstützung zu deinem Vorhaben und die Syntax von Java ist der von C++ relativ ähnlich.

Wenn es dir darum geht C++ zu lernen, solltest du dir lieber erstmal ein anderes Thema suchen.

Werbeanzeige