Buggy McDermit 165 Melden Geschrieben 8. September 2011 (bearbeitet) Um dir etwas Schreibarbeit zu sparen und m.M.n. den Quellcode gerade am Anfang übersichtlicher zu gestalten könntest du using namespace std; einbauen. Googlesuche "Standard Namensraum c++" für mehr Infos Bevor jetzt einer rumweint mir sind die Probleme mit unterschiedlichen Namensräumen bei großen Projekten durchaus bekannt, aber ich hatte damit nie Probleme. Stichwort "Namenskollisionen". Ich persönlich finde es so sogar besser zur Abgrenzung von Standardbezeichnern und eigenen Namespaces, aber muß jeder selber entscheiden oder halt das Pflichtenheft... Beispiel: #include <iostream> int main() { std::cout << "Hello World"; system("pause"); return 0; } und so sieht das dann aus #include <iostream> using namespace std; int main() { cout << "Hello World"; system("pause"); return 0; } Ich kann dir ein Buch empfehlen ! http://www.galileocomputing.de/2156?GPP=opc3 http://www.galileocomputing.de/download/da...von_a_bis_z.pdf Zufällig ist gerade das Thema Namensräume dort als Leseprobe enthalten aber wie du siehst ist es bereits Seite 225 also nicht gleich in die Ecke werfen, wenn du es nicht 100% verstehst bzw. Begrifflichkeiten dort nicht mehr erklärt werden. Ansonsten kannst du dir auch erstmal den Style des Buches anschauen indem du das quasi "baugleiche" Buch zu C statt C++ anschaust das gibt es komplett kostenlos im Netz. http://openbook.galileocomputing.de/c_von_a_bis_z/ Best C (nicht C++) Buch ever ! Gleicher Autor ! Edit: Wenn du die Grundlagen erstmal draufhast kannst du dich immer noch entscheiden, ob du dein Spiel nicht lieber in einer anderen Sprache programmieren möchtest. Spontan würde ich dafür eher Actionscript (Flash) nehmen oder halt sowas wie schon erwähnt XNA wenn es nur unter Windows laufen soll, aber ob das alles so geeignet für Einsteiger ist laß ich mal im Raum stehen. Wenn du später C++ halbwegs drauf hast kannst dich immer noch umschauen. Bearbeitet 8. September 2011 von Buggy McDermit
rc-ameise 38 Melden Geschrieben 8. September 2011 Danke für die antworten Aber ich bleibe bei C++, schon zuviel darüber gelernt xD Momentan Programmiere uich gerade ein kleines Wett Spiel^^ Mit Geld uns so, wenn es fertig ist werde ich es mal hier posten um eure Meinungen zu hören. Das Buch schaut interessant aus, ich werde es mir also demnächst holen, oder kennt ihr noch andere?
rc-ameise 38 Melden Geschrieben 9. September 2011 So nun ne frage zu c++: Wie kann ich machen das man bei einer eingabe nicht Enter drücken muss? Also nur die nummer zb. tippen. Habe gelesen das ghet mit getch, aber irgendwwie kriege ich das nicht hin...
Buggy McDermit 165 Melden Geschrieben 9. September 2011 (bearbeitet) Hast du die entsprechende Headerdatei eingebunden in der getch() enthalten ist ? Edit: Bringt dir nichts wenn ich es hier einfach poste...falls ich dich richtig verstanden habe meinst du in etwa sowas #include <iostream> #include <conio.h> int main() { // Speicherplatz fuer Eingabe schaffen char eingabe; // Speicherplatz fuellen durch Lesen von der Standardeingabe // also der Tastatur im Normalfall eingabe = getch(); // Optional: Eingelesenes Zeichen ausgeben cout << eingabe << endl; return 0; } Edit2: Tausend Typos korrigiert gn8 Bearbeitet 9. September 2011 von Buggy McDermit
rc-ameise 38 Melden Geschrieben 10. September 2011 (bearbeitet) So nun hier mein Pferderdewettspiel: // Pferdewettspiel by rcameise 2011 #include <iostream> #include <time.h> #include <fstream> #include <iomanip> #include <conio.h> using namespace std; short eins; short zwei; short drei; short vier; short fuenf; short runden; short menu; long betrag; long summe = 1000; int pferd[5]; int i, j, k; bool platz; bool geld; bool ok; bool nummer; char eingabe; char auswahl; int main() { //Startscreen cout << "C++ Pferderennen\n\n\n\n\n\n\n" <<"by rcameise 2011" << endl; system ("PAUSE"); system ("CLS"); //Spielmenü cout << "1. Spielen!\n2. Beenden" << endl; eingabe = getch(); if(eingabe=='1') { // Hier beginnt das eigentlche Spiel // Runden cout << "Anzahl an Runden: " << endl; cin >> runden; system ("CLS"); for (int k=1; k<=runden; k++) { cout << "Sie sind in der "; if (k==runden) { cout << "letzten Runde!"; } else { cout << k << ". Runde !"; } //Wettart folgt noch //Einsatz do { cout << "\nAuf welches Pferd wollen Sie setzen?\n1. Eins\n2. Zwei\n3. Drei\n4. Vier\n5. Fuenf" << endl; auswahl = getch(); if (auswahl < '5' || auswahl == '5') { nummer = true; } else { cout << "Dieses Pferd Existiert nicht!" << endl; nummer = false; } }while (!nummer); system ("CLS"); do { cout << "Ihr Geld: " << summe << "\nWieviel Geld wollen Sie bieten?" << endl; cin >> betrag; if (betrag == summe || betrag < summe) { ok = true; } else { cout << "Sie haben zu wenig Geld, bieten Sie nochmal" << endl; ok = false; } }while (!ok); system ("CLS"); //Nun wird die Platzierung ausgewertet srand(time (NULL)); for(i=0; i<5; i++) { do { pferd[i] = (rand() %5) +1; platz = true; for (j=0; j<i; j++) { if (pferd[i] == pferd[j]) { platz = false; } } }while (!platz); } //Plazierungen wiedergegeben cout << "Plazierungen\nEins: " << pferd[0] << "\nZwei: " << pferd[1] << "\nDrei: " << pferd[2] << "\nVier: " << pferd[3] << "\nFuenf: " << pferd[4] <<"\n\nIhre Wahl: " << auswahl << endl; //Auswertung Win-Lose if (auswahl == 1 && pferd[0] == 1) { cout << "Gewonnen!" << endl; geld = true; } else if (auswahl == 2 && pferd[1] == 1) { cout << "Gewonnen!" << endl; geld = true; } else if (auswahl == 3 && pferd[2] == 1) { cout << "Gewonnen!" << endl; geld = true; } else if (auswahl == 4 && pferd[3] == 1) { cout << "Gewonnen!" << endl; geld = true; } else if (auswahl == 5 && pferd[4] == 1) { cout << "Gewonnen!" << endl; geld = true; } else { cout <<"Schade..." << endl; geld = false; } //Auswertung Geld if (geld == true) { cout << summe << " + " << betrag << " = " << endl; summe = summe+betrag; cout << summe << endl; } else if (geld == false) { cout << summe << " - " << betrag << " = " << endl; summe = summe-betrag; cout << "Ihr Geld: " << summe << endl; } system ("Pause"); system ("CLS"); } // Punkte cout << "Ihre Punkte: " << summe << endl; system ("Pause"); } // Menü - Spiel Beenden else { cout << "Bye" << endl; } } Nichts besonderes, was meint ihr dazu? Bearbeitet 10. September 2011 von rc-ameise
=kettcar= 259 Melden Geschrieben 14. September 2011 (bearbeitet) klappts? daran knabber ich grad.. Aufgabe: Erstellen Sie die externe Funktion und das Hauptprogramm als fehlerfrei kompilierbaren C++-Quellcode. Im Hauptprogramm soll die eingelesene ISBN-Nummer an die externe Funktion übergeben werden und nach Prüfung soll das Ergebnis in Form einer Bildschirmmeldung entsprechend den Auswertekennzeichen ausgegeben werden. (Verwenden Sie für die Meldung ein zweidimensionales Char-Array) Für die Prüfabteilung eines Buchhandels soll eine externe Funktion names ISBNPRF zur Kontrolle der ISBN-Nummern erstellt werden. Beschreibung: Die ISBN-Nummer hat folgendes Format 9-999-99999-X (X=Prüfziffer) Die externe Funktion soll die ISBN-Nummer prüfen und je nach Prüfungsergebnis ein entsprechendes Auswertungskennzeichen als numerischen Wert zurückliefern. Auswertekennzeichen: 1 Falsche Laenge der ISBN-Nummer 2 Falsche Trennzeichen in der ISBN-Nummer 3 Stellen der ISBN-Nummer nicht numerisch 4 Falsche Pruefziffer 5 ISBN-Nummer korrekt Berechnung der Prüfziffer: 1. Jede Stelle ist mit einem stellenbezogenen Faktor (1, 2, 3 ... bis 9) zu multiplizieren. 2. Die Summe aller Multiplikationen ist durch 11 zu dividieren; der Rest ist zu ermitteln. 3. Der Rest ist die Prüfziffer; bei Rest 10 ist die Prüfziffer das Zeichen X. Bearbeitet 14. September 2011 von SWIZZ=kettcar=
PFLO 167 Melden Geschrieben 15. September 2011 Mache gerade meine ersten Schritte in C. Habe mir dafür Visual Studio 2010 Prof. geladen, ich den Skripten wird aber Express verwendet/beschrieben. Nun soll ich unter Tools die Expert Settings aktivieren, ich finde aber keine Tools? Kann man diese Einstellungen bei Professional nicht ändern und muss ich mir jetzt doch Express laden?
Buggy McDermit 165 Melden Geschrieben 15. September 2011 So nun hier mein Pferderdewettspiel: // Pferdewettspiel by rcameise 2011 #include <iostream> #include <time.h> #include <fstream> #include <iomanip> #include <conio.h> using namespace std; short eins; short zwei; short drei; short vier; short fuenf; short runden; short menu; long betrag; long summe = 1000; int pferd[5]; int i, j, k; bool platz; bool geld; bool ok; bool nummer; char eingabe; char auswahl; int main() { //Startscreen cout << "C++ Pferderennen\n\n\n\n\n\n\n" <<"by rcameise 2011" << endl; system ("PAUSE"); system ("CLS"); //Spielmenü cout << "1. Spielen!\n2. Beenden" << endl; eingabe = getch(); if(eingabe=='1') { // Hier beginnt das eigentlche Spiel // Runden cout << "Anzahl an Runden: " << endl; cin >> runden; system ("CLS"); for (int k=1; k<=runden; k++) { cout << "Sie sind in der "; if (k==runden) { cout << "letzten Runde!"; } else { cout << k << ". Runde !"; } //Wettart folgt noch //Einsatz do { cout << "\nAuf welches Pferd wollen Sie setzen?\n1. Eins\n2. Zwei\n3. Drei\n4. Vier\n5. Fuenf" << endl; auswahl = getch(); if (auswahl < '5' || auswahl == '5') { nummer = true; } else { cout << "Dieses Pferd Existiert nicht!" << endl; nummer = false; } }while (!nummer); system ("CLS"); do { cout << "Ihr Geld: " << summe << "\nWieviel Geld wollen Sie bieten?" << endl; cin >> betrag; if (betrag == summe || betrag < summe) { ok = true; } else { cout << "Sie haben zu wenig Geld, bieten Sie nochmal" << endl; ok = false; } }while (!ok); system ("CLS"); //Nun wird die Platzierung ausgewertet srand(time (NULL)); for(i=0; i<5; i++) { do { pferd[i] = (rand() %5) +1; platz = true; for (j=0; j<i; j++) { if (pferd[i] == pferd[j]) { platz = false; } } }while (!platz); } //Plazierungen wiedergegeben cout << "Plazierungen\nEins: " << pferd[0] << "\nZwei: " << pferd[1] << "\nDrei: " << pferd[2] << "\nVier: " << pferd[3] << "\nFuenf: " << pferd[4] <<"\n\nIhre Wahl: " << auswahl << endl; //Auswertung Win-Lose if (auswahl == 1 && pferd[0] == 1) { cout << "Gewonnen!" << endl; geld = true; } else if (auswahl == 2 && pferd[1] == 1) { cout << "Gewonnen!" << endl; geld = true; } else if (auswahl == 3 && pferd[2] == 1) { cout << "Gewonnen!" << endl; geld = true; } else if (auswahl == 4 && pferd[3] == 1) { cout << "Gewonnen!" << endl; geld = true; } else if (auswahl == 5 && pferd[4] == 1) { cout << "Gewonnen!" << endl; geld = true; } else { cout <<"Schade..." << endl; geld = false; } //Auswertung Geld if (geld == true) { cout << summe << " + " << betrag << " = " << endl; summe = summe+betrag; cout << summe << endl; } else if (geld == false) { cout << summe << " - " << betrag << " = " << endl; summe = summe-betrag; cout << "Ihr Geld: " << summe << endl; } system ("Pause"); system ("CLS"); } // Punkte cout << "Ihre Punkte: " << summe << endl; system ("Pause"); } // Menü - Spiel Beenden else { cout << "Bye" << endl; } } Nichts besonderes, was meint ihr dazu? Bin gerade fix rübergeflogen, auch wenn du später sicherlich einiges anders machen wirst ist es für den Einstieg auf jeden Fall okay. Kleine Anmerkung weil es mir direkt aufgefallen ist Das ODER kannst du dir hier sparen betrag == summe || betrag < summe betrag <= summe
rc-ameise 38 Melden Geschrieben 15. September 2011 (bearbeitet) Ah ok stimmt^^ Thx Bearbeitet 15. September 2011 von rc-ameise
Cyborg11 186 Melden Geschrieben 18. September 2011 (bearbeitet) Wenn man sich an das Model-View-Controller Prinzip hält, darf dann ein View Objekt einem anderen View Objekt ein Model Objekt geben, welches von einem Controller erstellt wurde? Das andere View Objekt gibt das Model auch nur an einen anderen Controller weiter ohne irgendetwas damit zu machen. Denn normalerweise sollte ja das View gar nichts mit dem Model zu tun haben. Bearbeitet 18. September 2011 von Cyborg11
Buggy McDermit 165 Melden Geschrieben 18. September 2011 (bearbeitet) Uff an welche der mittlerweile zweimillionen Varianten ? Also, generell (meine ich) war es im "klassischen MVC" so das View nur für die Präsentation des Modells da war und keinerlei "Funktionen" haben darf. 1:1 Beziehung zwischen Controller und View keine direkte Beziehung zwischen View und View (die drei Komponenten als Kreis vorstellen ) Jedoch gibt es heutzutage etliche (pseudo) Varianten (wovon einige auch ziemlich für den Arsch sind)...da du ja "Javaraner" bist würde ich mich dann auf das Delegate Model stürzen von Swing darin sind Controller und View teilweise vereint und deine Frage ist beantwortet. Edit: Deutsche Erklärung zu UI Delegate Bearbeitet 18. September 2011 von Buggy McDermit
Cyborg11 186 Melden Geschrieben 18. September 2011 Hab schon die ganze Zeit trotz Swing nach dem klassischen MVC programmiert. Meine Oberflächen stellen nur die grafischen Oberflächen da und rufen nur die Controllerfunktionen auf. Ich weiß, dass Swing beides ineinander vereint, ich finde aber das klassische besser und so haben wir es auch in Software Engineering gelernt. Wobei das aber auch nicht immer so leicht geht wie zum Beispiel bei einem CellRenderer für eine JList.
Buggy McDermit 165 Melden Geschrieben 18. September 2011 Okay, dann sag ich zu deiner ursprünglichen Frage. NEIN, es ist nicht erlaubt da ein View keine Funktion haben darf und somit keinen weiteren View aufrufen darf Jedenfalls hab ich das mal so gelernt in ebenfalls SEG
Cyborg11 186 Melden Geschrieben 19. September 2011 (bearbeitet) Also dürfte mein JFrame durch einen Button den JDialog nicht aufrufen, sondern ich müsste erst eine Controllerfunktion aufrufen, die den Dialog erstellt? Darf das View das Profle Objekt an diesen Controller weitergeben oder müssen die Controller untereinander kommunizieren? Irgendwie ist es doof mit Swing. Irgendwann hat man trotzdem in einigen Klassen VC vermischt. Siehe CellRenderer Bearbeitet 19. September 2011 von Cyborg11