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

Mr-Black

Frischling

  • »Mr-Black« ist der Autor dieses Themas

Beiträge: 5

Wohnort: Zu Hause

Beruf: Koch

  • Private Nachricht senden

1

24.07.2014, 16:02

Wollte mal wissen, ob das unter sauberes Programmieren fällt, oder eher unsauberes.

Hallö Allereseits.

Wie in meim ersten Beitrag gestern schon angesprochen, bin ich noch sehr neu in der Welt des Programmirens.
Deswegen da ich ( in meinem Buch, Forums, Tuts, usw ) überall halt zu hören sehn bekomme man soll von anfang an, auf eine saubere & gute strukturierung des Quellcodes achten.
Wollte ich mal wissen auch wenn es nicht viel ist, ob es Sauber und verständlich ist.
Oder doch eher wirr und schlecht lesbar.

PS: Ka ob das hier das Richtige Thema / Forum ist, aber es erschin mir am wenigsten störend hier.
Für so eine banale Frage. sollte es falsch sein bitte ich um entschuldigung.

Hier mal der Code

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
#include <iostream>

using namespace std;

int main ()

{
// Variablen.
int n_Spieler;
char ch_Modus;
int n_Level;
// Variablen einen wert zuweisen.
n_Spieler = 0, 1, 2;
ch_Modus = 'J', 'T';
n_Level = 1, 2, 3;
//Hauptprogramm
//
//Spieler zahl auswahl.

cout << "Willkommen im Spiel." << endl;
cout << "Bitte Wählen sie die Anzahl der Spieler aus : 0 , 1 , 2 , 3 , 4 Spieler, vobei 0 SPieler das Spiel Beendet." << endl;
cout << "Hier bitte die anzahl der SPielr Schreiben : ";
cin >> n_Spieler;

    //ab hier kommt jetzt die abfrage welche spieler zahl ausgewählt wurde.
    if (n_Spieler == 0)
        {
            cout << "Danke für das Spielen.";
        }
    else if (n_Spieler == 1)
        {
        cout << "Willkommen im Singel Palayer Modus." << endl;
        cout << "Bitte wähle ein Level";
        cin >> n_Level;
                        
        //abfrage für die level auswahl.
            if (n_Level == 1)
                {
                    cout << "Level 1" << endl;
                }
            else if (n_Level == 2)
                {
                    cout << "Level 2" << endl;
                }
            else if (n_Level == 3)
                {
                    cout << "Level 3" << endl;
                }
            else
                {
                    cout << "Dises level existirt nicht, Programm wird Beendet.";
                }
                
        }
        else
            {
            cout << "Willkommen im Multiplayer Modus." << endl;
            cout << "Wollt ihr im (J)eder gegen Jeden Modus spielen? dann Drück bitte J und dann Enter." << endl;
            cout << "Oder" << endl;
            cout << "Wollt ihr im (T)eam Modus ihr gegen denn PC Spielen? dann Drück bitte T und dann Enter." << endl;
            cout << "J/T : ";
            cin >> ch_Modus;
                //Modus abfrage.
                if (ch_Modus == 'J')
                    {
                        cout << "Willkommen im Modus Jeder Gegen Jeden, Hier ist alles erlaubt." << endl;
                        cout << "Bitte wähle ein Level";
                        cin >> n_Level;
                        
                        //abfrage für die level auswahl.
                        if (n_Level == 1)
                            {
                                cout << "Level 1" << endl;
                            }
                        else if (n_Level == 2)
                            {
                                cout << "Level 2" << endl;
                            }
                        else if (n_Level == 3)
                            {
                                cout << "Level 3" << endl;
                            }
                        else
                            {
                                cout << "Dises level existirt nicht, Programm wird Beendet.";
                            }
                    }
                else if (ch_Modus == 'T')
                    {
                        cout << "Willkommen im Team Modus, Macht denn PC plat Jungs." << endl;
                        cout << "Bitte wähle ein Level";
                        cin >> n_Level;
                        
                        //abfrage für die level auswahl.
                        if (n_Level == 1)
                            {
                                cout << "Level 1" << endl;
                            }
                        else if (n_Level == 2)
                            {
                                cout << "Level 2" << endl;
                            }
                        else if (n_Level == 3)
                            {
                                cout << "Level 3" << endl;
                            }
                        else
                            {
                                cout << "Dises level existirt nicht, Programm wird Beendet.";
                            }
                    }
                else
                    {
                        cout << "Disen Modus Gibt es nicht, Programm wird Beendet.";
                    }
            
            }   

return 0;

}


Bitte seit erlich ^^ kann Kritik verkrafften will ja schlisslich was lernen =)

Greez Mr-Black

--- Rechtschreibfehler sind geistiges eigentum und nur zu eurer Belustigung hinzugefügt worden. ---
Si vis pacem para bellum = Wer den Frieden sucht, muss sich für den Krieg rüssten

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

2

24.07.2014, 16:09

  • Überflüssige Kommentare vermeiden ;) "Variablen" und "Variablen einen Wert zuweisen" sind solche. Das siehst du auch noch in 3 Jahren, dass das Variablen sind und die einen Wert bekommen. Kommentare sollen dabei helfen den Code zu verstehen. Nicht noch mal den Code in einer anderen Sprache abbilden ;)
  • Variablen sollte man erst dann deklarieren, wenn man sie auch wirklich braucht. Und nicht direkt alles am Anfang einer Funktion
  • Du kannst einer Variable auch direkt einen Wert zuweisen
  • Solche Themen hatten wir hier aber auch schon öfter mal. Kannst ja mal gucken, ob du die über die Suche wiederfindest.

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

3

24.07.2014, 16:13

