<?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[SFML Dynamische Tastenbelegungen]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich programmiere momentan ein kleines Snake-Spiel, um damit c++ zu lernen. Dafür benutze ich SFML. Das Spiel ansich ist halbwegs fertig, jedoch möchte ich, dass der Nutzer beliebige Tasten für die Bewegung seiner Schlange festlegen kann.</p>
<p>Meine Idee war es, die Tasten in einer .ini zu speichern und auszulesen, weil das relativ simple ist.</p>
<p>Ich weiß allerdings überhaupt nicht, wie ich die richtigen Tasten dann zuordne.<br />
Die Bewegung wollte ich ungefähr so implementieren:</p>
<pre><code>if (sf::Keyboard::isKeyPressed(keyUp)) if (map.players[0].getDirection() != Snake::direction::DOWN) map.players[0].setDirection(Snake::direction::UP);
if (sf::Keyboard::isKeyPressed(keyLeft)) if (map.players[0].getDirection() != Snake::direction::RIGHT) map.players[0].setDirection(Snake::direction::LEFT);
if (sf::Keyboard::isKeyPressed(keyDown)) if (map.players[0].getDirection() != Snake::direction::UP) map.players[0].setDirection(Snake::direction::DOWN);
if (sf::Keyboard::isKeyPressed(keyRight)) if (map.players[0].getDirection() != Snake::direction::LEFT) map.players[0].setDirection(Snake::direction::RIGHT);
</code></pre>
<p>Dabei ist in den Variablen keyUp, keyLeft, keyDown und keyRight jeweils die zugewiesene Taste gespeichert.</p>
<p>Ich kann aus meiner config.ini einen String oder Integer auslesen, aber wie kann ich daraus dann die Taste erkennen und in die jeweilige Variable speichern?</p>
<p>Stehe da momentan etwas auf dem Schlauch <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=":/"
      alt="😕"
    /> Es wäre super nett, wenn ihr mir helfen könntet <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>Gruß,<br />
Smofe</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/329905/sfml-dynamische-tastenbelegungen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 03 Jul 2026 18:51:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/329905.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 13 Dec 2014 13:30:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to SFML Dynamische Tastenbelegungen on Sat, 13 Dec 2014 13:30:24 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich programmiere momentan ein kleines Snake-Spiel, um damit c++ zu lernen. Dafür benutze ich SFML. Das Spiel ansich ist halbwegs fertig, jedoch möchte ich, dass der Nutzer beliebige Tasten für die Bewegung seiner Schlange festlegen kann.</p>
<p>Meine Idee war es, die Tasten in einer .ini zu speichern und auszulesen, weil das relativ simple ist.</p>
<p>Ich weiß allerdings überhaupt nicht, wie ich die richtigen Tasten dann zuordne.<br />
Die Bewegung wollte ich ungefähr so implementieren:</p>
<pre><code>if (sf::Keyboard::isKeyPressed(keyUp)) if (map.players[0].getDirection() != Snake::direction::DOWN) map.players[0].setDirection(Snake::direction::UP);
if (sf::Keyboard::isKeyPressed(keyLeft)) if (map.players[0].getDirection() != Snake::direction::RIGHT) map.players[0].setDirection(Snake::direction::LEFT);
if (sf::Keyboard::isKeyPressed(keyDown)) if (map.players[0].getDirection() != Snake::direction::UP) map.players[0].setDirection(Snake::direction::DOWN);
if (sf::Keyboard::isKeyPressed(keyRight)) if (map.players[0].getDirection() != Snake::direction::LEFT) map.players[0].setDirection(Snake::direction::RIGHT);
</code></pre>
<p>Dabei ist in den Variablen keyUp, keyLeft, keyDown und keyRight jeweils die zugewiesene Taste gespeichert.</p>
<p>Ich kann aus meiner config.ini einen String oder Integer auslesen, aber wie kann ich daraus dann die Taste erkennen und in die jeweilige Variable speichern?</p>
<p>Stehe da momentan etwas auf dem Schlauch <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=":/"
      alt="😕"
    /> Es wäre super nett, wenn ihr mir helfen könntet <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>Gruß,<br />
