Geht doch bestimmt auch einfacher :)
-
Hey leute bin noch ziemlich anfänger in c++, hab aber einfach ma aus spaß an der freude ein kleines xxo programmiert
.Es läuft auch eigentlich schon ziemlich gut (gibt noch n Fehler aber egal), aber mir is aufgefallen das des ganz schön lang geworden ist. Ich glaube ma kann des auch kürzer machen weil ich des schon recht umständlich gemacht habe, aber ich weis nich wies anders geht. Wär schön wenn sichs irgendwer ma anschaut und mir sagen könnte wie man des kürzer gestallten kann. ( für die zukunft )
http://www.file-upload.net/download-3086117/xxo.cpp.html
des is der download link.
geschrieben hab ich des ganze mit Dev C++danke schon ma im voraus
-
habe jetzt den Fehler behoben, nach welchem des spiel einfach ausging wenn man ein nicht vorhandendes Feld eingegeben hat
is aber immer noch unübersichtlich
neuer downloadlink:
-
Guten morgen!
ich würde das "using namespace std" aus dem global namespace wegmachen. Das macht vermutlich bei deinem Miniprogramm keinen Unterschied - bei größeren Projekten ist das aber unschön und wenn dein Code irgendwo eingebettet wird kanns böse Überraschungen für andere geben.
goto ist fürn Arsch. Such nach dem Aufsatz von Dijkstra (ein Held für uns Informatiker!), der das als Erster treffend begründet hat.
Ansonsten hast du in Deinem Code unheimlich viel Redundanz. Du musst sicher jetzt noch nicht objektorient programmieren, aber Du kannst sicher schon Teile (bspw. das Spielfeld-Rendern etc.) in eine wiederverwendbare Funktion auslagern.
Darauf aufbauend könntest du dann weitere Funktionalitäten abstrahieren, bspw. Spielerinitalisierung und Züge etc.Ansonsten siehts recht gut aus. Du wirst sicher später mal ein guter Programmierer - frickeln kannst du ja schon
-
Ich empfehle dir mal diesen Beitrag durchzulesen: http://www.c-plusplus.net/forum/237002
-
danke für die schnelle antwort
kann ich des using namespace einfach weglassen ? dann muss ich doch vor jeden befehl std:: schreiben oder? klingt mir nach ziemlich viel mehr aufwand.
Spielfeld rendern klingt kompliziert muss ich mich ma reinarbeiten
noch eine frage zum schluss: wie kann ich den das goto ersetzten ?hab diesen aufsatz mal gegoogelt aber irgendwie find ich da nur lebensläufe der vereehrten heeren
und das man goto mit while ersetzten kann aber wie?
p.s bin gerade am codeblocks downloaden. thx für den hinweis
-
so hab des ganze jetzt auf 218 zeilen reduziert xD.
aber spielfeld rendern versteh ich nich so wirklich und goto umgehen auch nich
-
Lösche goto einfach aus deinem Gedächtnis. Du wirst es nie wirklich brauchen, wirklich alle Probleme lassen sich ohne goto lösen, merk dir das einfach. Goto ist unschön, weil du, wenn der Code zu groß wird, einfach nicht mehr durchblickst wo das ganze denn jetzt hinspringt. Ich hatte selbst mal ein paar Tausend Zeilen Code mit goto. Versuch mal, einer Nudel in einem Kochtopf zu folgen ohne sie zu berühren, das wird verdammt schwer
Wirklich "ersetzen" kannst du es in dem Sinne eigentlich nicht. Versuche auch gar nicht erst, deinen jetzigen Code "Goto-Frei" zu machen, das wäre zu viel Arbeit und ziemlich sinnfrei, das übt ganz und gar nicht, endet sowieso in irgendeinem copy&paste Desaster. Wenn du das nächste mal einen Quellcode schreibst, dann verwende lieber Kontrollstrukturen und verzichte auf goto.
-
Incocnito schrieb:
Lösche goto einfach aus deinem Gedächtnis. Du wirst es nie wirklich brauchen, wirklich alle Probleme lassen sich ohne goto lösen, merk dir das einfach. Goto ist unschön, weil du, wenn der Code zu groß wird, einfach nicht mehr durchblickst wo das ganze denn jetzt hinspringt. Ich hatte selbst mal ein paar Tausend Zeilen Code mit goto. Versuch mal, einer Nudel in einem Kochtopf zu folgen ohne sie zu berühren, das wird verdammt schwer
Wirklich "ersetzen" kannst du es in dem Sinne eigentlich nicht. Versuche auch gar nicht erst, deinen jetzigen Code "Goto-Frei" zu machen, das wäre zu viel Arbeit und ziemlich sinnfrei, das übt ganz und gar nicht, endet sowieso in irgendeinem copy&paste Desaster. Wenn du das nächste mal einen Quellcode schreibst, dann verwende lieber Kontrollstrukturen und verzichte auf goto.ok ich werds versuchen