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

john

Alter Hase

Beiträge: 786

Beruf: Schüler

  • Private Nachricht senden

11

02.07.2006, 22:49

DasGurke
Jo das kenn ich. :lol:
mfg
john

Firefly

Alter Hase

Beiträge: 484

Wohnort: Irgendwoundnirgendwo

  • Private Nachricht senden

12

03.07.2006, 09:17

erinnert mich irgendwie an den lennart steinke code-stil...

13

03.07.2006, 16:41

nix da
Wie findest de denn:

C-/C++-Quelltext

1
printf ((gaga ? "bla" : "bla2"));
;)
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Anonymous

unregistriert

14

03.07.2006, 18:30

EDIT: Ach sorry, hatte da was mißverstanden...

[Nein. wurde Editiert. cu Abrexxes]

15

04.07.2006, 14:45

naja "JBuilder" ==> nimm mal BlueJ, ist besser.
aber bevor dass hier wieder aushart will einfach mal was neues posten.
1. frage:
habe ich jetzt alles richtig gemacht oder den code verschlimm bessert?
2. frage:
die "case" anweisung für die buchstaben einer sorte(also n und N) brauchen 2 zeilen. das stört mich. wie kann man das besser machen?
3. frage:
wie könnte ich zahlenraten als MFC oder Win32 Anwendung realisieren.
(habs schon probiert aber ich habe bin da irgendwie überfordert.)

MFG Zahlenwächter

code aus dem buch(zum vergleich):

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
// C++ für Spieleprogrammierer

// Listing 4.11

// Zahlenraten

//

#include <iostream>
#include <windows.h>

using namespace std;

#pragma comment (lib, "winmm.lib")

// Funktionsprototypen

//

int Spielen (int Level);
int WaehleLevel (int Level);
int TesteHighscore (int Punkte, int Highscore);
void ZeigeInfos ();

// Hauptprogramm

//

int main ()
{
    // Variablen

    //

    char Auswahl;          // Gewählter Menüpunkt

    int Level = 5;         // Aktueller Level

    int Highscore = 100;   // Aktueller Highscore


    // Zufallsgenerator initialisieren

    srand (timeGetTime ());

    // Verarbeitung des Menüs

    do
    {
        // Menü ausgeben

        //

        cout << "Zahlenraten - Menue" << endl;
        cout << "-------------------" << endl;
        cout << "(N)eues Spiel starten" << endl;
        cout << "(L)evel waehlen" << endl;
        cout << "(H)ighscore anzeigen" << endl;
        cout << "(I)nfo" << endl;
        cout << "(B)eenden\n\n";

        // Eingabe abfragen

        cout << "Auswahl: ";
        cin >> Auswahl;

        // Je nach Eingabe verzweigen

        switch (Auswahl)
        {
            // Neues Spiel starten?

            case ('n'):
            case ('N'):
            {
                // Spielen

                int Punkte;
                Punkte = Spielen (Level);

                Highscore = TesteHighscore (Punkte, Highscore);

            } break;

            // Level wählen?

            case ('l'):
            case ('L'):
            {
                Level = WaehleLevel (Level);

            } break;

            // Highscore anzeigen?

            case ('h'):
            case ('H'):
            {
                cout << "Der aktuelle Highscore liegt bei ";
                cout << Highscore << " Punkten\n\n";

            } break;

            // Informationen anzeigen?

            case ('i'):
            case ('I'):
            {
                ZeigeInfos ();

            } break;

            // Spiel beenden?

            case ('b'):
            case ('B'):
            {
                cout << "Spiel beendet." << endl;

            } break;

            // Falsche Eingabe?

            default:
            {
                cout << "Falsche Eingabe!\n\n";

            }
        }

    } while (Auswahl != 'b' && Auswahl != 'B'); // Spiel beenden?


    cout << "Bis zum nächsten Mal" << endl;

    return 0;
} // main


// ZeigeInfos

//

// Aufgabe: Informationen zum Spiel anzeigen

//

void ZeigeInfos ()
{
    cout << "Zahlenraten V1.0" << endl;
    cout << "Beispiel aus \"C++ fuer Spieleprogrammierer\"";
    cout << "\n\n";
} // ZeigeInfos


// WaehleLevel

//

// Aufgabe: Neuen Level auswählen

//

int WaehleLevel (int Level)
{
    int NeuerLevel;

    do
    {
        // Neuen Level wählen

        cout << "Aktueller Level: " << Level << endl;
        cout << "Neuer Level (1 - 10): ";
        cin >> NeuerLevel;

        // Ungültigen Level gewählt?

        if (NeuerLevel < 1 || NeuerLevel > 10)
        {
            // Fehlermeldung ausgeben

            cout << "Ungueltiger Level-Wert" << endl;
        }

    } while (NeuerLevel < 1 || NeuerLevel > 10);

    // Gewählten Level zurückgeben

    return NeuerLevel;
} // WaehleLevel


