<?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[Variablenwert jede Sekunde um x erhöhen]]></title><description><![CDATA[<p>hi<br />
ich schreibe momentan an einem kleinen C++ Programm (mit Visual Studio 2010), in dem man Rohstoffe sammeln muss. So soll sich zum Beispiel die Anzahl der Bretter jede Sekunde um 5 Einheiten erhöhen oder sie soll sich 5 mal pro Sekunde um 1 erhöhen (je nachdem was einfacher ist). Das ganze hab ich mit ca. 15 verschiedenen Varialben vor, die sich alle um unterschiedliche Werte erhöhen. Ich hab schon bei google gesucht aber da finde ich keine antworten zu so einer frage oder ähnlichen problemen. Deswegen frage ich jetzt bei euch nach. ich schreibe seit ca. 3 monaten c++ und kenn mich mit den grundlegenden funktionen aus. wäre echt cool wenn jemand von euch ne idee hat.<br />
danke schon mal im voraus.<br />
lg<br />
Paul</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/279525/variablenwert-jede-sekunde-um-x-erhöhen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 09:03:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/279525.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 28 Dec 2010 16:16:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Variablenwert jede Sekunde um x erhöhen on Tue, 28 Dec 2010 16:16:54 GMT]]></title><description><![CDATA[<p>hi<br />
ich schreibe momentan an einem kleinen C++ Programm (mit Visual Studio 2010), in dem man Rohstoffe sammeln muss. So soll sich zum Beispiel die Anzahl der Bretter jede Sekunde um 5 Einheiten erhöhen oder sie soll sich 5 mal pro Sekunde um 1 erhöhen (je nachdem was einfacher ist). Das ganze hab ich mit ca. 15 verschiedenen Varialben vor, die sich alle um unterschiedliche Werte erhöhen. Ich hab schon bei google gesucht aber da finde ich keine antworten zu so einer frage oder ähnlichen problemen. Deswegen frage ich jetzt bei euch nach. ich schreibe seit ca. 3 monaten c++ und kenn mich mit den grundlegenden funktionen aus. wäre echt cool wenn jemand von euch ne idee hat.<br />
danke schon mal im voraus.<br />
lg<br />
Paul</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1999695</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1999695</guid><dc:creator><![CDATA[machgradausbildung]]></dc:creator><pubDate>Tue, 28 Dec 2010 16:16:54 GMT</pubDate></item><item><title><![CDATA[Reply to Variablenwert jede Sekunde um x erhöhen on Tue, 28 Dec 2010 16:38:17 GMT]]></title><description><![CDATA[<p>Du müsstest erstmal kruz klarstellen, ob es sich um eine Konsolenanwendung handelt oder etwas mit GUI. Wenn du eine GUI für dein evtl. Spiel oder ähnliches hast, kannst du einen Timer benutzen, den die meisten Bibliotheken mitliefern. Dort kannst du das gewünsche ganz einfach implementieren...<br />
Hast du eine Konsolenanwendung und du kennst dich schon einigermaßen gut aus, kannst du deine Variablen in einem extra Thread erhöhen lassen...<br />
Falls das nicht ist, was zu suchst, solltest du noch konkreter werden^^ :xmas2:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1999700</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1999700</guid><dc:creator><![CDATA[*-BootLag-*]]></dc:creator><pubDate>Tue, 28 Dec 2010 16:38:17 GMT</pubDate></item><item><title><![CDATA[Reply to Variablenwert jede Sekunde um x erhöhen on Tue, 28 Dec 2010 16:41:00 GMT]]></title><description><![CDATA[<p>Das hängt ein wenig von deinem Design ab.<br />
- du könntest könntest Threads benutzen (je Rohstoff einen) die von einem Lager (Klasse die alle Threads verwaltet) und (mutexgeschützte) Variablenreferenzen des Lagers incrementiert<br />
- du könntest dein Programm in einer Dauerschleife laufen lassen und zB immer 100ms schlafen legen, dann die aktuelle Zeit ermitteln und entsprechend (Bruchteile von) Ressourcen aufaddieren<br />
- du könntest Qt und QTimer/EventLoop nutzen<br />
- du könntest ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1999703</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1999703</guid><dc:creator><![CDATA[padreigh]]></dc:creator><pubDate>Tue, 28 Dec 2010 16:41:00 GMT</pubDate></item><item><title><![CDATA[Reply to Variablenwert jede Sekunde um x erhöhen on Wed, 29 Dec 2010 10:59:49 GMT]]></title><description><![CDATA[<p>ich programier in konsolenanwendungen und kenn mich da nicht übermäßig gut aus. die idee von padreigh</p>
<blockquote>
<p>du könntest dein Programm in einer Dauerschleife laufen lassen und zB immer 100ms schlafen legen, dann die aktuelle Zeit ermitteln und entsprechend (Bruchteile von) Ressourcen aufaddieren</p>
</blockquote>
<p>hört sich gut an. ich weis blos nicht was für befehle ich dafür brauch und wie die funktionieren. ich bin für jede hilfe dankbar.</p>
<p>lg<br />
Paul</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1999924</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1999924</guid><dc:creator><![CDATA[machgradausbildung]]></dc:creator><pubDate>Wed, 29 Dec 2010 10:59:49 GMT</pubDate></item><item><title><![CDATA[Reply to Variablenwert jede Sekunde um x erhöhen on Wed, 29 Dec 2010 11:17:47 GMT]]></title><description><![CDATA[<blockquote>
<p>du könntest dein Programm in einer Dauerschleife laufen lassen und zB immer 100ms schlafen legen ...</p>
</blockquote>
<p>Damit meinte er wohl das:</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;

int main()
{
    while(true)
    {
        /*
            1000 ms schlafen ...
        */
        Sleep(1000);

        /*
            ... dann geht es weiter.
        */
    }

    return 0;
}
</code></pre>
<p>Da muss aber noch eine Abbruchbedingung rein :xmas1:</p>
<p>gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1999932</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1999932</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 29 Dec 2010 11:17:47 GMT</pubDate></item><item><title><![CDATA[Reply to Variablenwert jede Sekunde um x erhöhen on Thu, 30 Dec 2010 18:45:37 GMT]]></title><description><![CDATA[<p>Statt:</p>
<pre><code class="language-cpp">//...
int holz = 0;

//...
if(eingabe == &quot;holz&quot;) holz += 5;

//
void timerfunc()
{
    ++holz;
}

//...
cout &lt;&lt; &quot;Sie haben &quot; &lt;&lt; holz &lt;&lt; &quot;Holz übrig\n&quot;;
</code></pre>
<p>würde ich das lieber so machen:</p>
<pre><code class="language-cpp">#include &lt;ctime&gt;

double GetProgramTime()
{
    return clock() / (double)CLOCKS_PER_SEC;
}

double start_time = 0;
int holz = 0;

int GetHolz()
{
    return holz + (GetProgramTime() - start_time) * 5;
}

//...
void StartGame()
{
    start_time = GetProgramTime();
    //...
}

//...
if(eingabe == &quot;holz&quot;) holz += 5;

//...
cout &lt;&lt; &quot;Sie haben &quot; &lt;&lt; GetHolz() &lt;&lt; &quot;Holz übrig\n&quot;;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2000473</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2000473</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Thu, 30 Dec 2010 18:45:37 GMT</pubDate></item><item><title><![CDATA[Reply to Variablenwert jede Sekunde um x erhöhen on Tue, 04 Jan 2011 06:36:01 GMT]]></title><description><![CDATA[<p>was ich möchte ist:<br />
ein programm in bei dem sich mehrere variablen auf einmal um verschiedene faktoren erhöhen. das soll die ganze zeit während des programms passieren. die faktoren um die erhöht wird, ändern sich immer mal wieder und man soll währen der ganzen zeit über noch unabhängige eingaben machen können. das programm müsste also gleichzeitig variablen erhöhen, diese ausgeben und eingaben verarbeiten können.<br />
geht so was in c++ oder brauch ich da was anderes??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2002057</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2002057</guid><dc:creator><![CDATA[machgradausbildung]]></dc:creator><pubDate>Tue, 04 Jan 2011 06:36:01 GMT</pubDate></item><item><title><![CDATA[Reply to Variablenwert jede Sekunde um x erhöhen on Tue, 04 Jan 2011 09:20:27 GMT]]></title><description><![CDATA[<p>machgradausbildung schrieb:</p>
<blockquote>
<p>was ich möchte ist:<br />
ein programm in bei dem sich mehrere variablen auf einmal um verschiedene faktoren erhöhen. das soll die ganze zeit während des programms passieren. die faktoren um die erhöht wird, ändern sich immer mal wieder und man soll währen der ganzen zeit über noch unabhängige eingaben machen können. das programm müsste also gleichzeitig variablen erhöhen, diese ausgeben und eingaben verarbeiten können.<br />
geht so was in c++ oder brauch ich da was anderes??</p>
</blockquote>
<p>Erstmal: In C++ geht fast alles, wenn du das richtige Werkzeug hast.<br />
Um effizient zu arbeiten, solltest du in deinem Fall einen extra Thread anlegen, der für die Variablenerhöhung zuständig ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2002104</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2002104</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Tue, 04 Jan 2011 09:20:27 GMT</pubDate></item><item><title><![CDATA[Reply to Variablenwert jede Sekunde um x erhöhen on Tue, 04 Jan 2011 12:05:07 GMT]]></title><description><![CDATA[<p>wxSkip schrieb:</p>
<blockquote>
<p>Um effizient zu arbeiten, solltest du in deinem Fall einen extra Thread anlegen</p>
</blockquote>
<p>Noch effizienter wäre, den Systemtimer zu verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2002167</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2002167</guid><dc:creator><![CDATA[neiziffe]]></dc:creator><pubDate>Tue, 04 Jan 2011 12:05:07 GMT</pubDate></item><item><title><![CDATA[Reply to Variablenwert jede Sekunde um x erhöhen on Wed, 05 Jan 2011 06:30:42 GMT]]></title><description><![CDATA[<p>danke für eure antworten aber ich versteh davon grad absolut garnix<br />
sorry</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2002509</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2002509</guid><dc:creator><![CDATA[machgradausbildung]]></dc:creator><pubDate>Wed, 05 Jan 2011 06:30:42 GMT</pubDate></item><item><title><![CDATA[Reply to Variablenwert jede Sekunde um x erhöhen on Wed, 05 Jan 2011 09:03:44 GMT]]></title><description><![CDATA[<p>Und wenn du ein Spiel schreibst, in dem es um eine solche Wirtschafts-Simulation geht, wie sie in vielen Browsergames zu finden ist, dann solltest du das erst machen, wenn du wirklich Ahnung davon hast bzw. wenn du schon auf einem höheren Niveau programmieren kannst!<br />
Außerdem hilft es immer bei der Planung Machbarkeitsanalysen durchzuführen, um zu sehen, was du noch nicht kannst!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2002531</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2002531</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 05 Jan 2011 09:03:44 GMT</pubDate></item><item><title><![CDATA[Reply to Variablenwert jede Sekunde um x erhöhen on Wed, 05 Jan 2011 11:21:40 GMT]]></title><description><![CDATA[<p>Ich würde einen globalen Timer/Thread und eine Art Strategy Pattern benutzen.</p>
<pre><code class="language-cpp">class AgendaItem
{
   unsigned int CoolDown_;
   unsigned int Counter_;

public:
   AgendaItem( unsigned int Cool ) : CoolDown_( Cool ), Counter_( Cool )
   {
   }

   virtual ~AgendaItem()
   {
   }

   // Trigger ist pure virtual
   virtual void trigger() = 0;

   // wird regelmässig vom externen Timer aufgerufen
   void on_timer()
   {
      // Trigger auslösen?
      if( Counter_ == 0 )
      { 
         // Trigger auslösen und Counter zurücksetzen
         trigger();
         Counter_ = CoolDown_;
      }
      --Counter_;
   }
};

class AgendaItemGainWood : public AgendaItem
{
   Player&amp; Player_;

public:
   AgendaItemGainWood( Player&amp; Player ) : 
      AgendaItem( 500 ),
      Player_( Player )
   {
   }

   void trigger()
   {
      // Ressource aktualisieren
      Player.Wood += 5;
   }
};
</code></pre>
<p>Zum Spielstart musst du eine Agenda befüllen und diese durch einen externen Timer/Thread zyklisch aktualisieren. Jedes Agenda Item hat einen Cooldown, der bei jedem Timeraufruf um 1 reduziert wird. Ist der Cooldown 0 wird die trigger() Methode des Agenda Items aufgerufen und der Cooldown auf den Initialwert zurückgesetzt. Die Timerauflösung sollte man relativ hoch wählen (z.B. 10ms oder 50ms) und den Cooldown Wert entsprechend hoch setzen, damit kann man den Ablauf detailliert steuern.<br />
Ausserdem kann man die Spielgeschwindigkeit variieren, indem man die Timerauflösung verändert, die Realtion der Häufigkeit der auftretenden Ereignisse wird ja nicht verändert.</p>
<p>In meinem Beispiel habe ich dem Ereignis &quot;GainWood&quot; einen Cooldown von 500 gegeben, das sollte bei einer Timerauflösung von 10ms also alle 5 Sekunden auftreten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2002590</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2002590</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Wed, 05 Jan 2011 11:21:40 GMT</pubDate></item><item><title><![CDATA[Reply to Variablenwert jede Sekunde um x erhöhen on Wed, 05 Jan 2011 14:01:16 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/618">@Christian</a> Ivicevic:<br />
coole umschreibung das du mich zu dumm dafür hällst, muss ich mir merken.</p>
<p>@all others<br />
danke für eure hilfe, ich schau mal was ich draus machen kann</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2002681</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2002681</guid><dc:creator><![CDATA[machgradausbildung]]></dc:creator><pubDate>Wed, 05 Jan 2011 14:01:16 GMT</pubDate></item><item><title><![CDATA[Reply to Variablenwert jede Sekunde um x erhöhen on Wed, 05 Jan 2011 17:39:02 GMT]]></title><description><![CDATA[<p>machgradausbildung schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/618">@Christian</a> Ivicevic:<br />
coole umschreibung das du mich zu dumm dafür hällst, muss ich mir merken.</p>
</blockquote>
<p>Ich weiß ja nicht, was er über dich denkt, aber das sollte dir mitteilen, dass du erstmal mit einfacheren Sachen anfangen solltest, wenn du keine dieser Techniken verstehst. Du würdest ja auch nicht in der 2. Klasse Bruchrechnen unterrichten, obwohl die Schüler nicht unbedingt dumm sein müssen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2002825</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2002825</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Wed, 05 Jan 2011 17:39:02 GMT</pubDate></item><item><title><![CDATA[Reply to Variablenwert jede Sekunde um x erhöhen on Wed, 05 Jan 2011 18:11:28 GMT]]></title><description><![CDATA[<p>Es war absolut nicht meine Absicht dir zu unterstellen, dass du dumm bist, sondern, dass es den Anschein hat, als würdest du zu viel wollen ohne die Grundlagen vollständig zu beherrschen. Darüber hinaus war deine Frage, ob dies denn in C++ realisierbar, für mich zumindest, ein Zeichen, dass du unsicher bist. Desweiteren ist die Situation die Folgende, dass jemand der beispielsweise ein Betriebssystem programmieren will, nicht zu fragen hat, wie etwas zu implementieren ist, weil er die nötigen Kenntnisse schon haben <strong>muss</strong>.</p>
<p>Außerdem sind Timer und Threads ein einfaches Konzept und sollten eigentlich recht früh gelernt werden und wenn du da schon aussetzt, dann ist dies wieder ein Zeichen, dass es sein kann, dass du nicht im Element bist.</p>
<p>Kurz gesagt: Dies ist ausgeschrieben, dass was wxSkip auch angesprochen hat.</p>
<p>Gruß</p>
<p>PS: Bei allem Respekt, entschuldige mich, wenn ich dir damit zu nahe getreten sein sollte!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2002841</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2002841</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 05 Jan 2011 18:11:28 GMT</pubDate></item></channel></rss>