Brauche c++ hilfe :)

Hinweis: In dem Thema Brauche c++ hilfe :) gibt es 4 Antworten. Der letzte Beitrag () befindet sich ganz unten auf dieser Seite.
  • Halli Hallo,


    ich bin dabei ein für Linux geschriebenes Roguelike Spiel zu programmieren. Ich versuche nun schon seit 2 tagen zufällig generierte Karten zu erstellen in denen schöne viereckige Räume sind, die dann später mit einem weg verbunden werden. Mein Problem ist das die Räume sich überschneiden oder aneinander lagern und ich begreife nicht warum meine vorkehrungen dagegen in meinem code nicht funktionieren wie sie sollten.
    :smilie_pc_057:


    Habt ihr vielleicht eine Idee was ich übersehe oder wo mein denkfehler ist?


    Wie die Überschrift schon sagt ist c++ die verwendete Programmiersprache und als IDE benutze ich Code::Blocks falls das von interesse sein sollte :) (aber eigentlich nicht).


    Einmal editiert, zuletzt von Thorbenn ()

    Für den Inhalt des Beitrages 39941 haftet ausdrücklich der jeweilige Autor: Thorbenn

  • Code
    for(int a=randomPosy; a<=maxrandomPosy; a++)
        {
            if(map[randomPosx-1][a]==wall)
            {
                ++checker1;
            }


    Wenn du mit einer For-Schleifen über einen Array läufst, darfst du kein <= verwenden.
    Dann greifst du auf Werte zu, die der Array gar nicht aufnehmen kann.


    Hast du mehrmals gemacht.
    Vielleicht liegt es daran ;)

    ___________________________________________________________________________________
    Zypper Befehlsreferenz

    Für den Inhalt des Beitrages 39942 haftet ausdrücklich der jeweilige Autor: lush

  • Hallo Lush,


    leider hat das nichts an dem fehler geändert :(


    Ich hab mal den code soweit modifiziert das man erkennen kann wie er einen raum nach dem anderen erstellt um zu sehen wie die räume dann überlagert werden.


    Zur Erkärung von diesem Bild. (1 ist der erste raum der erstellt wurde. dann 2 der zweite....)


    Das ist das End Ergebnis:


    ################################################################################
    ################################################################################
    ################################################################################
    ###33333333#####################################################################
    ###33333333###############################################5555555###############
    ###33333333###############################################5555555###############
    ###33333333###############################################5555555###############
    ###33333333###############################################5555555###############
    ################################################################################
    ########444444##################################################66666###########
    ########444444###############################7777777############66666###########
    ########444444###############################7777777############66666###########
    ########444444###################222222222###7777777############66666###########
    ########444444##88888888#########222222222###7777777############66666###########
    ################8888888811#######222222222######################66666###########
    ################8888888811#######222222222######################################
    ################8888888811######################################################
    ################8888888811######################################################
    ################88888888########################################################
    ################################################################################
    ################################################################################
    ################################################################################
    ################################################################################

    2 Mal editiert, zuletzt von Thorbenn ()

    Für den Inhalt des Beitrages 39945 haftet ausdrücklich der jeweilige Autor: Thorbenn

  • Schande über mich :D
    Ich habe den Quellcode nur schnell in der Mittagspause in der Schule überflogen.


    Zu dem Fehler den ich dir oben angerechnet habe:
    Du läufst mit der Schleife gar nicht über ein Array, also muss das kein Fehler gewesen sein.


    Zu deinem eigentlichen Problem kann ich dir nichts zu sagen.
    (Muss ich nochmal drüber schauen)


    Du solltest dir aber angewöhnen, dich an die üblichen Konventionen für Namensgebung etc. zu halten.
    Zum Beispiel:


    int mapx --> int mapX


    Was ich mich noch so frage (schnell überfolgen) unten bei
    //print map


    läufst du ja mit einer For-Schleife über ein Array.
    Du gibst allerdings nur map[m] aus.
    Und die Schleifen läuft doch nur über die X-Werte ?


    Ich weiß nicht was du alles kannst, aber einiges ist sehr Fehleranfällig..
    Du solltest dir funktionen schreiben, dann ist die Main auch viel übersichtlicher:
    Sowas wie:
    - printMap(int x, int x)
    - ...


    Wenn du noch weiter Fortgeschritten bist, könnte es sogar eine interessante Idee sein, mehrere Klassen dazu zu schreiben.


    Also beispielsweise eine Klasse Map,
    die einen Array an Gegnern und einen Spieler enthält.
    (Natürlich auch Gold etc.)


    Also ist einiges Verbesserungswürdig, aber wie gesagt kommt natürlich auch drauf an wie weit du bist



    // Edit:
    Außerdem wäre es nützlich wenn du den Code etwas detaillierter kommentierst.
    Beispielsweise wo du die Schutzfunktion implementiert hast :P

    ___________________________________________________________________________________
    Zypper Befehlsreferenz

    Einmal editiert, zuletzt von LusH ()

    Für den Inhalt des Beitrages 39950 haftet ausdrücklich der jeweilige Autor: lush

  • Hi Lush,


    erstmals danke für die Tipps :-). ja das mit den Variablen deklarieren ist mir bekannt ich habe mich nur nicht daran gehalten :P .


    ja zum ausgeben der map muss ich ja nicht jedes einzelne Zeichen an der Stelle map[x][y] einzeln aufrufen um es auszugeben. Wenn ich nämlich die zeile X ausgebe kriege ich automatisch alle zeichen in y richtung ausgegeben die in der zeile x stehen.


    Zum Verständnis bei meinem Array als Koordinaten System wie x und y richtung sind:


    Dies ist nur ein Test für einen Dungeon Generator. In meinem eigentlichen Project habe ich z.B für das ausgeben der Map etc. einzelne functionen :-).


    Zu meinen C++ kenntnissen würde ich mich als gut Bewandert mit C++ bezeichnen :D


    So und nun füge ich mal ein paar kommentare in den Quelltext oben ein und mach ihn ein wenig übersichtlicher ;)


    //Edit


    So oben steht der ein bischen übersichtlichere Quellcode :) . Ich würde dir raten ihn aber in eine ide oder so zu kopieren damit man sich das besser anschauen kann als hier in dem forum :)





    // 2.Edit und letzter :D


    So habe das Problem gelöst und endlich funktioniert alles wie ich es will
    :smilie_hops_011:



    Nach einigen :smilie_pc_057: Versuchen habe ich endlich eine gescheite methode gefunden das ganze hinzubekommen.



    Vielen Dank für die Hilfe ;)

    Einmal editiert, zuletzt von Thorbenn ()

    Für den Inhalt des Beitrages 39954 haftet ausdrücklich der jeweilige Autor: Thorbenn