<?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[Schiffeversenken: Feld zeichnen]]></title><description><![CDATA[<p>Hallo ich bin wieder,</p>
<p>ich versuche mich grade an einem &quot;simplen&quot; Schiffeversenken-Spiel. Bis jetzt bin ich soweit, dass mir das Programm in ein bestimmtes Feld ein 'X' zeichnet (Abhängig der ausgewählten Positionen). Jetzt wollte ich es ein wenig erweitern und sage: &quot;Die Klasse 'Schiff1' hat 3 Lebenspunkte, also trage doch bitte 3 Felder für das Schiff ein! Wenn 'Schiff1' 2 Lebenspunkte hat, dann trage doch bitte 2 Felder ein.&quot;</p>
<p>Ich dachte das wär einfach, indem ich eine for-Schleife benutze, jedoch scheint es komplizierter zu sein, als ich dachte.</p>
<p><strong>CShip</strong></p>
<pre><code class="language-cpp">struct SPositionShip
{
	int x;
	int y;
};

class CShip
{
private:
	unsigned int iLP;
	int iPosX;
	int iPosY;
public:
	CShip(int iPosX, int iPosY)
	{
		this-&gt;iPosX = iPosX;
		this-&gt;iPosY = iPosY;
		this-&gt;iLP	= 3;
	}
	~CShip() { }

	SPositionShip SetShip()
	{
		SPositionShip PosShip;
		PosShip.x = iPosX;
		PosShip.y = iPosY;
		return PosShip;
	}

	int GetLP()
	{
		return this-&gt;iLP;
	}
};
</code></pre>
<p><strong>Main</strong></p>
<pre><code class="language-cpp">int main()
{
	char acField[9][9];
	CShip Ship1(3, 5);
	std::vector&lt;SPositionShip&gt; PosShip;
	for(int i = 0; i &lt; Ship1.GetLP(); i++)
	{
		SPositionShip PosBuffer;
		PosShip.push_back(PosBuffer);

		PosShip[i]	= Ship1.SetShip();
		PosShip[i].x += i;
		PosShip[i].y += i;
	}

	// Spielfeld zeichen
	for(int i = 0; i &lt; 9; i++)
	{
		std::cout &lt;&lt; &quot;\n\n			&quot;;
		for(int j = 0; j &lt; 9; j++)
		{
			for(unsigned int l = 0; l &lt; PosShip.size(); l++)
			{
				if(i == PosShip[l].x - 1 &amp;&amp; j == PosShip[l].y - 1) acField[i][j] = '#';
				else acField[i][j] = 'O';
			}
			std::cout &lt;&lt; &quot;  &quot; &lt;&lt; acField[i][j];
		}
	}

	_getch();
	return 0;
}
</code></pre>
<p>Naja aufjedenfall zeichnet er mir immernoch nur ein Feld ein. Warum weiß ich auch nicht <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="😃"
    /> Ich hoffe ihr könnt mir helfen</p>
<p>MFG <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/297782/schiffeversenken-feld-zeichnen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 14 Aug 2026 08:11:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/297782.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 06 Jan 2012 16:30:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Schiffeversenken: Feld zeichnen on Fri, 06 Jan 2012 16:32:16 GMT]]></title><description><![CDATA[<p>Hallo ich bin wieder,</p>
<p>ich versuche mich grade an einem &quot;simplen&quot; Schiffeversenken-Spiel. Bis jetzt bin ich soweit, dass mir das Programm in ein bestimmtes Feld ein 'X' zeichnet (Abhängig der ausgewählten Positionen). Jetzt wollte ich es ein wenig erweitern und sage: &quot;Die Klasse 'Schiff1' hat 3 Lebenspunkte, also trage doch bitte 3 Felder für das Schiff ein! Wenn 'Schiff1' 2 Lebenspunkte hat, dann trage doch bitte 2 Felder ein.&quot;</p>
<p>Ich dachte das wär einfach, indem ich eine for-Schleife benutze, jedoch scheint es komplizierter zu sein, als ich dachte.</p>
<p><strong>CShip</strong></p>
<pre><code class="language-cpp">struct SPositionShip
{
	int x;
	int y;
};

class CShip
{
private:
	unsigned int iLP;
	int iPosX;
	int iPosY;
public:
	CShip(int iPosX, int iPosY)
	{
		this-&gt;iPosX = iPosX;
		this-&gt;iPosY = iPosY;
		this-&gt;iLP	= 3;
	}
	~CShip() { }

	SPositionShip SetShip()
	{
		SPositionShip PosShip;
		PosShip.x = iPosX;
		PosShip.y = iPosY;
		return PosShip;
	}

	int GetLP()
	{
		return this-&gt;iLP;
	}
};
</code></pre>
<p><strong>Main</strong></p>
<pre><code class="language-cpp">int main()
{
	char acField[9][9];
	CShip Ship1(3, 5);
	std::vector&lt;SPositionShip&gt; PosShip;
	for(int i = 0; i &lt; Ship1.GetLP(); i++)
	{
		SPositionShip PosBuffer;
		PosShip.push_back(PosBuffer);

		PosShip[i]	= Ship1.SetShip();
		PosShip[i].x += i;
		PosShip[i].y += i;
	}

	// Spielfeld zeichen
	for(int i = 0; i &lt; 9; i++)
	{
		std::cout &lt;&lt; &quot;\n\n			&quot;;
		for(int j = 0; j &lt; 9; j++)
		{
			for(unsigned int l = 0; l &lt; PosShip.size(); l++)
			{
				if(i == PosShip[l].x - 1 &amp;&amp; j == PosShip[l].y - 1) acField[i][j] = '#';
				else acField[i][j] = 'O';
			}
			std::cout &lt;&lt; &quot;  &quot; &lt;&lt; acField[i][j];
		}
	}

	_getch();
	return 0;
}
</code></pre>
<p>Naja aufjedenfall zeichnet er mir immernoch nur ein Feld ein. Warum weiß ich auch nicht <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="😃"
    /> Ich hoffe ihr könnt mir helfen</p>
<p>MFG <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2164576</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2164576</guid><dc:creator><![CDATA[klucki9]]></dc:creator><pubDate>Fri, 06 Jan 2012 16:32:16 GMT</pubDate></item><item><title><![CDATA[Reply to Schiffeversenken: Feld zeichnen on Fri, 06 Jan 2012 16:44:46 GMT]]></title><description><![CDATA[<p>Tu 'mir und uns allen nen Gefallen und nenne deine Klasse ganz normal Ship und verwende nicht die ungarische Notation.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2164580</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2164580</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 06 Jan 2012 16:44:46 GMT</pubDate></item><item><title><![CDATA[Reply to Schiffeversenken: Feld zeichnen on Fri, 06 Jan 2012 16:52:17 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Tu 'mir und uns allen nen Gefallen und nenne deine Klasse ganz normal Ship und verwende nicht die ungarische Notation.</p>
</blockquote>
<p>Darf ich dann auch fragen wieso?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2164583</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2164583</guid><dc:creator><![CDATA[klucki9]]></dc:creator><pubDate>Fri, 06 Jan 2012 16:52:17 GMT</pubDate></item><item><title><![CDATA[Reply to Schiffeversenken: Feld zeichnen on Fri, 06 Jan 2012 16:55:44 GMT]]></title><description><![CDATA[<p>Gegenfrage, warum machst du das überhaupt so?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2164585</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2164585</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 06 Jan 2012 16:55:44 GMT</pubDate></item><item><title><![CDATA[Reply to Schiffeversenken: Feld zeichnen on Fri, 06 Jan 2012 17:00:39 GMT]]></title><description><![CDATA[<p>Weil ich hier 2 Bücher liegen habe, die es im Lernverzeichnis drin haben. Wenns so schlimm ist, wieso gehen dann viele Autoren darauf ein? Letztenendes ist es doch egal, ich kanns meinetwegen auch xyz nennen und auf CXyz verzichten...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2164589</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2164589</guid><dc:creator><![CDATA[klucki9]]></dc:creator><pubDate>Fri, 06 Jan 2012 17:00:39 GMT</pubDate></item><item><title><![CDATA[Reply to Schiffeversenken: Feld zeichnen on Fri, 06 Jan 2012 17:02:00 GMT]]></title><description><![CDATA[<p>Weil es viele Idioten auf der Welt gibt. Es hat absolut keinen Mehrwert und hat mit der ursprünglichen ungarischen Notation nichts mehr zu tun.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2164590</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2164590</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 06 Jan 2012 17:02:00 GMT</pubDate></item><item><title><![CDATA[Reply to Schiffeversenken: Feld zeichnen on Fri, 06 Jan 2012 17:12:58 GMT]]></title><description><![CDATA[<p>Hm okay, scheinst ja sehr selbstbewusst zu sein, wenn du sowas schreibst... Naja, aber das ist hier nicht das Thema. Vielleicht kannst du mir ja mal helfen :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2164593</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2164593</guid><dc:creator><![CDATA[klucki9]]></dc:creator><pubDate>Fri, 06 Jan 2012 17:12:58 GMT</pubDate></item><item><title><![CDATA[Reply to Schiffeversenken: Feld zeichnen on Fri, 06 Jan 2012 17:21:36 GMT]]></title><description><![CDATA[<p>Okay, ich habs selber gelöst. Hier nochmal die &quot;fertige&quot; for-Schleife.</p>
<pre><code class="language-cpp">for(int i = 0; i &lt; 9; i++)
	{
		std::cout &lt;&lt; &quot;\n\n			&quot;;
		for(int j = 0; j &lt; 9; j++)
		{
			for(int l = 0; l &lt; PosShip.size(); l++)
			{
				if(i == PosShip[l].x - 1 &amp;&amp; j == PosShip[l].y - 1)
				{
					acField[i][j] = '#';
					break;
				}
				else acField[i][j] = 'O';
			}
			std::cout &lt;&lt; &quot;  &quot; &lt;&lt; acField[i][j];
		}
	}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2164598</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2164598</guid><dc:creator><![CDATA[klucki9]]></dc:creator><pubDate>Fri, 06 Jan 2012 17:21:36 GMT</pubDate></item><item><title><![CDATA[Reply to Schiffeversenken: Feld zeichnen on Fri, 06 Jan 2012 17:43:45 GMT]]></title><description><![CDATA[<p>klucki9 schrieb:</p>
<blockquote>
<p>Hm okay, scheinst ja sehr selbstbewusst zu sein, wenn du sowas schreibst...</p>
</blockquote>
<p>Er hat da nicht ganz unrecht. Es gibt viele gute Gründe die dagegen sprechen und wenige dafür. Siehe hier für eine ausführliche Begründung:<br />
<a href="http://www.c-plusplus.net/forum/p1773551#1773551" rel="nofollow">http://www.c-plusplus.net/forum/p1773551#1773551</a></p>
<blockquote>
<p>Okay, ich habs selber gelöst. Hier nochmal die &quot;fertige&quot; for-Schleife.</p>
</blockquote>
<p>Ach, ich wollte es mir gerade angucken. Was mir schonmal beim Querlesen aufgefallen ist:<br />
1. Initialisierungsliste mal googlen und benutzen.<br />
2. Wozu einen leeren Destruktor definieren? Deutet da drauf hin, dass du mal Destruktoren gesehen hast, aber nicht verstanden. Häufig wird so etwas auch von schlechten Lehrern weitergegeben. Was von beidem hier der Fall ist, musst du wissen.<br />
3. Deine Methode SetShip macht ganz merkwürdige Sachen, die nicht zum Namen passen. Eher so eine Art GetPos von dem was es macht. Den Rückgabewert kannst du übrigens bei POD-structs auch direkt initialisieren mit <code>SPositionShip PosShip ={iPosX, iPosY};</code> . Oder spendier der Position einen passenden Konstruktor.<br />
4. Bei Klassenmethoden ist ein this-&gt; implizit und nur nötig, um Namenskonflikte aufzulösen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2164609</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2164609</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 06 Jan 2012 17:43:45 GMT</pubDate></item><item><title><![CDATA[Reply to Schiffeversenken: Feld zeichnen on Fri, 06 Jan 2012 17:54:34 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>klucki9 schrieb:</p>
<blockquote>
<p>Hm okay, scheinst ja sehr selbstbewusst zu sein, wenn du sowas schreibst...</p>
</blockquote>
<p>Er hat da nicht ganz unrecht. Es gibt viele gute Gründe die dagegen sprechen und wenige dafür. Siehe hier für eine ausführliche Begründung:<br />
<a href="http://www.c-plusplus.net/forum/p1773551#1773551" rel="nofollow">http://www.c-plusplus.net/forum/p1773551#1773551</a></p>
<blockquote>
<p>Okay, ich habs selber gelöst. Hier nochmal die &quot;fertige&quot; for-Schleife.</p>
</blockquote>
<p>Ach, ich wollte es mir gerade angucken. Was mir schonmal beim Querlesen aufgefallen ist:<br />
1. Initialisierungsliste mal googlen und benutzen.<br />
2. Wozu einen leeren Destruktor definieren? Deutet da drauf hin, dass du mal Destruktoren gesehen hast, aber nicht verstanden. Häufig wird so etwas auch von schlechten Lehrern weitergegeben. Was von beidem hier der Fall ist, musst du wissen.<br />
3. Deine Methode SetShip macht ganz merkwürdige Sachen, die nicht zum Namen passen. Eher so eine Art GetPos von dem was es macht. Den Rückgabewert kannst du übrigens bei POD-structs auch direkt initialisieren mit <code>SPositionShip PosShip ={iPosX, iPosY};</code> . Oder spendier der Position einen passenden Konstruktor.<br />
4. Bei Klassenmethoden ist ein this-&gt; implizit und nur nötig, um Namenskonflikte aufzulösen.</p>
</blockquote>
<p>1.] Okay <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
2.] Ja wurde mir so beigebracht, was soll denn sonst da rein? Alles auf NULL setzen?<br />
3.] Ja das ist mir auch aufgefallen. Ich hätte auch einfach <em>GetPosX</em> und <em>GetPosY</em> als funktionen definieren sollen und einfach in der main()-Funktion mit der Struktur binden sollen:</p>
<pre><code class="language-cpp">SPositionShip PosShip1
PosShip1.x = Ship1.GetPosX();
PosShip1.y = Ship1.GetPosY();
</code></pre>
<p>oder wie meinst du das?<br />
4.] Ja ich weiß, ist es schlimm, es trotzdem zu machen (aus übersichtlichen Gründen)?</p>
<p>Danke dir <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2164613</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2164613</guid><dc:creator><![CDATA[klucki9]]></dc:creator><pubDate>Fri, 06 Jan 2012 17:54:34 GMT</pubDate></item><item><title><![CDATA[Reply to Schiffeversenken: Feld zeichnen on Fri, 06 Jan 2012 18:02:51 GMT]]></title><description><![CDATA[<p>klucki9 schrieb:</p>
<blockquote>
<p>Hm okay, scheinst ja sehr selbstbewusst zu sein, wenn du sowas schreibst... Naja, aber das ist hier nicht das Thema. Vielleicht kannst du mir ja mal helfen :p</p>
</blockquote>
<p>Gewoehn dich dran, 314159265358979 traegt generell nichts zum Thema bei, sondern ist immer auf der Suche nach Fehlern oder anderen Sachen die er dem Threadsteller auf die Nase binden kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2164616</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2164616</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Fri, 06 Jan 2012 18:02:51 GMT</pubDate></item><item><title><![CDATA[Reply to Schiffeversenken: Feld zeichnen on Fri, 06 Jan 2012 18:23:39 GMT]]></title><description><![CDATA[<p>Wie man in den Wald hineinruft...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2164620</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2164620</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 06 Jan 2012 18:23:39 GMT</pubDate></item><item><title><![CDATA[Reply to Schiffeversenken: Feld zeichnen on Fri, 06 Jan 2012 18:27:18 GMT]]></title><description><![CDATA[<p>klucki9 schrieb:</p>
<blockquote>
<p>2.] Ja wurde mir so beigebracht, was soll denn sonst da rein? Alles auf NULL setzen?</p>
</blockquote>
<p>Nein bloß nicht. Lass es einfach ganz weg.</p>
<p>Hmm. Ungarische Notation, Destruktoren nicht verstanden. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /> Wechsel lieber den Lehrer. Lieber nichts gelernt, als falsch gelernt.</p>
<blockquote>
<p>3.] Ja das ist mir auch aufgefallen. Ich hätte auch einfach <em>GetPosX</em> und <em>GetPosY</em> als funktionen definieren sollen und einfach in der main()-Funktion mit der Struktur binden sollen:</p>
<pre><code class="language-cpp">SPositionShip PosShip1
PosShip1.x = Ship1.GetPosX();
PosShip1.y = Ship1.GetPosY();
</code></pre>
<p>oder wie meinst du das?</p>
</blockquote>
<p>Kommt es dir nicht etwas komisch vor, erst ein neues Objekt anzulegen, dann Wert für Wert dessen Attribute zu setzen und es dann zurück zu geben, anstatt z.B. gleich das richtige zurück zu geben?</p>
<blockquote>
<p>4.] Ja ich weiß, ist es schlimm, es trotzdem zu machen (aus übersichtlichen Gründen)?</p>
</blockquote>
<p>Nein, das ist in Ordnung, wenn's dadurch besser lesbar ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2164621</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2164621</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 06 Jan 2012 18:27:18 GMT</pubDate></item><item><title><![CDATA[Reply to Schiffeversenken: Feld zeichnen on Fri, 06 Jan 2012 18:34:06 GMT]]></title><description><![CDATA[<p>Okay, ich nehms mir zu Herzen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> Aber heute nicht mehr <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /> ich danke Euch</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2164625</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2164625</guid><dc:creator><![CDATA[klucki9]]></dc:creator><pubDate>Fri, 06 Jan 2012 18:34:06 GMT</pubDate></item></channel></rss>