// Spielen

//

// Aufgabe: Das eigentliche Spiel spielen

//

int Spielen (int Level)
{
    int Zufallszahl;         // Zufallszahl, die erraten werden muss

    int GerateneZahl = 0;    // Zahl, die der Spieler eingibt

    int Bereich = Level*10;  // Bereich der Zufallszahl

    int Versuche = 0;        // Anzahl der bisherigen Versuche

    int Punkte = 0;          // Punktzahl


    // Zufallszahl ermitteln

    Zufallszahl = (rand()%Bereich)+1;

    // Bereich ausgeben, in dem geraten wird

    cout << "\nDie gesuchte Zahl liegt zwischen 1 und ";
    cout << Bereich << endl;

    // So lange raten, bis die Zahl gefunden wurde

    while (GerateneZahl != Zufallszahl)
    {
        cout << "Dein Tipp: ";
        cin >> GerateneZahl;

        Versuche++;

        // Zahl hat nicht gestimmt, also Hinweis ausgeben

        if (GerateneZahl < Zufallszahl)
            cout << "Die gesuchte Zahl ist groesser" << endl;
        if (GerateneZahl > Zufallszahl)
            cout << "Die gesuchte Zahl ist kleiner" << endl;
    }

    // Die Zahl wurde erraten!

    cout << "\nGeschafft ! " << endl;
    cout << "Du hast die Zahl nach " << Versuche;
    cout << " Versuchen erraten !\n\n";

    // Punkte berechnen

    // Desto weniger Versuche und desto höher das Level,

    // je mehr Punkte werden vergeben

    //

    Punkte = Bereich - Versuche + 1;
    Punkte *= Level;

    // Wenn mehr Versuche benötigt wurden, als es Zahlen gibt,

    // kann das Ergebnis negativ sein.

    //

    if (Punkte < 0)
        Punkte = 0;

    // Punkte ausgeben

    cout << "Punkte: " << Punkte << endl;

    // Punkte zurückgeben

    return Punkte;
} // Spielen


// TesteHighscore

//

// Aufgabe: Prüfen, ob der Highscore geknackt wurde

//

int TesteHighscore (int Punkte, int Highscore)
{
    // Prüfen, ob der Highscore geknackt wurde

    if (Punkte > Highscore)
    {
        cout << "Glueckwunsch. Neuer Highscore !\n\n";
        Highscore = Punkte;
    }
    else
    {
        cout << "Leider kein neuer Highscore\n\n";
    }

    // Highscore zurückgeben

    return Highscore;
} // TesteHighscore


so und jetzt meiner:

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
//Zahlenraten: Das Spiel

//Main


#include "Zahlenraten.hpp"

#pragma comment (lib,"winmm.lib")

unsigned char Auswahl = NULL;
unsigned int Level = 5;
unsigned int Highscore = 100;
unsigned int Punkte = 0;
unsigned int Zufallszahl = NULL;
unsigned int GerateneZahl = 0;
unsigned int Bereich = Level*10;
unsigned int Versuche = 0;

int main(void)
{
    srand (timeGetTime ());

    do
    {
        std::cout << "Zahlenraten - Menue\n";
        std::cout << "-------------------\n";
        std::cout << "(N)eues Spiel starten\n";
        std::cout << "(L)evel waehlen\n";
        std::cout << "(H)ighscore anzeigen\n";
        std::cout << "(I)nfo\n";
        std::cout << "(B)eenden\n\n";

        std::cout << "Auswahl: ";
        std::cin >> Auswahl;

        switch (Auswahl)
        {
            case ('n'):
            case ('N'):
            {
                Punkte = spielen(Level);
                Highscore = testeHighscore (Punkte, Highscore);
            }break;

            case ('l'):
            case ('L'):
            {
                Level = WaehleLevel(Level);
            }break;

            case ('h'):
            case ('H'):
            {
                std::cout << "Der aktuelle Highscore liegt bei: ";
                std::cout << Highscore << " Punkten\n\n";
            }break;

            case ('i'):
            case ('I'):
            {
                ZeigeInfos ();
            }break;

            case ('b'):
            case ('B'):
            {
                std::cout << "Spiel beendet.\n";
            } break;

            default:
            {
                std::cout << "Falsche Eingabe!\n\n";
            }
        }
    } while (Auswahl != 'b' && Auswahl != 'B');

    std::cout << "Bis zum naechsten Mal\n";

    return 0;
}

void ZeigeInfos()
{
    std :: cout << "Zahlenraten V 1\n";
    std :: cout << "Beispiel aus \"C++ fuer Spieleprogrammierer\"";
    std :: cout << "\n\n";
}