Am wichtigsten ist die richtige Formatierung. Nach einem { einmal mehr einrücken und nach dem } wieder einmal weniger.

Die meisten IDEs erlauben einem mehrere Zeilen zu selektieren und gleichzeitig mit Tab einzurücken. Mit Shift+Tab gehts einen Schritt zurück.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

4

24.07.2014, 16:55

using namespace std halte ich für schlechten Stil. Der std-Namensraum ist voll mit kurzen kryptischen Buchstabengewürzen, da sind Namenskollisionen recht wahrscheinlich. Für den Anfang, wenn man nur auf der Konsole programmiert und quasi jede zweite Zeile irgendwas mit Ein- oder Ausgabe macht, ist das aber ok. Später dünnt sich die dichte std-Nutzung dann eh aus.

Außerdem: In VisualStudio werden alle Zeilen der aktuellen Auswahl mit Alt+F8 formatiert. Wende das mal auf Deinen gesamten Code an und schau, was rauskommt.
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

5

24.07.2014, 17:11

Wirklich am aller wichtigsten und Grundlegendsten, deshalb wiederhole ich das noch mal, sind einheitliche richtige Einrückungen. Bei den Geschweiften Klammern im Code hast du häufig doppelt eingerückt. Anfangs nach "main" ist eine Leerzeile. Danach gar nicht eingerückt. Einfache Grundregel für den Anfang: Jeden mit geschweiften Klammern umschlossenen Block jeweils den Inhalt eins weiter einrücken. Außerdem einzeilige Statements oder eine lange Zeile die umgebrochen ist einmal einrücken. Der Sinn der Einrückung ist es, logisch zusammenhängende Blöcke visuell zu gruppieren, dass man den Ablauf und was zusammengehört schneller erfassen kann. Das ist unglaublich wichtig.

Eine Grundregel bei allen Stilen ist es außerdem, in sich konsequent zu bleiben. Also nicht mal so mal anders sondern sich eine Weise aneignen und dabei bleiben. Für ein Projekt zumindest.

Ergänzend:
  1. Variablen direkt initialisieren.
  2. In dem Fall ist es ziemlich sinnlos sie überhaupt zu initialisieren, weil mit scheint, dass der Inhalt eh überschrieben wird.
  3. Was zur Hölle soll das: "n_Spieler = 0, 1, 2;"? Ist dir bewusst was der Kommaoperator in C(++) macht?
  4. "endl" ist hier so unnötig. "\n" ist in der Regel zweckmäßiger. Außerdem kannst du dann auch viele "cout <<" sparen.
  5. Die "ifs" hier könnten ein "switch" sein.
  6. Du hast mehrmals "Copy-Paste" Code(Dieser Levelwahlcode...). Redundanter Code sollte hier zu Methoden zusammengefasst werden.
  7. Das "if" wäre hier ja gut mit einem "switch" zu ersetzen, wie bereits gesagt. Unabhänigg davon finde ich es wesentlich übersichtlicher, die geschweiften Klammern bei 1 Zeilern wegzulassen. Spart viel Platz und macht den Code damit übersichtlicher.
  8. "n_" Typpräfixe sind keine gute Idee. Die IDE zeigt dir außerdem auch so den Typ an. Außerdem sollten die Variablen sich in der Regel selbst erklären, welchen Typ sie besitzen.
  9. Ich halte es für sehr schnlechten Stil Deutsch im Code zu verwenden. Bei Kommentaren sehe ich das nicht so eng, aber bei allen Identifiern kommt sonst einfach bloß Denglisch raus und ändern lässt sich das nicht mehr so leicht.

Mr-Black

Frischling

  • »Mr-Black« ist der Autor dieses Themas

Beiträge: 5

Wohnort: Zu Hause

Beruf: Koch

  • Private Nachricht senden

6

24.07.2014, 17:12

Danke erst mal für die guten tipps.

@ Schrompf

ich benutze kein VisualStudio ^^ benutze Orwell Dev-C++
Si vis pacem para bellum = Wer den Frieden sucht, muss sich für den Krieg rüssten

Mr-Black

Frischling

  • »Mr-Black« ist der Autor dieses Themas

Beiträge: 5

Wohnort: Zu Hause

Beruf: Koch

  • Private Nachricht senden

7

24.07.2014, 17:24

@ Spiele Programmierer.

Zitat

5. Die "ifs" hier könnten ein "switch" sein.
Soweit bin ich vom stoff her noch nicht. ^^

desweiteren danke für die Tipps =)
Si vis pacem para bellum = Wer den Frieden sucht, muss sich für den Krieg rüssten

8

24.07.2014, 17:35

Warum benutzt du eigentlich beim zuweisen der Variablen den Kommaoperator?

xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

9

24.07.2014, 17:53

Ich wuerde auch empfehlen die verschiedenen Modi in eigene Funktionen zu packen. Das wuerde das ganze etwas uebersichtlicher machen und du musst nicht so tief verschachteln/einruecken.

Mr-Black

Frischling

  • »Mr-Black« ist der Autor dieses Themas

Beiträge: 5

Wohnort: Zu Hause

Beruf: Koch

  • Private Nachricht senden

10

24.07.2014, 17:53

Da ihr mich alle drauf ansprecht hab ich da wohl was falsch verstanden.
Aber jetzt wo ich drüber nach denke, habt ihr Recht ( nicht das ich ich das bezweifelt hätte ) aber ja ein "," beim zuweisen hat kein sin da man nur ein wert in einer variable speichern kann. der ja bei eingabe immer überschriben wird. oder ?

Hab da was durch einander gebracht. Schlicht ein fehler ^^

<---- Halt noch Kack Noob
Si vis pacem para bellum = Wer den Frieden sucht, muss sich für den Krieg rüssten

Werbeanzeige