<?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[C++ SFML | Springen]]></title><description><![CDATA[<p>Hallo allerseits,<br />
ich habe momentan ein ziemlich großes Problem unzwar, möchte ich ein kleines Jump and Run basteln, es läuft auch alles gerade ziemlich gut, nur ich schaffe es einfach nicht einen ordentlichen Sprung zu implementieren, hier ein wenig code :</p>
<p>while(window.isOpen())<br />
{<br />
// Sprung<br />
if(Keyboard::isKeyPressed(Keyboard::Space))<br />
{<br />
Playersprite.move(0,-5);<br />
}<br />
}</p>
<p>Im Prinzip währe dies noch kein richtiger Sprung, sondern nur ein einfaches nach oben verschieben des Sprites, nur das eigentliche Problem besteht darin, das auch wenn ich nur die Leertaste antippe, der Sprite nach oben katapultiert wird, da die Eingabe durch die while Schleife sehr oft erneuert wird. Nun zu meiner Frage : Wie schaffe ich es, dass wenn ich die Leertaste drücke, der Sprite nur einmal die 5px hochspringt, und dann z.B. eine 1/4 Sek. gewartet wird, bis man den nächsten Sprung machen kann.</p>
<p>Ich hoffe meine Frage ist verständlich. Sonst versuche ich es gerne nochmal zu erklären.</p>
<p>Mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/323267/c-sfml-springen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 06:52:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/323267.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 23 Jan 2014 17:21:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to C++ SFML | Springen on Thu, 23 Jan 2014 17:21:36 GMT]]></title><description><![CDATA[<p>Hallo allerseits,<br />
ich habe momentan ein ziemlich großes Problem unzwar, möchte ich ein kleines Jump and Run basteln, es läuft auch alles gerade ziemlich gut, nur ich schaffe es einfach nicht einen ordentlichen Sprung zu implementieren, hier ein wenig code :</p>
<p>while(window.isOpen())<br />
{<br />
// Sprung<br />
if(Keyboard::isKeyPressed(Keyboard::Space))<br />
{<br />
Playersprite.move(0,-5);<br />
}<br />
}</p>
<p>Im Prinzip währe dies noch kein richtiger Sprung, sondern nur ein einfaches nach oben verschieben des Sprites, nur das eigentliche Problem besteht darin, das auch wenn ich nur die Leertaste antippe, der Sprite nach oben katapultiert wird, da die Eingabe durch die while Schleife sehr oft erneuert wird. Nun zu meiner Frage : Wie schaffe ich es, dass wenn ich die Leertaste drücke, der Sprite nur einmal die 5px hochspringt, und dann z.B. eine 1/4 Sek. gewartet wird, bis man den nächsten Sprung machen kann.</p>
<p>Ich hoffe meine Frage ist verständlich. Sonst versuche ich es gerne nochmal zu erklären.</p>
<p>Mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2379208</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379208</guid><dc:creator><![CDATA[DerNaris]]></dc:creator><pubDate>Thu, 23 Jan 2014 17:21:36 GMT</pubDate></item><item><title><![CDATA[Reply to C++ SFML | Springen on Thu, 23 Jan 2014 19:22:00 GMT]]></title><description><![CDATA[<p>Ich wäre alternativ auch sehr glücklich über einen kompletten Quellcode, wie ihr den Sprung in euer Game implementiert habt <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/2379228</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379228</guid><dc:creator><![CDATA[DerNaris]]></dc:creator><pubDate>Thu, 23 Jan 2014 19:22:00 GMT</pubDate></item><item><title><![CDATA[Reply to C++ SFML | Springen on Thu, 23 Jan 2014 20:43:43 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>sfml hat doch eine Time-Klasse die du nutzen kannst:</p>
<p><a href="http://www.sfml-dev.org/tutorials/2.1/system-time.php" rel="nofollow">http://www.sfml-dev.org/tutorials/2.1/system-time.php</a></p>
<p>Mach doch grob sowas:</p>
<pre><code>sf::Clock clock;
sf::Time jumpTime = Time.Zero;
sf::Time jumpDuration = sf::::seconds(0.1f);
while (window.isOpen())
{
    sf::Time elapsed = clock.restart();
    if(Keyboard::isKeyPressed(Keyboard::Space)
    {
       if(jumpTime == Time.Zero) 
       {
         Playersprite.move(0,-5); 
       }
       else
       {
         jumpTime += elapsed; 
         if(jumpTime &gt; jumpDuration)
           jumpTime = Time.Zero;
       }
    }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2379235</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379235</guid><dc:creator><![CDATA[Jockelx]]></dc:creator><pubDate>Thu, 23 Jan 2014 20:43:43 GMT</pubDate></item><item><title><![CDATA[Reply to C++ SFML | Springen on Fri, 24 Jan 2014 07:00:07 GMT]]></title><description><![CDATA[<p>Funktioniert irgentwie nicht so ganz, bekomme immer folgende fehlermeldungen :</p>
<p><em>(157): error C2228: Links von &quot;.Zero&quot; muss sich eine Klasse/Struktur/Union befinden.</em><br />
<em>(157): error C2275: 'sf::Time': Ungültige Verwendung dieses Typs als Ausdruck</em><br />
<em>(148): error C2228: Links von &quot;.Zero&quot; muss sich eine Klasse/Struktur/Union befinden.</em><br />
<em>(148): error C2275: 'sf::Time': Ungültige Verwendung dieses Typs als Ausdruck</em><br />
<em>(55): error C2275: 'sf::Time': Ungültige Verwendung dieses Typs als Ausdruck</em></p>
<p>und noch die dazugehörigen Code Zeilen :</p>
<p>146-161</p>
<pre><code>Time elapsed = clock.restart();
		if(Keyboard::isKeyPressed(Keyboard::Space))
		{
			if(jumpTime == Time.Zero)
			{
				Playersprite.move(0,-5);
			}
			 else
			{
				jumpTime += elapsed;
				if(jumpTime &gt; jumpDuration)
				{
				jumpTime = Time.Zero;
				}
			}
		}
</code></pre>
<p>46-55</p>
<pre><code>Clock clock;
	Time jumpTime = Time.Zero;
	Time jumpDuration = sf::seconds(0.1f);

	while(window.isOpen()) 
	{

		Event event;

		while(window.pollEvent(event))
		{
			if(event.type == Event::Closed)
				window.close();	
		}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2379261</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379261</guid><dc:creator><![CDATA[DerNaris]]></dc:creator><pubDate>Fri, 24 Jan 2014 07:00:07 GMT</pubDate></item><item><title><![CDATA[Reply to C++ SFML | Springen on Fri, 24 Jan 2014 08:22:01 GMT]]></title><description><![CDATA[<p>Der Code soll nur das Prinzip aufzeigen. Du solltest ihn verstehen und nicht 1:1 kopieren. Wenn du dann noch die Dokumentation von <code>sf::Time</code> anschaust, findest du den Fehler bestimmt heraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2379270</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379270</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 24 Jan 2014 08:22:01 GMT</pubDate></item><item><title><![CDATA[Reply to C++ SFML | Springen on Fri, 24 Jan 2014 11:11:28 GMT]]></title><description><![CDATA[<p>Hey,</p>
<p>wie Nexus schon sagte, wirst du die fehlenden sf:: bzw using und das '::::' selber korrigieren können.<br />
Mein 'grober' Code war allerdings wirklich etwas zu grob:<br />
jumpTime wird beim Sprunganfang gar nicht hochgesetzt und läuft daher nie in den else-Teil.<br />
Stattdessen wäre ein zusätzliches 'bool isJumping' vielleicht besser, welches beim KeyEvent ggf. gesetzt und ggf. das Sprite positioniert und nach Ablauf der Zeit wieder auf false gesetzt wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2379298</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379298</guid><dc:creator><![CDATA[Jockelx]]></dc:creator><pubDate>Fri, 24 Jan 2014 11:11:28 GMT</pubDate></item><item><title><![CDATA[Reply to C++ SFML | Springen on Fri, 24 Jan 2014 18:21:04 GMT]]></title><description><![CDATA[<p>Habe jetzt etwas eigenes geschrieben was auch ganz gut funktioniert, jedoch muss ich dort</p>
<pre><code>window.clear();
</code></pre>
<p>einsetzen, was alle Sprites kurz löscht, nur ist es möglich nur einen einzelnen Sprite zu löschen ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2379371</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379371</guid><dc:creator><![CDATA[DerNaris]]></dc:creator><pubDate>Fri, 24 Jan 2014 18:21:04 GMT</pubDate></item><item><title><![CDATA[Reply to C++ SFML | Springen on Fri, 24 Jan 2014 20:09:33 GMT]]></title><description><![CDATA[<p>Nein, du musst alles löschen. Versuche gar nicht erst, auf dieser Ebene zu &quot;optimieren&quot;, Echtzeitgrafik funktioniert nicht so.</p>
<p>Lies dazu mal <a href="http://www.sfml-dev.org/tutorials/2.1/graphics-draw.php" rel="nofollow">das offizielle Tutorial</a>, der rote Kasten sollte deine Frage beantworten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2379383</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379383</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 24 Jan 2014 20:09:33 GMT</pubDate></item></channel></rss>