<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Objektkoordinaten 2d Array]]></title><description><![CDATA[<p>Hallo leute,</p>
<p>ich habe gestern angefangen mit 2d arrays herum zu experimentieren. Ich bin auf die idee gekommen erstmal einen rahmen zu basteln. Das hat auch gut geklappt wobei ich mir nicht sicher bin ob der allgoritmus so gut ist.</p>
<p>Auf jeden fall wollte ich jetzt ein objekt innerhalb des Rahmens erzeugen um es später zu bewegen. Allerdings passiert etwas unerwartetes. Ich will das das @ zeichen nur an einer stelle angezeigt wird. Allerdings enstehen mehrere davon.</p>
<pre><code>#include &lt;iostream&gt;

using namespace std;

int main()
{
    char feld[20][35];
    int a, b;

    a = 10;
    b = 17;
    feld[a][b] = '@';

    for (int y=0;y&lt;20;y++)

    {
        for (int x=0;x&lt;35;x++)
        {

            if ((y == 0) || (y == 19)){
                feld[y][x] = '-';
            }
            else if ((x==0) || (x==34)){
                feld[y][x] = '|';
            }
            else
                if (feld[y][x] != '@'){
                feld[y][x] = ' ';
            }

            cout &lt;&lt; feld[y][x];

        }
        cout &lt;&lt; endl;
    }
return(0);
</code></pre>
<p>}</p>
<p>Hat jemand einene tip?</p>
<p>Grüße<br />
Photon</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/317532/objektkoordinaten-2d-array</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Jul 2026 21:39:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/317532.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 11 Jun 2013 20:16:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Objektkoordinaten 2d Array on Tue, 11 Jun 2013 20:16:07 GMT]]></title><description><![CDATA[<p>Hallo leute,</p>
<p>ich habe gestern angefangen mit 2d arrays herum zu experimentieren. Ich bin auf die idee gekommen erstmal einen rahmen zu basteln. Das hat auch gut geklappt wobei ich mir nicht sicher bin ob der allgoritmus so gut ist.</p>
<p>Auf jeden fall wollte ich jetzt ein objekt innerhalb des Rahmens erzeugen um es später zu bewegen. Allerdings passiert etwas unerwartetes. Ich will das das @ zeichen nur an einer stelle angezeigt wird. Allerdings enstehen mehrere davon.</p>
<pre><code>#include &lt;iostream&gt;

using namespace std;

int main()
{
    char feld[20][35];
    int a, b;

    a = 10;
    b = 17;
    feld[a][b] = '@';

    for (int y=0;y&lt;20;y++)

    {
        for (int x=0;x&lt;35;x++)
        {

            if ((y == 0) || (y == 19)){
                feld[y][x] = '-';
            }
            else if ((x==0) || (x==34)){
                feld[y][x] = '|';
            }
            else
                if (feld[y][x] != '@'){
                feld[y][x] = ' ';
            }

            cout &lt;&lt; feld[y][x];

        }
        cout &lt;&lt; endl;
    }
return(0);
</code></pre>
<p>}</p>
<p>Hat jemand einene tip?</p>
<p>Grüße<br />
Photon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2330370</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2330370</guid><dc:creator><![CDATA[Photon]]></dc:creator><pubDate>Tue, 11 Jun 2013 20:16:07 GMT</pubDate></item><item><title><![CDATA[Reply to Objektkoordinaten 2d Array on Tue, 11 Jun 2013 21:48:31 GMT]]></title><description><![CDATA[<p>Die Werte sind nicht initialisiert. Ein paar davon sind zufällig '@'.</p>
<pre><code>char feld[20][35] ={};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2330389</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2330389</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 11 Jun 2013 21:48:31 GMT</pubDate></item><item><title><![CDATA[Reply to Objektkoordinaten 2d Array on Thu, 13 Jun 2013 21:23:57 GMT]]></title><description><![CDATA[<p>Danke das war die lösung für mein problem.</p>
<p>Keine ahnung ob ich einen neuen thread aufmachen soll deshalb frage ich hier.</p>
<p>Gibt es eine systemunabhängige alternative zu getch? vieleicht auch für zahlen.</p>
<p>Ich würde auch gerne eine variante von clrscr verwenden die schneller ist und ohne system funktioniert. Eventuell musss auch nicht der ganze bildschirm bereinigt werden. Gibt es möglichkeiten einige sachen stehen zu lassen und nur bestimmte zu löschen oder überschreiben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2330928</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2330928</guid><dc:creator><![CDATA[Photon]]></dc:creator><pubDate>Thu, 13 Jun 2013 21:23:57 GMT</pubDate></item><item><title><![CDATA[Reply to Objektkoordinaten 2d Array on Thu, 13 Jun 2013 21:32:32 GMT]]></title><description><![CDATA[<blockquote>
<p>Gibt es eine systemunabhängige alternative zu getch?</p>
</blockquote>
<p>Wenn genau dasselbe Verhalten erzeugt werden soll: Nein. Wenn du lediglich ein Zeichen von der Standardeingabe lesen willst, bietet sich auch einfach <code>std::cin.get()</code> an.</p>
<blockquote>
<p>vieleicht auch für zahlen.</p>
</blockquote>
<p>Was willst du jetzt?</p>
<blockquote>
<p>Gibt es möglichkeiten einige sachen stehen zu lassen und nur bestimmte zu löschen oder überschreiben?</p>
</blockquote>
<p>Möglicherweise suchst du <a href="http://www.c-plusplus.net/forum/131915-full" rel="nofollow">Improved Console</a>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2330931</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2330931</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Thu, 13 Jun 2013 21:32:32 GMT</pubDate></item><item><title><![CDATA[Reply to Objektkoordinaten 2d Array on Thu, 13 Jun 2013 21:46:36 GMT]]></title><description><![CDATA[<p>danke für die schnelle antwort.</p>
<p>cin.get() scheint nicht geeignet zu sein da ich ja bezwecken will das solange ich z.b. w drücke sich das @ auf der y-axe nach oben bewegt. cin.get will aber das man enter dazwischen drück oder mach ich was falsch?</p>
<pre><code>steuer = cin.get();
</code></pre>
<p>mit zahlen meine ich zahlen ohne enter abnehmen. Also wie du sieht geht es darum nicht immer enter zwischen den eingaben drücken zu müssen.</p>
<p>Improved Console is vieleicht noch zu hoch für mich oder?! Ich bin noch anfänger.<br />
mit system(&quot;cls&quot;) flackert mein bild immer so <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> Ausserdem sollen system befehle ja nicht gut sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2330933</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2330933</guid><dc:creator><![CDATA[Photon]]></dc:creator><pubDate>Thu, 13 Jun 2013 21:46:36 GMT</pubDate></item><item><title><![CDATA[Reply to Objektkoordinaten 2d Array on Wed, 11 Jun 2014 23:03:45 GMT]]></title><description><![CDATA[<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2330934</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2330934</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Wed, 11 Jun 2014 23:03:45 GMT</pubDate></item><item><title><![CDATA[Reply to Objektkoordinaten 2d Array on Fri, 14 Jun 2013 11:09:39 GMT]]></title><description><![CDATA[<p>danke Swordfish aber das ist noch zu hoch für mich. Ich verstehe fast nichts von dem was du geschrieben hast. Ich werde wohl vorerst cls benutzen müssen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2331045</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2331045</guid><dc:creator><![CDATA[Photon]]></dc:creator><pubDate>Fri, 14 Jun 2013 11:09:39 GMT</pubDate></item><item><title><![CDATA[Reply to Objektkoordinaten 2d Array on Sat, 15 Jun 2013 07:49:54 GMT]]></title><description><![CDATA[<p>sorry für den doppel post.</p>
<p>Ich denke gerade über ein problem nach. Da ich ja gerade mit 2d arrays experimentiere wollte ich mich mal conways game of life versuchen.<br />
Der Logische vorgang ist auch soweit klar mit 2 arrays und so.</p>
<p>Das problem ist ich müsste teilweise noch stellen ausserhalb des arrays auswerten um stellen innerhalb des arrays korekt zu berechnen.</p>
<p>Wie lässt sich soetwas realiesieren?</p>
<p>Ich habe mir gedacht eventuell anstelle von arrays vektoren benutzen aber nur einen bestimmte ausschnitt anzeigen und alles darüber nur zum berechnen benutzen damit die 2d oberfläche nich unendlich ist.<br />
Wahrscheinlich muss ich auch die überschüssigen fächer danach löchen.</p>
<p>Hat jemand einen tip wie ich das problem angehen könnte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2331295</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2331295</guid><dc:creator><![CDATA[Photon]]></dc:creator><pubDate>Sat, 15 Jun 2013 07:49:54 GMT</pubDate></item><item><title><![CDATA[Reply to Objektkoordinaten 2d Array on Sat, 15 Jun 2013 09:42:11 GMT]]></title><description><![CDATA[<p>Musst du da nicht einfach die Ränder &quot;herumwickeln&quot;, d.h. sobald du das Spielfeld auf einer Seite verlässt, betrittst du es auf der gegenüberliegenden Seite wieder?</p>
<p>Falls doch, wird dir der Modulo-Operator bei der Indexberechnung helfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2331306</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2331306</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 15 Jun 2013 09:42:11 GMT</pubDate></item><item><title><![CDATA[Reply to Objektkoordinaten 2d Array on Sun, 16 Jun 2013 22:40:14 GMT]]></title><description><![CDATA[<p>hmmm ja das könnte man machen aber ist das so richtig beim game of life? ich habe keine ahnung.</p>
<p>Hab ein bischen über dein modulo nachgedacht aber ich komme nicht drauf was du meinst. das enzige was mir einfällt ist sowas wie ein swap befehl zu verwenden aber das ist nicht so elegant. Ausserdem stelle ich mir die frage was passiert wenn das gegenüberliegende feld true ist.</p>
<p>Mal so am rande weiss jemand wie man</p>
<pre><code>sizeof(array)/sizeof(*array)
</code></pre>
<p>auf 2d arrays anwendet?</p>
<p>Grüße<br />
Photon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2331653</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2331653</guid><dc:creator><![CDATA[Photon]]></dc:creator><pubDate>Sun, 16 Jun 2013 22:40:14 GMT</pubDate></item><item><title><![CDATA[Reply to Objektkoordinaten 2d Array on Wed, 11 Jun 2014 23:12:24 GMT]]></title><description><![CDATA[<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2331674</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2331674</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Wed, 11 Jun 2014 23:12:24 GMT</pubDate></item><item><title><![CDATA[Reply to Objektkoordinaten 2d Array on Mon, 17 Jun 2013 10:26:05 GMT]]></title><description><![CDATA[<p>Danke das ist genau was ich gesucht habe swordfish <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>Ncoh ein frage. Stellt euch snake das spiel vor. Die schlange ist 5 felder lang. also immer die x y pos von vor 5 &quot;runden&quot; soll gelöscht werden.</p>
<p>Gehe ich recht in der annahme das ich dazu ein zweites 2d aray oder besser einen 2d vector brauche? der alle positionen aufzeichnet?</p>
<p>Das problem ist nur das ja array[0][0] das erste feld ist. Nach 5 runden werden die koordinaten benötigt danach aber nie wieder. Deshalb kam ich auf vector. So das man praktisch unendlich weit nach oben hin speichert abr dann hat man irgendwann ein vector mit 1000 fächern und braucht die ersten 995 garnicht.</p>
<p>Alternative wäre ein drittes array wo dann nach löchvorgang alle noch benötgen koordinaten der reihe nach eintragen werden. Dann immer zwischen den beiden mit diesem vorgang wechseln so das beide nicht über 5 fächer hinaus kommen.</p>
<p>Ich denke beides ist nicht so schön. Hat jemand einen tip?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2331726</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2331726</guid><dc:creator><![CDATA[Photon]]></dc:creator><pubDate>Mon, 17 Jun 2013 10:26:05 GMT</pubDate></item><item><title><![CDATA[Reply to Objektkoordinaten 2d Array on Mon, 17 Jun 2013 12:17:04 GMT]]></title><description><![CDATA[<p>Du speicherst einfach für jedes Element der Schlange in einem Vector die Position.<br />
Wächst die Schlange fügst du ein weiteres Element hinzu.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2331757</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2331757</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Mon, 17 Jun 2013 12:17:04 GMT</pubDate></item><item><title><![CDATA[Reply to Objektkoordinaten 2d Array on Mon, 17 Jun 2013 15:35:51 GMT]]></title><description><![CDATA[<p>Ich hab es jetzt so gemacht wobei ich das zweite array noch durch einen vector ersetzen werde. Die Steuerungsbedingungen müssen auch noch angepasst werden.</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;conio.h&gt;
#include &lt;stdlib.h&gt;

int main()
{
    using namespace std;
    char feld[20][36] = { };
    int a = 10, b = 18,i = 0,j=1;
    char steuer;
    int food = 5;
    char del_feld [2][5] = { };

for (;;)
{   if(i==food){i=0;}
    if(j==food){
        feld[del_feld[0][i&rsqb;&rsqb;[del_feld[1][i&rsqb;&rsqb; = ' ';}
    if(j != food){j++;}

    del_feld[0][i] = a;
    del_feld[1][i] = b;
    feld[a][b] = '@';
    ++i;

    for (int y=0;y&lt;20;y++)
    {
        for (int x=0;x&lt;36;x++)
        {
            if ((y == 0) || (y == 19)){
                feld[y][x] = '-';
            }
            else if ((x==0) || (x==35)){
                feld[y][x] = '|';
            }
            else
                if (feld[y][x] != '@'){
                feld[y][x] = ' ';
            }
            cout &lt;&lt; feld[y][x];
        }
        cout &lt;&lt; endl;
    }

    steuer = getch();
    switch (steuer)
    {
        case 'w': if(a&gt;1){--a;};
            break;
        case 's': if(a&lt;18){++a;};
            break;
        case 'a': if(b&gt;1){--b;};
            break;
        case 'd': if(b&lt;33){++b;};
            break;
    }
    system(&quot;cls&quot;);

}
return(0);
}
</code></pre>
<p>Ich würde auch einige teile gerne als function schreiben allerdings bekomme ich da probleme mit 2d arrays.</p>
<p>Habe im internet das hier gefunden</p>
<pre><code>void foo(char Feld[][3], size_t size) {
  Feld[0][size-1] = 5;
}

// ODER

void bar(char* Feld, size_t dim_x, size_t dim_y) {
  Feld[i * dim_y + j] = 5;
}

// Aufruf:
char feld[3][3];

foo(feld, 3);

bar(&amp;feld[0][0], 3, 3);
</code></pre>
<p>Allerdings verstehe ich beides nicht 100%. Könnte mir jemand erklären was das genau bedeutet? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2331855</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2331855</guid><dc:creator><![CDATA[Photon]]></dc:creator><pubDate>Mon, 17 Jun 2013 15:35:51 GMT</pubDate></item><item><title><![CDATA[Reply to Objektkoordinaten 2d Array on Mon, 17 Jun 2013 20:48:56 GMT]]></title><description><![CDATA[<p>Greetings!<br />
Wie steht es denn mittlerweile um Deine Kenntnisse von Klassen?</p>
<p>Bei dem letzten Thread, den ich von Dir <a href="http://www.c-plusplus.net/forum/317181" rel="nofollow">hier</a> las schien das noch ein Fremdwort.<br />
Hat sich da was getan?</p>
<p>Die Aufgabe scheint lösbarer - und für C++ Anfänger ergiebiger - wenn wir von Klassen, Objekten und Methoden sprechen können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2331957</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2331957</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Mon, 17 Jun 2013 20:48:56 GMT</pubDate></item><item><title><![CDATA[Reply to Objektkoordinaten 2d Array on Mon, 17 Jun 2013 22:17:45 GMT]]></title><description><![CDATA[<p>Hi Furble</p>
<p>Leider weis ich so gut wie nichts über klassen. wir sind in der schule noch nicht so weit. Wir sind eigentlich noch bei den grundlangen in C. Deswegen will ich jetzt durch solche projekte üben. Also Objektorientiert programmieren. Ich weiss aber ehrlich gesagt nicht genau was das bedeutet. Ich stelle mir die dinge dadurch übersichtlicher und einfacher zu handhaben vor.</p>
<p>Ich denke sicherer im umgang mit funktionen werden ist der erste schritt oder?</p>
<p>Ist es möglich 2 vektoren in einem array zu speichern? Also das man ein feld mit der höhe 2 und undendlicher länge erzeugen könnte?</p>
<p>Ein 2d array-vektor oder sowas?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2331988</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2331988</guid><dc:creator><![CDATA[Photon]]></dc:creator><pubDate>Mon, 17 Jun 2013 22:17:45 GMT</pubDate></item><item><title><![CDATA[Reply to Objektkoordinaten 2d Array on Tue, 18 Jun 2013 06:57:46 GMT]]></title><description><![CDATA[<p>Photon schrieb:</p>
<blockquote>
<p>Leider weis ich so gut wie nichts über klassen. wir sind in der schule noch nicht so weit. Wir sind eigentlich noch bei den grundlangen in C. Deswegen will ich jetzt durch solche projekte üben. Also Objektorientiert programmieren. Ich weiss aber ehrlich gesagt nicht genau was das bedeutet. Ich stelle mir die dinge dadurch übersichtlicher und einfacher zu handhaben vor.</p>
</blockquote>
<p>Wesentlich leichter.</p>
<blockquote>
<p>Ich denke sicherer im umgang mit funktionen werden ist der erste schritt oder?</p>
</blockquote>
<p>Jein.<br />
Objektorientiert programmieren heißt, dass man in Objekten denkt.<br />
Diese haben bestimmte Daten und Verhaltensweisen (durch Funktionen implementiert, in C++ Memberfunktionen). Es stehen aber nicht die Daten, sondern diese Verhaltensweisen im Vordergrund.<br />
In deinem Snakebeispiel hättest du beispielsweise eine Klasse Snake, die hat einen Vektor, der die Position für jedes Feld speichert. Eine Funktion update() bearbeitet diesen Vektor, indem die Schlange dort bewegt wird.<br />
Eine Funktion draw() zeichnet die Schlange.<br />
Ähnliches auch für die Map.<br />
Du solltest dir aber auf jeden Fall ein gutes Grundlagenbuch besorgen und das durcharbeiten, dort lernst du mehr als in der Schule.<br />
Denn rohe Arrays sollte man im modernen C++ nicht mehr benutzen.</p>
<blockquote>
<p>Ist es möglich 2 vektoren in einem array zu speichern? Also das man ein feld mit der höhe 2 und undendlicher länge erzeugen könnte?</p>
<p>Ein 2d array-vektor oder sowas?</p>
</blockquote>
<p>Ja.</p>
<pre><code>std::vector&lt;std::vector&lt;some_type&gt;&gt; vec
</code></pre>
<p>Zugriff via:</p>
<pre><code>vec[5][2]
</code></pre>
<p>Besser ist es aber einen 2 dimensionalen Vektor auf einen eindimensionalen abzubilden, das ist aber für dich vermutlich zu kompliziert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2332011</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2332011</guid><dc:creator><![CDATA[Nathan_logoff]]></dc:creator><pubDate>Tue, 18 Jun 2013 06:57:46 GMT</pubDate></item><item><title><![CDATA[Reply to Objektkoordinaten 2d Array on Tue, 18 Jun 2013 06:58:12 GMT]]></title><description><![CDATA[<p>Photon schrieb:</p>
<blockquote>
<p>Hi Furble</p>
<p>Leider weis ich so gut wie nichts über klassen. wir sind in der schule noch nicht so weit. Wir sind eigentlich noch bei den grundlangen in C. Deswegen will ich jetzt durch solche projekte üben. Also Objektorientiert programmieren. Ich weiss aber ehrlich gesagt nicht genau was das bedeutet.</p>
</blockquote>
<p>Lernst Du C oder C++?<br />
Das sind verschiedene Sprachen!</p>
<p>Objektorientiert heisst ja erstmal nur, dass Du in Kategorien denkst wie: Welche Entitäten habe ich? welche Eigenschaften haben diese Entitäten?</p>
<p>Z.B. könntest Du Dir beim snake Spiel überlegen: ich habe <em>Positionen</em> auf dem Spielfeld und eine <em>Schlange</em> mit einer bestimmten <em>Länge</em> und einem <em>Körper</em>.<br />
Damit hast Du schon zwei Arten von Objekten und legst los:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;

struct pos{ int x, y; };

std::ostream&amp; operator&lt;&lt;(std::ostream&amp; out, const pos&amp; p){
    return out &lt;&lt; '(' &lt;&lt; p.x &lt;&lt; &quot;, &quot; &lt;&lt; p.y &lt;&lt; ')';
}

struct snake{
	unsigned int length_;
	std::vector&lt;pos&gt; body_;
};

snake make_snake(unsigned int length){
	snake s{length};
	return s;
}

void move(snake&amp; s, const pos&amp; p){
	s.body_.insert(begin(s.body_), p);
	if(s.length_ &lt; s.body_.size())
		s.body_.pop_back();
}

void print(const snake&amp; s){
	for(const pos&amp; p : s.body_)
		std::cout &lt;&lt; p &lt;&lt; ' ';
}

int main(){
	snake snakey_snake = make_snake(5u);
	for(int i=0; i&lt;10; ++i){
		move(snakey_snake, {42+i, 6});
		print(snakey_snake);
		std::cout &lt;&lt; '\n';
	}
}
</code></pre>
<p>Das war's schon.<br />
Wie Du siehst findest Du die beiden Entitäten <em>Position</em> und <em>Schlange</em> im Code wieder und dann Funktionen, die damit arbeiten. In der <code>main()</code> , z.B. lasse ich die Schlange sich 10 Felder bewegen und gebe immer die Lage Ihrer Körpersegmente aus.</p>
<p>Ich denke, der Code kommt ohne weitere Erklärungen aus.</p>
<p>Das ist allerdings noch kein richtiges C++, sondern eher C.<br />
C++ unterstützt Objektorientierung noch viel weitgehender. Aber Objektorientiert ist das Programm alle mal - kein Hexenwerk also.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2332012</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2332012</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Tue, 18 Jun 2013 06:58:12 GMT</pubDate></item><item><title><![CDATA[Reply to Objektkoordinaten 2d Array on Tue, 18 Jun 2013 07:25:16 GMT]]></title><description><![CDATA[<p>Furble Wurble schrieb:</p>
<blockquote>
<p>Das war's schon.</p>
</blockquote>
<p>Finde ich didaktisch schlecht, einem Anfänger, der durchaus interessiert ist, sich selbst was beizubringen und mit seinen Fragen schon auf dem richtigen Weg ist, eine fertige Lösung hinzuknallen. ostream? operator&lt;&lt;? Referenzen? 5u? Wie soll er da durchblicken?</p>
<p>Er hat doch Freude daran, das Problem <strong>selbst</strong> zu lösen. Diese Freude nimmst Du ihm, indem Du prinzipiell zeigst: Weg da, ich kann das eh viel besser.</p>
<p>Erklär doch erstmal, wie sich ein Vector im Vergleich zum Array verhält, wie man eine Klasse (oder struct) erstellt, wie man auf die Member zugreift, wie man dann einen Vector of Type xy baut usw. Was Photon braucht, sind die Grundlagen, nicht die Lösungen. Schade.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2332021</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2332021</guid><dc:creator><![CDATA[minastaros]]></dc:creator><pubDate>Tue, 18 Jun 2013 07:25:16 GMT</pubDate></item><item><title><![CDATA[Reply to Objektkoordinaten 2d Array on Tue, 18 Jun 2013 10:22:56 GMT]]></title><description><![CDATA[<p>Hallo leute,</p>
<p>danke für die vielen antworten. Ja über ein grundlangen buch habe ich schon nachgedacht und stand auch schon ein paar mal im buchladen davor und habe mir welche angeschaut. Allerdings weiss ich nicht welches gut und welches nicht so gut ist. Einfach zeilen ohne große erklärung abtippen mag ich nicht. Vieleicht kann mir jemand eins empfehlen.</p>
<p>Wir lernen in der Schule allgemein Programmieren. Wir hatten ein bischen java am anfang. Da haben wir aber nur ganz grob die grundlagen angeschnitten. Mysql und Php hatten wir auch eine woche und auch da nur grob grundlagen. Und vor einem monat hatten wir 1 woche C grundlagen. Allerdings habe ich keine lust immer zu warten und so.<br />
Deshalb habe ich mich entschieden erstmal c++ für mich als hauptsprache zu wählen und mir das so gut es geht selber bei zu bringen.<br />
Das gute ist all das mathematische hintergrund zeug kriegen wir in der schule auch. Ich denke das wird dann später fruchten weil leute die sich das selbst beibringen das eben vernachlässigen.</p>
<p>Soviel dazu. Zu Furbles post. Ich finde das ok weil ich den code sowieso nicht kopieren oder sowas ich lese ihn und versuche ihn nach zu voll ziehen werde gleich mal einige sachen davon googlen. In erster linie dient er mir als anreiz das mein code später auch mal so in etwa ausehen soll. Eben nicht alles in die main knallen.<br />
Vor allem das was hier als objekt gilt und warum finde ich gut erklärt.</p>
<p>Was für mich in diesen moment ganz gut wäre ist wenn mir jemand grob ein plan für die nächste zeit gibt sowas wie:</p>
<p>1 Funktionen<br />
2 Klassen<br />
2 Strukturen</p>
<p>Eine liste zu abarbeiten um tiefer in die materie einzutauchen. Es gibt nämlich so viel ich weiss nicht wo ich anfangen soll.</p>
<p>Kurze frage noch. Sehe ich das richtig das die ganze schlange also jedes element bewegt wirrd? Ist es nicht gut so wie ich immer das element von vor 5 runden zu löchen?</p>
<p>Edit: zu deim vector im vector ist es dann nicht ein feld mit unenddlich mal unendlich länge?</p>
<p>Grüße an alle<br />
ist ein tolles Forum <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2332088</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2332088</guid><dc:creator><![CDATA[Photon]]></dc:creator><pubDate>Tue, 18 Jun 2013 10:22:56 GMT</pubDate></item><item><title><![CDATA[Reply to Objektkoordinaten 2d Array on Tue, 18 Jun 2013 11:44:30 GMT]]></title><description><![CDATA[<p>Photon schrieb:</p>
<blockquote>
<p>Kurze frage noch. Sehe ich das richtig das die ganze schlange also jedes element bewegt wirrd? Ist es nicht gut so wie ich immer das element von vor 5 runden zu löchen?</p>
</blockquote>
<p>Ich pappe vorne in den vector <code>body_</code> die neue Position des &quot;Kopfes&quot;.<br />
Wichtig: ich füge die neue Position hinzu. Wenn der Körper vorher 5 Felder belegte, belegt er nun 6.<br />
Im nächsten Schritt schaue ich, ob der Körper mehr Positionen belegt, als die Schlange lang ist, wenn ja lösche ich das letzte Element. Das alles in <code>move()</code> .<br />
Dabei &quot;bewege&quot; ich tatsächlich immer &quot;die ganze Schlange&quot; - d.h. jedes Positionsobjekt wird verschoben, das ist richtig. Aber der Vektor mit den Körperelementen ist immer höchsten eins größer als <code>length_</code> .</p>
<p>Photon schrieb:</p>
<blockquote>
<p>Edit: zu deim vector im vector ist es dann nicht ein feld mit unenddlich mal unendlich länge?</p>
</blockquote>
<p>Da gibt es keinen vector im vector. Wahrscheinlich ist die Zeile hier kryptisch:</p>
<pre><code class="language-cpp">s.body_.insert(begin(s.body_), p);
</code></pre>
<p>Was da steht ist: füge die Position p vor das bislang erste Element ( <code>begin(s.body_)</code> ) in den vector body_ ein.<br />
Siehe hier:<br />
<a href="http://en.cppreference.com/w/cpp/container/vector/insert" rel="nofollow">http://en.cppreference.com/w/cpp/container/vector/insert</a> Variante (1)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2332112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2332112</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Tue, 18 Jun 2013 11:44:30 GMT</pubDate></item><item><title><![CDATA[Reply to Objektkoordinaten 2d Array on Wed, 19 Jun 2013 09:28:02 GMT]]></title><description><![CDATA[<p>Hey</p>
<p>Ich habe ein wenig gerätselt und so halb verstehe ich deinen codde. Lediglich daas mit der x und y position macht mir zu schaffen. Vor allemweil du ja nur 1 vector benutzt. Speicherst du immer x und y in ein fach? oder ist es doch irgendwie 2d?</p>
<p>Das mit den structs will ich jetzt gleich auch mal testen.</p>
<p>Ist snake_make_snake sowas wie ein unter-struct? weil es wird ja nicht deklariert aber snake ist vorher schon da.</p>
<p>Das mit der länge verstehe ich auch noch nicht so ganz. Wo wird die länge festgelegt? Sie ist da aber hat keinen wert oder?</p>
<p>Ja ich hab noch einen weiten weg vor mir <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2332394</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2332394</guid><dc:creator><![CDATA[Photon]]></dc:creator><pubDate>Wed, 19 Jun 2013 09:28:02 GMT</pubDate></item><item><title><![CDATA[Reply to Objektkoordinaten 2d Array on Wed, 11 Jun 2014 23:12:28 GMT]]></title><description><![CDATA[<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2332418</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2332418</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Wed, 11 Jun 2014 23:12:28 GMT</pubDate></item><item><title><![CDATA[Reply to Objektkoordinaten 2d Array on Wed, 19 Jun 2013 21:52:30 GMT]]></title><description><![CDATA[<p>Ja so langsam kommt das verständnis und die denkweise danke leute.<br />
Ich habe gerade schwierigkeiten mit structs und funktionen.</p>
<pre><code>#include &lt;iostream&gt;

int h_generator();

struct hero {int dmg, def, hp;};

int h_generator(hero) // Welcher typ muss hier hin?
{
    hero red = {5,3,10};
    return (red);  //Hier will ich hero red übergeben aber ich bekomme eine fehlermeldung.
}

int main()
{
    h_generator();
    std::cout &lt;&lt; red; //Hier unten auch. Red ist nicht deklariert.
    return 0;
}
</code></pre>
<p>WAs mache ich noch flasch? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2332680</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2332680</guid><dc:creator><![CDATA[Photon]]></dc:creator><pubDate>Wed, 19 Jun 2013 21:52:30 GMT</pubDate></item><item><title><![CDATA[Reply to Objektkoordinaten 2d Array on Wed, 19 Jun 2013 22:24:24 GMT]]></title><description><![CDATA[<p>Deine Funktion &quot;h_generator()&quot; hat den Rückgabewert &quot;int&quot;. Das du hier kein Object vom Typ &quot;hero&quot; zurückgeben kannst, sollte denke ich logisch sein. Auch macht der Parameter vom Typ &quot;hero&quot; keinen Sinn. Du solltest dir dringend nochmal Funktionen im Allgemeinen ansehen.</p>
<pre><code>#include &lt;iostream&gt;

struct hero {int dmg, def, hp;};

hero h_generator()
{
    hero red = {5,3,10};
    return red;
}

int main()
{
    hero red = h_generator();
    std::cout &lt;&lt; &quot;dmg: &quot; &lt;&lt; red.dmg &lt;&lt; &quot; def: &quot; &lt;&lt; red.def &lt;&lt; &quot; hp: &quot; &lt;&lt; red.hp &lt;&lt; std::endl;
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2332684</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2332684</guid><dc:creator><![CDATA[DNKpp]]></dc:creator><pubDate>Wed, 19 Jun 2013 22:24:24 GMT</pubDate></item><item><title><![CDATA[Reply to Objektkoordinaten 2d Array on Wed, 11 Jun 2014 23:12:32 GMT]]></title><description><![CDATA[<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2332686</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2332686</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Wed, 11 Jun 2014 23:12:32 GMT</pubDate></item></channel></rss>