<?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[kleines Problem mit einem 2D-Spiel]]></title><description><![CDATA[<p>Hi,<br />
hab da ein kleines Problem mit nem 2D-Game von mir. Und zwar klappt die Abfrage, ob eine meiner Kugeln den Gegener getroffen hat nicht wirklich.<br />
Die Gegner sind dynamisch erstellte TImage-Objekte mit nem Bitmap drin, die ich wie folgt erstellt habe.</p>
<pre><code>TImage *enemy[5];                  //Habe ich jedoch global in der Header- 
                                   //Datei der Unit deklariert 

for(int h = 0; h &lt; 5; h++) 
{                                   
enemy = new TImage(this); 
enemy-&gt;Parent = this; 
enemy-&gt;Picture-&gt;Bitmap = NewImage; 
enemy-&gt;Transparent = true; 
}
</code></pre>
<p>Die Kugeln hab ich nach dem gleichen Schema erstellt jedoch mit 7 Elementen anstatt 5. Die Kugeln, sowie die Gegner werden alle bei Programmstart erstellt.<br />
Die Kugeln befinden sich dann unsichtbar und disabled auf der Oberfläche.</p>
<p>Die Animation der Kugeln und die Kollisionsabfage mit dem Gegner sieht so aus.</p>
<pre><code>void __fastcall TZombie::bullet_flyTimer(TObject *Sender) 
{ 
for(k = 0; k &lt;= ammo; k++)        //ammo = Anzahl der abgefeuerten Kugeln 
        { 
        if(bullet_dist[k] &gt;= 40) 
                { 
                bullet[k]-&gt;Visible = false; 
                bullet[k]-&gt;Enabled = false; 
                } 
        else 
                { 
                xneub[k] = (bulletpos[k].x) + (-1 * r) * sin(phirad * n_bullet[k]); 
                xneub[k] += 0.5; 
                bulletpos[k].x = int (xneub[k]); 
                yneub[k] = (bulletpos[k].y) + (-1 * r) * cos(phirad * n_bullet[k]); 
                yneub[k] += 0.5; 
                bulletpos[k].y = int (yneub[k]); 

                bullet[k]-&gt;Left = bulletpos[k].x; 
                bullet[k]-&gt;Top = bulletpos[k].y; 

                for(j = 0; j &lt; 5; j++) 
                        { 

                                         //Kollisionsabfrage 
if((bullet[k]-&gt;Left &gt;= enemy[j]-&gt;Left &amp;&amp; bullet[k]-&gt;Left &lt;= (enemy[j]-&gt;Left + enemy[j]-&gt;Width)) &amp;&amp; (bullet[k]-&gt;Top &gt;= enemy[j]-&gt;Top &amp;&amp; bullet[k]-&gt;Top &lt;= (enemy[j]-&gt;Top + enemy[j]-&gt;Height)) &amp;&amp; bullet[k]-&gt;Visible == true) 
                                { 
                                enemy[j]-&gt;Visible = false;       
                                } 
                        } 
                } 

        bullet_dist[k]++;       //wird erhöht nach jedem Positionwechsel 
        } 
}
</code></pre>
<p>Der Timer läuft ständig im Hintergrund. Das ganze hat bis jetzt ohne die Kollisionsabfrage super funktioniert.</p>
<p>Ist zwar ein bisschen durcheinander, aber ich hoffe jemand macht sich die Mühe und hilft mir bei der Fehlersuche.</p>
<p>Gruß und Danke im v******<br />
Boneless</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/171341/kleines-problem-mit-einem-2d-spiel</link><generator>RSS for Node</generator><lastBuildDate>Fri, 14 Aug 2026 07:59:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/171341.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 24 Jan 2007 15:42:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to kleines Problem mit einem 2D-Spiel on Wed, 24 Jan 2007 15:42:53 GMT]]></title><description><![CDATA[<p>Hi,<br />
hab da ein kleines Problem mit nem 2D-Game von mir. Und zwar klappt die Abfrage, ob eine meiner Kugeln den Gegener getroffen hat nicht wirklich.<br />
Die Gegner sind dynamisch erstellte TImage-Objekte mit nem Bitmap drin, die ich wie folgt erstellt habe.</p>
<pre><code>TImage *enemy[5];                  //Habe ich jedoch global in der Header- 
                                   //Datei der Unit deklariert 

for(int h = 0; h &lt; 5; h++) 
{                                   
enemy = new TImage(this); 
enemy-&gt;Parent = this; 
enemy-&gt;Picture-&gt;Bitmap = NewImage; 
enemy-&gt;Transparent = true; 
}
</code></pre>
<p>Die Kugeln hab ich nach dem gleichen Schema erstellt jedoch mit 7 Elementen anstatt 5. Die Kugeln, sowie die Gegner werden alle bei Programmstart erstellt.<br />
Die Kugeln befinden sich dann unsichtbar und disabled auf der Oberfläche.</p>
<p>Die Animation der Kugeln und die Kollisionsabfage mit dem Gegner sieht so aus.</p>
<pre><code>void __fastcall TZombie::bullet_flyTimer(TObject *Sender) 
{ 
for(k = 0; k &lt;= ammo; k++)        //ammo = Anzahl der abgefeuerten Kugeln 
        { 
        if(bullet_dist[k] &gt;= 40) 
                { 
                bullet[k]-&gt;Visible = false; 
                bullet[k]-&gt;Enabled = false; 
                } 
        else 
                { 
                xneub[k] = (bulletpos[k].x) + (-1 * r) * sin(phirad * n_bullet[k]); 
                xneub[k] += 0.5; 
                bulletpos[k].x = int (xneub[k]); 
                yneub[k] = (bulletpos[k].y) + (-1 * r) * cos(phirad * n_bullet[k]); 
                yneub[k] += 0.5; 
                bulletpos[k].y = int (yneub[k]); 

                bullet[k]-&gt;Left = bulletpos[k].x; 
                bullet[k]-&gt;Top = bulletpos[k].y; 

                for(j = 0; j &lt; 5; j++) 
                        { 

                                         //Kollisionsabfrage 
if((bullet[k]-&gt;Left &gt;= enemy[j]-&gt;Left &amp;&amp; bullet[k]-&gt;Left &lt;= (enemy[j]-&gt;Left + enemy[j]-&gt;Width)) &amp;&amp; (bullet[k]-&gt;Top &gt;= enemy[j]-&gt;Top &amp;&amp; bullet[k]-&gt;Top &lt;= (enemy[j]-&gt;Top + enemy[j]-&gt;Height)) &amp;&amp; bullet[k]-&gt;Visible == true) 
                                { 
                                enemy[j]-&gt;Visible = false;       
                                } 
                        } 
                } 

        bullet_dist[k]++;       //wird erhöht nach jedem Positionwechsel 
        } 
}
</code></pre>
<p>Der Timer läuft ständig im Hintergrund. Das ganze hat bis jetzt ohne die Kollisionsabfrage super funktioniert.</p>
<p>Ist zwar ein bisschen durcheinander, aber ich hoffe jemand macht sich die Mühe und hilft mir bei der Fehlersuche.</p>
<p>Gruß und Danke im v******<br />
Boneless</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1216119</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1216119</guid><dc:creator><![CDATA[Boneless]]></dc:creator><pubDate>Wed, 24 Jan 2007 15:42:53 GMT</pubDate></item><item><title><![CDATA[Reply to kleines Problem mit einem 2D-Spiel on Wed, 24 Jan 2007 16:22:33 GMT]]></title><description><![CDATA[<p>Und wo genau ist das Problem?<br />
Wird die Kollision etwa gelegentlich nur verzögert registriert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1216159</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1216159</guid><dc:creator><![CDATA[der_andi]]></dc:creator><pubDate>Wed, 24 Jan 2007 16:22:33 GMT</pubDate></item><item><title><![CDATA[Reply to kleines Problem mit einem 2D-Spiel on Wed, 31 Jan 2007 13:26:02 GMT]]></title><description><![CDATA[<p>Das Programm stürzt ab aufgrund eines Speicherfehlers</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1220479</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1220479</guid><dc:creator><![CDATA[Boneless]]></dc:creator><pubDate>Wed, 31 Jan 2007 13:26:02 GMT</pubDate></item><item><title><![CDATA[Reply to kleines Problem mit einem 2D-Spiel on Wed, 31 Jan 2007 13:30:09 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>an welcher Stelle tritt den der Speicherfehler auf?? Einfach mal mit Hilfe eines Breakpoints suchen <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>
<p>mfg, Micha!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1220485</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1220485</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 31 Jan 2007 13:30:09 GMT</pubDate></item><item><title><![CDATA[Reply to kleines Problem mit einem 2D-Spiel on Wed, 31 Jan 2007 13:42:23 GMT]]></title><description><![CDATA[<pre><code>for(k = 0; k &lt;= ammo; k++)        //ammo = Anzahl der abgefeuerten Kugeln
</code></pre>
<p>Meine Kristallkugel sagt, es sollte <strong>k &lt; ammo</strong> heißen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1220494</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1220494</guid><dc:creator><![CDATA[Morris Szyslak]]></dc:creator><pubDate>Wed, 31 Jan 2007 13:42:23 GMT</pubDate></item></channel></rss>