unsigned int WaehleLevel (unsigned int Level)
{
    do
    {
        std::cout << "Aktueller Level: " << Level;
        std::cout << "\nNeuer Level (1 - 10): ";
        std::cin >> Level;

        if (Level < 1 || Level > 10)
        {
            std::cout << "Ungueltiger Level-Wert\n";
        }
    } while (Level < 1 || Level > 10);

    return Level;
}

unsigned int spielen (unsigned int Level)
{   
    Bereich = Level*10;
    Zufallszahl = (rand()%Bereich)+1;

    std::cout << "\nDie gesuchte Zahl liegt zwischen 1 und ";
    std::cout << Bereich;

    while (GerateneZahl != Zufallszahl)
    {
        std::cout << "\nDein Tipp: ";
        std::cin >> GerateneZahl;

        Versuche++;

        if (GerateneZahl < Zufallszahl)
            std::cout << "Die gesuchte Zahl ist groesser\n";
        if (GerateneZahl > Zufallszahl)
            std::cout << "Die gesuchte Zahl ist kleiner\n";
    }

    std::cout << "\nGeschafft!\n";
    std::cout << "Du hast die Zahl nach " << Versuche;
    std::cout << " Versuchen erraten! \n\n";

    Punkte = Bereich - Versuche + 1;
    Punkte *= Level;

    if (Punkte < 0)
        Punkte = 0;

    std::cout << "Punkte: " << Punkte;

    return Punkte;
}

unsigned int testeHighscore (unsigned int Punkte, unsigned int Highscore)
{
    if (Punkte > Highscore)
    {
        std::cout << " Glueckwunsch. Neuer Highscore!\n\n";
        Highscore = Punkte;
    }
    else
    {
        std::cout << "Leider kein neuer Highscore\n\n";
    }

    return Highscore;
}


und hier noch mein header file:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
//Zahlenraten: Das Spiel

//Header


#include <iostream>
#include <windows.h>

unsigned int spielen(unsigned int Level);
unsigned int WaehleLevel (unsigned int Level);
unsigned int testeHighscore (unsigned int Punkte, unsigned int Highscore);
void ZeigeInfos ();
C# oder C++? ==> das ist hier die Frage.
"I want to die peacefully in my sleep like my grandfather. Not screaming in terror like his passengers."

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

16

04.07.2006, 19:53

Zitat

die "case" anweisung für die buchstaben einer sorte(also n und N) brauchen 2 zeilen. das stört mich. wie kann man das besser machen?


Theoretisch kann man das ganze Programm in eine Zeile schreiben ;)
Also einfach

C-/C++-Quelltext

1
            case ('n'): case ('N'): 

hoffe mal, dass ich jetzt nix verhauen hab :roll:

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

17

04.07.2006, 20:27

Man kann auch sowas machen:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
                    // There is something into, can anybody find it?


                        #include<stdio.h> 
                                    /*la*/int
                       main(int argc, char* argv) { int a =
                     0, b=9, *c = 0; scanf("%d", &a); c=&a; b
                    =8; printf("Hex: %h %h"/*langweil*/, a, &a);
                    printf("All: %d %h"/*langweil*/, b, &b); b=4
                    ; b=*c+5*5*(2*1*1*1); /*lalolu*/ scanf("%i",
                    &c); /*systemcls*/; printf("system?"); b=3
                    ; printf("W%cr%c", 111, (int)(0x6D));//ii
                       /*nfected by a_worm};*/ printf("ausga"
                        , b, a, c); scanf("%i", &b); b=2*b;
                            /*come to*/      /*an end*/}


(selbsterstellt für einen Vortrag über Code Reliability ^^ )
Das wird fehlerfrei kompiliert, wie sinnvoll das aber ist ist fraglich

rklaffehn

Treue Seele

Beiträge: 267

Wohnort: Braunschweig

  • Private Nachricht senden

18

04.07.2006, 22:35

Ja, da gibt es ganze Contests dazu, hier zum Beispiel mal einer:

IOCCC: http://www.ioccc.org/main.html

Oder eben mit Google Hilfe: http://www.google.de/search?q=obfuscated+source+contest


... aber bitte nicht nachmachen 8)
God is real... unless declared integer.
http://www.boincstats.com/signature/user_967277_banner.gif

19

05.07.2006, 21:12

hey koschka, was hat dass mit mir zu tun?

Zahlenwächter
C# oder C++? ==> das ist hier die Frage.
"I want to die peacefully in my sleep like my grandfather. Not screaming in terror like his passengers."

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

20

05.07.2006, 21:44

nichts, ging um grek's statement ;)

Werbeanzeige