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

Anonymous

unregistriert

1

05.01.2009, 16:53

Ich habe wieder ein kleines Zahlenraten-Programm programmiert. Ich bitte euch aber nicht viel auf die Asführung zu schauen, ich würde lieber Kritik über den Code bekommen. Denn wenn ich verbessern sollte wäre jetzt der Zeitpunkt!

http://www.file-upload.net/download-1359319/Zahlenraten.7z.html

Errschaffer

Alter Hase

Beiträge: 865

Wohnort: Frankfurt

  • Private Nachricht senden

2

05.01.2009, 17:08

Ufff.Wie wäre es mal mit Klassen. Weil so blickt da ja niemand durch.
Wenn du dir Klassen machst kannst du alles was Zusammen gehört schön zusammenfassen. Dann macht es auch mehr Spaß nach Fehlern zu suchen.B.z.w das Prorgamm zu erweitern

Hier mal ein Vorschlag wie man den Code sinnvoller gestallten könnte.

Klasse CFramework:darstellung des Hautmenüs,Infotext, Verzweigungen,u.s.w
Klasse CPlayer: Enthält die Gewinnerkennung und einen "Spielzug"
Klasse CHighscore (dafür gibts auch bessere Namen :p ):Kümmert sich um das Speichern,Laden und Anzeigen der Highscoreliste

Das mit dem Timer würde ich bei so einem Spiel eh weglassen. Wie wäre es stattdessen mit einer Abfrage wie "Für zurück bitte 2 drücken".So steht der Spieler nicht so unter "Stress"

Achja wenn du dann Klassen benutzt solltest du Include Guards benutzen.

edit: Ich sehe auch gerade das du in der Datei Hauptemnü was abspeichert.Das macht man nicht. Weil es keinen Sinn ergibt.
Das könnte man z.b auch wieder eine Aufgabe einer Klasse sein.

Anonymous

unregistriert

3

05.01.2009, 17:10

Zitat von »"Errschaffer"«

Ufff.Wie wäre es mal mit Klassen. Weil so blickt da ja niemand durch.
Wenn du dir Klassen machst kannst du alles was Zusammen gehört schön zusammenfassen. Dann macht es auch mehr Spaß nach Fehlern zu suchen.B.z.w das Prorgamm zu erweitern

Hier mal ein Vorschlag wie man den Code sinnvoller gestallten könnte.

Klasse CFramework:darstellung des Hautmenüs,Infotext, Verzweigungen,u.s.w
Klasse CPlayer: Enthält die Gewinnerkennung und einen "Spielzug"
Klasse CHighscore (dafür gibts auch bessere Namen :p ):Kümmert sich um das Speichern,Laden und Anzeigen des Hautmenü.

Das mit dem Timer würde ich bei so einem Spiel eh weglassen. Wie wäre es stattdessen mit einer Abfrage wie "Für zurück bitte 2 drücken".So steht der Spieler nicht so unter "Stress"

Achja wen du dann Klassen benutzt solltest du Include Guards benutzen.


KK thx ;)

Errschaffer

Alter Hase

Beiträge: 865

Wohnort: Frankfurt

  • Private Nachricht senden

4

05.01.2009, 17:13

Sry die Klasse Highscore soll natürlich nicht das Hauptmenü anzeigen.Sondern die Highscoreliste.Habs mal korrigiert.

Anonymous

unregistriert

5

05.01.2009, 17:31

Zitat von »"Errschaffer"«

Sry die Klasse Highscore soll natürlich nicht das Hauptmenü anzeigen.Sondern die Highscoreliste.Habs mal korrigiert.


Danke, abe weißt Du wie man in einer private-Klasse "get" und "set" mit einbaut, sodass man die privaten Membervariablen einfach so freigeben kann?

6

05.01.2009, 17:43

Zitat von »"Spiri"«


Danke, abe weißt Du wie man in einer private-Klasse "get" und "set" mit einbaut, sodass man die privaten Membervariablen einfach so freigeben kann?


Was ist jetzt mit der Frage gemeint ??? Ich versteh den Sinn nicht^^

1.) Machs doch direkt öffentlich^^

C-/C++-Quelltext

1
2
3
4
5
6
class Klasse
{
public:
  // Variablen blablabla

int m_iInt;
};
Kann man direkt drauf zugreifen

2.)Privates Abfragen ist doch einfach:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
class Klasse
{
// private:

int m_iInt;
public:
void set(int i){m_iInt = i;}
int get(){return m_iInt;}
};

Errschaffer

Alter Hase

Beiträge: 865

Wohnort: Frankfurt

  • Private Nachricht senden

7

05.01.2009, 17:49

Zitat von »"Spiri"«

Zitat von »"Errschaffer"«

Sry die Klasse Highscore soll natürlich nicht das Hauptmenü anzeigen.Sondern die Highscoreliste.Habs mal korrigiert.


Danke, abe weißt Du wie man in einer private-Klasse "get" und "set" mit einbaut, sodass man die privaten Membervariablen einfach so freigeben kann?


Ich denke mal das ist etwas blöd formuliert.Freigegeben tut man nicht wenn es Privat ist man greift nur darauf zu.get und set methoden sind Zugriffsfunktionen das heißt um ,wie du schon gesagt hast,auf eine private member Variable zuzugreifen.

Hier mal ein kleines Beispiel.

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
ass Testklasse
{
private:
int m_Farbe; //Das ist eine private Membervariable.So wie es jetzt ist kann sie von außen

             //nicht verwendet werden


public:
void Funktion (); //Das ist die Zugriffsfunktion, Mit der haben wie Zugriff auf eine Private Membervariable




};

void Testklasse::Funktion ()
{
    cout<<"Bitte eingeben: "<<endl;
    cin>>m_Farbe;


}

int main ()
{
    
    
    //Instanz

    Testklasse Instance;

    Instance.Funktion ();

return 0;
}


edit:Mist! Zu langsam :(

Anonymous

unregistriert

8

05.01.2009, 17:50

Es funzt aber nicht:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <windows.h>
#include <cstdio>
#include <time.h>
#include <fstream>
#include <assert.h>
#include "Timer.hpp"
#include "CPlayer.hpp"

using namespace std;
#pragma comment (lib, "winmm.lib")

int main ()
{
    CPlayer Spieler;
    Spieler.set ("");
    Spieler.get ();
    return 0;
}


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
#include <iostream>
class CPlayer
{
private:

    char m_Spielername[1000];
    float m_Versuche;
    long m_Punkte;

public:

    void set (char m_Spielername[1000])
    {
        m_Spielername[1000];
        m_Versuche = 0;
        m_Punkte = 0;
    }

    int get ()
    {
        return m_Spielername[1000];
    }
};

9

05.01.2009, 17:55

[Edit:] :roll:

Errschaffer

Alter Hase

Beiträge: 865

Wohnort: Frankfurt

  • Private Nachricht senden

10

05.01.2009, 17:57

Zitat von »"Spiri"«

Es funzt aber nicht:

Was geht den nicht? Fehlermeldung?
Außerdem solltest du Strings für die Spielernamen verwenden.

Werbeanzeige