Smofe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2432646</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2432646</guid><dc:creator><![CDATA[Smofe]]></dc:creator><pubDate>Sat, 13 Dec 2014 13:30:24 GMT</pubDate></item><item><title><![CDATA[Reply to SFML Dynamische Tastenbelegungen on Sat, 13 Dec 2014 13:44:25 GMT]]></title><description><![CDATA[<p>Smofe schrieb:</p>
<blockquote>
<p>Hallo,<br />
Ich kann aus meiner config.ini einen String oder Integer auslesen, aber wie kann ich daraus dann die Taste erkennen und in die jeweilige Variable speichern?</p>
</blockquote>
<p>Die Tastenwahl sind in SFML auch nicht mehr als ein Integer.</p>
<pre><code>enum  	Key {
  Unknown = -1,
  A = 0,
  B,
  C,
  D,
  E,
  F,
  G,
  H, 
...
</code></pre>
<p><a href="http://www.sfml-dev.org/documentation/2.0/classsf_1_1Keyboard.php" rel="nofollow">http://www.sfml-dev.org/documentation/2.0/classsf_1_1Keyboard.php</a></p>
<pre><code>#include &lt;SFML/Graphics.hpp&gt;
#include &lt;fstream&gt;

int main ()
{
    sf::Keyboard::Key k = sf::Keyboard::A;
    //sf::Keyboard::Key k = 0;

    std::ofstream file(&quot;key.txt&quot;);
    file &lt;&lt; k; //In der Datei steht jetzt 0
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2432650</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2432650</guid><dc:creator><![CDATA[b.o.b]]></dc:creator><pubDate>Sat, 13 Dec 2014 13:44:25 GMT</pubDate></item><item><title><![CDATA[Reply to SFML Dynamische Tastenbelegungen on Sat, 13 Dec 2014 13:50:35 GMT]]></title><description><![CDATA[<p>ich kann dir kein fertiges Programm schreiben, aber ich hab dir ein paar Links, mit deren Hilfe du es selber hinbekommen solltest:<br />
<a href="https://github.com/LaurentGomila/SFML-Game-Development-Book/tree/master/04_Input" rel="nofollow">https://github.com/LaurentGomila/SFML-Game-Development-Book/tree/master/04_Input</a> (insbesondere die Klasse `Player`)<br />
<a href="https://github.com/LaurentGomila/SFML/wiki/Tutorial:-Manage-dynamic-key-binding" rel="nofollow">https://github.com/LaurentGomila/SFML/wiki/Tutorial:-Manage-dynamic-key-binding</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2432651</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2432651</guid><dc:creator><![CDATA[hardware]]></dc:creator><pubDate>Sat, 13 Dec 2014 13:50:35 GMT</pubDate></item><item><title><![CDATA[Reply to SFML Dynamische Tastenbelegungen on Sat, 13 Dec 2014 13:56:33 GMT]]></title><description><![CDATA[<p>b.o.b schrieb:</p>
<blockquote>
<p>Smofe schrieb:</p>
<blockquote>
<p>Hallo,<br />
Ich kann aus meiner config.ini einen String oder Integer auslesen, aber wie kann ich daraus dann die Taste erkennen und in die jeweilige Variable speichern?</p>
</blockquote>
<p>Die Tastenwahl sind in SFML auch nicht mehr als ein Integer.</p>
<pre><code>enum  	Key {
  Unknown = -1,
  A = 0,
  B,
  C,
  D,
  E,
  F,
  G,
  H, 
...
</code></pre>
<p><a href="http://www.sfml-dev.org/documentation/2.0/classsf_1_1Keyboard.php" rel="nofollow">http://www.sfml-dev.org/documentation/2.0/classsf_1_1Keyboard.php</a></p>
<pre><code>#include &lt;SFML/Graphics.hpp&gt;
#include &lt;fstream&gt;

int main ()
{
    sf::Keyboard::Key k = sf::Keyboard::A;
    //sf::Keyboard::Key k = 0;

    std::ofstream file(&quot;key.txt&quot;);
    file &lt;&lt; k; //In der Datei steht jetzt 0
}
</code></pre>
</blockquote>
<p>Stimmt, damit müsste das gehen.</p>
<p>Aber wie bekomme ich es hin, dass der String &quot;A&quot; mit dem Integer 0 verbunden wird? In den Optionen des Programms soll dem Nutzer als ausgewählte Taste ja nicht 0, sondern A angezeigt werden.</p>
<p>Ich will ja nicht umbedingt eine switch abfrage machen, die jedem Buchstabe manuell eine Zahl zuweist <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=":/"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2432652</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2432652</guid><dc:creator><![CDATA[Smofe]]></dc:creator><pubDate>Sat, 13 Dec 2014 13:56:33 GMT</pubDate></item><item><title><![CDATA[Reply to SFML Dynamische Tastenbelegungen on Sat, 13 Dec 2014 14:56:27 GMT]]></title><description><![CDATA[<p>Smofe schrieb:</p>
<blockquote>
<p>Aber wie bekomme ich es hin, dass der String &quot;A&quot; mit dem Integer 0 verbunden wird? In den Optionen des Programms soll dem Nutzer als ausgewählte Taste ja nicht 0, sondern A angezeigt werden.</p>
</blockquote>
<pre><code class="language-cpp">const char* get_keyname(sf::Keyboard::Key k){
  static const char* const keynames[] ={
  &quot;A&quot;,
  &quot;B&quot;,
  &quot;C&quot;,
  &quot;D&quot;,
  &quot;E&quot;,
  &quot;F&quot;,
  &quot;G&quot;,
  &quot;H&quot;,
  &quot;I&quot;,
  &quot;J&quot;,
  &quot;K&quot;,
  &quot;L&quot;,
  &quot;M&quot;,
  &quot;N&quot;,
  &quot;O&quot;,
  &quot;P&quot;,
  &quot;Q&quot;,
  &quot;R&quot;,
  &quot;S&quot;,
  &quot;T&quot;,
  &quot;U&quot;,
  &quot;V&quot;,
  &quot;W&quot;,
  &quot;X&quot;,
  &quot;Y&quot;,
  &quot;Z&quot;,
  &quot;Num0&quot;,
  &quot;Num1&quot;,
  &quot;Num2&quot;,
  &quot;Num3&quot;,
  &quot;Num4&quot;,
  &quot;Num5&quot;,
  &quot;Num6&quot;,
  &quot;Num7&quot;,
  &quot;Num8&quot;,
  &quot;Num9&quot;,
  &quot;Escape&quot;,
  &quot;LControl&quot;,
  &quot;LShift&quot;,
  &quot;LAlt&quot;,
  &quot;LSystem&quot;,
  &quot;RControl&quot;,
  &quot;RShift&quot;,
  &quot;RAlt&quot;,
  &quot;RSystem&quot;,
  &quot;Menu&quot;,
  &quot;LBracket&quot;,
  &quot;RBracket&quot;,
  &quot;SemiColon&quot;,
  &quot;Comma&quot;,
  &quot;Period&quot;,
  &quot;Quote&quot;,
  &quot;Slash&quot;,
  &quot;BackSlash&quot;,
  &quot;Tilde&quot;,
  &quot;Equal&quot;,
  &quot;Dash&quot;,
  &quot;Space&quot;,
  &quot;Return&quot;,
  &quot;BackSpace&quot;,
  &quot;Tab&quot;,
  &quot;PageUp&quot;,
  &quot;PageDown&quot;,
  &quot;End&quot;,
  &quot;Home&quot;,
  &quot;Insert&quot;,
  &quot;Delete&quot;,
  &quot;Add&quot;,
  &quot;Subtract&quot;,
  &quot;Multiply&quot;,
  &quot;Divide&quot;,
  &quot;Left&quot;,
  &quot;Right&quot;,
  &quot;Up&quot;,
  &quot;Down&quot;,
  &quot;Numpad0&quot;,
  &quot;Numpad1&quot;,
  &quot;Numpad2&quot;,
  &quot;Numpad3&quot;,
  &quot;Numpad4&quot;,
  &quot;Numpad5&quot;,
  &quot;Numpad6&quot;,
  &quot;Numpad7&quot;,
  &quot;Numpad8&quot;,
  &quot;Numpad9&quot;,
  &quot;F1&quot;,
  &quot;F2&quot;,
  &quot;F3&quot;,
  &quot;F4&quot;,
  &quot;F5&quot;,
  &quot;F6&quot;,
  &quot;F7&quot;,
  &quot;F8&quot;,
  &quot;F9&quot;,
  &quot;F10&quot;,
  &quot;F11&quot;,
  &quot;F12&quot;,
  &quot;F13&quot;,
  &quot;F14&quot;,
  &quot;F15&quot;,
  &quot;Pause&quot;,
  };
  return keynames[k];
}
</code></pre>
<p>:p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2432663</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2432663</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Sat, 13 Dec 2014 14:56:27 GMT</pubDate></item><item><title><![CDATA[Reply to SFML Dynamische Tastenbelegungen on Sat, 13 Dec 2014 15:09:52 GMT]]></title><description><![CDATA[<p>Super, danke! <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>Ich hatte gehofft, dass es bereits irgend eine Art fertige Funktion dafür gibt. Funktioniert jetzt jedenfalls alles, vielen dank euch <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/2432665</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2432665</guid><dc:creator><![CDATA[Smofe]]></dc:creator><pubDate>Sat, 13 Dec 2014 15:09:52 GMT</pubDate></item></channel></rss>