<?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[KI Beispiele gesucht!]]></title><description><![CDATA[<p>Ja der Titel sagt viel aber ich erkläre es mal simpler:</p>
<p>Ich hab ein kleines Konsolenspielchen gemacht aber ich weiss nicht ob man die Klasse Enemy als wirkliche KI ansehen kann da ich auch leider nicht weiss wie man eine KI Programmiert mit C++ würde ich mal gerne wissen ob sich jemand mit dem Thema auskennt!</p>
<p>Hier mal der Code:</p>
<p>Weapon.h</p>
<pre><code class="language-cpp">//Klasse der pistole
class CWeapon
{
public:
	//Methoden:
	void info_pist();	//Erstellt
	void info_epist();	//Erstellt
	void idle();		//Erstellt

	//Elemente:
	string name;
	int shoot;
	int magazin;
	int ammo;
	int damage;

	CWeapon(string xname=&quot;Weapon1&quot;, int xmagazin=20, int xammo=200, int xdamage=5)
	{
		name=xname;
		magazin=xmagazin;
		ammo=xammo;
		damage=xdamage;
	}
	~CWeapon()
	{
	}
};
</code></pre>
<p>Player.h</p>
<pre><code class="language-cpp">//Klasse des Spielers
class CPlayer
{
public:
	//Methoden:
	void get_health();	//Erstellt
	void get_armor();	//Erstellt
	void hit();			//Erstellt
	void shoot();		//Erstellt
	void get_info();	//Erstellt
	void reload();		//Erstellt

	//Elemente:
	string name;
	int medikits;
	int armory;
	int health;
	int armor;

	CPlayer(string xname=&quot;Player 1&quot;, int xarmor=100, int xhealth=100, int xmedikits=3, int xarmory=2)
	{
		name=xname;
		health=xhealth;
		armor=xarmor;
		medikits=xmedikits;
		armory=xarmory;
	}
	~CPlayer()
	{
	}
};
</code></pre>
<p>Enemy.h(KI)</p>
<pre><code class="language-cpp">//Klasse des Gegners
class CEnemy
{
public:
	//Methoden:
	void get_health();	//Erstellt
	void get_armor();	//Erstellt
	void hit();			//Erstellt
	void action();		//Erstellt
	void get_info();	//Erstellt
	void reload();		//Erstellt
	void generator();	//Erstellt

	//Elemente:
	string name;
	int medikits;
	int armory;
	int shooting;
	int health;
	int armor;

	CEnemy(string xname=&quot;KI&quot;, int xarmor=100, int xhealth=100, int xmedikits=3, int xarmory=2)
	{
		health=xhealth;
		armor=xarmor;
		medikits=xmedikits;
		armory=xarmory;
	}
	~CEnemy()
	{
	}

};
</code></pre>
<p>All.h(enthält noch Globale objekte und die fstream funktion zur ausgabe der Endergebnise!)</p>
<pre><code class="language-cpp">//Objekte der klassen
//Globale Objekte löschen!!! 
CEnemy ene;
CPlayer play;
CWeapon pist(&quot;AK-74&quot;, 30, 300, 10);
CWeapon epist(&quot;MP-7A1&quot;, 30, 300, 15);
Cinfo inf;

//Funktion zur ausgabe der Infos des spielverlaufs als txt datei!
fstream fout(&quot;Verlauf.txt&quot;, ios::out);
</code></pre>
<p>Quellcode.cpp</p>
<pre><code>//Headerdateien(standart)
#include &lt;cstdlib&gt;
#include &lt;ctime&gt;
#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string&gt;
#include &lt;windows.h&gt;

//namespace std;
using namespace std;

//Eigene Headerdateien!
#include &quot;Pistole.h&quot;
#include &quot;Player.h&quot;
#include &quot;Enemy.h&quot;
#include &quot;Output.h&quot;
#include &quot;All.h&quot;

//Makros!!!
#ifdef __unix__
   #define clrscr() printf(&quot;\x1B[2J&quot;)
#elif __linux__
   #define clrscr() printf(&quot;\033[2J&quot;)
#elif __BORLANDC__ &amp;&amp; __MSDOS__
   #include &lt;conio.h&gt;
#elif __WIN32__ || _MSC_VER
   #define clrscr() system(&quot;cls&quot;)
#else
   #define clrscr() printf(&quot;clrscr() - Fehler!!\n&quot;)
#endif

////////////////////////////////
//Methoden von Klasse Pistole://
////////////////////////////////

//Final!!!
//Spieler Waffe!
void CWeapon::info_pist()
{
	cout&lt;&lt;&quot;\n\n&quot;
		&lt;&lt;&quot;Waffen Infos:\n&quot;
		&lt;&lt;&quot;\n&quot;
		&lt;&lt;&quot;Pistolenname:&quot;&lt;&lt;pist.name&lt;&lt;endl
		&lt;&lt;&quot;Magazingroesse:&quot;&lt;&lt;pist.magazin&lt;&lt;endl
		&lt;&lt;&quot;Gesamt Munition:&quot;&lt;&lt;pist.ammo&lt;&lt;endl
		&lt;&lt;&quot;Schaden:&quot;&lt;&lt;pist.damage&lt;&lt;&quot;\n\n&quot;;

}

//Final!!!
//Gener Waffe!
void CWeapon::info_epist()
{
	cout&lt;&lt;&quot;\n\n&quot;
		&lt;&lt;&quot;Waffen Infos:\n&quot;
		&lt;&lt;&quot;\n&quot;
		&lt;&lt;&quot;Pistolenname:&quot;&lt;&lt;epist.name&lt;&lt;endl
		&lt;&lt;&quot;Magazingroesse:&quot;&lt;&lt;epist.magazin&lt;&lt;endl
		&lt;&lt;&quot;Gesamt Munition:&quot;&lt;&lt;epist.ammo&lt;&lt;endl
		&lt;&lt;&quot;Schaden:&quot;&lt;&lt;epist.damage&lt;&lt;&quot;\n\n&quot;;

}

//vllt unnütz!
//Erstellt!!!
void CWeapon::idle()
{
	cout&lt;&lt;&quot;\n\nNichts passiert\n&quot;;
}

///////////////////////////////
//Methoden der Klasse Player://
///////////////////////////////

//Medikit?!?(ungenutzt)!!!
void CPlayer::get_health()
{
	for(;;)
	{
		if(play.medikits&lt;=0)
		{
			cout&lt;&lt;&quot;Sie haben keine Medikits mehr!\n&quot;;
			break;
		}

		if(play.health&gt;=100)
		{
			cout&lt;&lt;&quot;Sie haben bereits volles Leben!\n&quot;;
			break;
		}
		play.medikits--;
		play.health+=25;
		break;
	}
}

void CPlayer::get_armor()
{
	for(;;)
	{
		if(play.armory&lt;=0)
		{
			cout&lt;&lt;&quot;Sie haben keine Extra Armor mehr!\n&quot;;
			break;
		}

		if(play.armor&gt;=150)
		{
			cout&lt;&lt;&quot;Sie haben bereits volle Rüstung!\n&quot;;
			break;
		}
		play.armory--;
		play.armor+=50;
		break;
	}
}

//WIP!!!!!!
void CPlayer::hit()
{
	switch(ene.shooting)
	{
	case 1:
	if(play.armor&gt;0)
	{
		play.armor-=pist.damage;
	}

	if(play.armor&lt;=0)
	{
		play.health-=pist.damage;
	}
	break;
	case 3:
	if(play.armor&gt;0)
	{
		play.armor-=(pist.damage*3);
	}

	if(play.armor&lt;=0)
	{
		play.health-=(pist.damage*3);
	}
	break;
	case 5:
	if(play.armor&gt;0)
	{
		play.armor-=(pist.damage*5);
	}

	if(play.armor&lt;=0)
	{
		play.health-=(pist.damage*5);
	}
	break;
	}

			if(play.armor&lt;=0&amp;&amp;play.health&lt;=0)
			{
				cout&lt;&lt;&quot;Sie sind tot!\n&quot;
					&lt;&lt;&quot;Sie haben verloren!\n&quot;;
			} 
}

//Schiesst eine bestimmte anzahl kugeln ab und ruft bei leerem magazin 
//die nachladefunktion auf.
void CPlayer::shoot()
{

	cout&lt;&lt;&quot;\n\nWie oft wollen sie schiessen?\n&quot;
		&lt;&lt;&quot;Geben sie die anzahl der schuesse ein\n&quot;
		&lt;&lt;&quot;(1, 3 oder 5 Schuss)!\n&quot;;
	cin&gt;&gt;pist.shoot;

switch(pist.shoot)
{
case 1:
	pist.magazin-=1;
	break;
case 3:
	pist.magazin-=3;
	break;
case 5:
	pist.magazin-=5;
	break;
default:
	cout&lt;&lt;&quot;Falsche Eingabe!\n&quot;;
}
	if(pist.magazin&lt;=0)
	{
		play.reload();
	}
	else(pist.magazin&gt;0);
	{
		cout&lt;&lt;&quot;Magazingroesse:&quot;&lt;&lt;pist.magazin&lt;&lt;&quot; Schuss\n&quot;;
	}
}

//Erstellt!!!
void CPlayer::get_info()
{

	cout&lt;&lt;&quot;Sie sind Spieler NR.1\n&quot;
		&lt;&lt;&quot;Status Leben und Ruestung:\n&quot;;

	if(play.health&gt;0)
	{
		cout&lt;&lt;play.health&lt;&lt;&quot; Leben\n&quot;;
	}

	if(play.armor&gt;0)
	{
	cout&lt;&lt;play.armor&lt;&lt;&quot; Armor\n&quot;;
	}

	cout&lt;&lt;&quot;\nStatus Items:\n&quot;;
	if(play.medikits&gt;0)
	{
		cout&lt;&lt;&quot;Sie haben &quot;&lt;&lt;play.medikits&lt;&lt;&quot; Medipacks\n&quot;;
	}

	if(play.medikits&lt;=0)
	{
		cout&lt;&lt;&quot;Sie haben keine Medipacks mehr!\n&quot;;
	}

	if(play.armory&gt;0)
	{
		cout&lt;&lt;&quot;Und Sie haben &quot;&lt;&lt;play.armory&lt;&lt;&quot; Erstatzarmor\n&quot;; 
	}

	if(play.armory&lt;=0)
	{
		cout&lt;&lt;&quot;Sie haben ihre Erstatzruestung aufgebraucht!!\n&quot;;
	}
}

//Final!!!
void CPlayer::reload()
{

	if(pist.magazin==20)
	{
		cout&lt;&lt;&quot;\n\nDas Magazin ist nochvoll!\n&quot;
			&lt;&lt;&quot;Kein nachladen moeglich!\n\n&quot;;
	}

	if(pist.magazin&gt;0&amp;&amp;pist.magazin&lt;20||pist.magazin&lt;=0)
	{

		for(;pist.magazin&lt;20;pist.magazin++)
		{
			pist.ammo--;
		}
		cout&lt;&lt;&quot;\nDie Waffe wurde nachgeladen!\n\n&quot;
			&lt;&lt;&quot;Sie haben &quot;&lt;&lt;pist.magazin&lt;&lt;&quot; schuss im Magazin!\n&quot;;
	}

	if(pist.ammo&lt;=0)
	{
		cout&lt;&lt;&quot;Ammo ist leer!\n\n&quot;;
	}

	//Spieler wir jetzt nachdem Nachladen getroffen!
	ene.action();
	play.hit();

}

//////////////////////////////
//Methoden der Klasse Enemy://
//////////////////////////////

//Medikit des gegners?!?(ungenutzt)!!!
void CEnemy::get_health()
{
	for(;;)
	{
		if(ene.health&gt;=100||ene.medikits&lt;=0)
		{
			break;
		}
		ene.medikits--;
		ene.health+=10;
		break;
	}
}

void CEnemy::get_armor()
{
	for(;;)
	{
		if(ene.armor&gt;=150||ene.armory&lt;=0)
		{
			break;
		}
		ene.armory--;
		ene.armor+=10;
		break;
	}
}

//wip!!!
void CEnemy::hit()
{
	switch(pist.shoot)
	{
	case 1:
	if(ene.armor&gt;0)
	{
		ene.armor-=pist.damage;
	}

	if(ene.armor&lt;=0)
	{
		ene.health-=pist.damage;
	}
	break;
	case 3:
	if(ene.armor&gt;0)
	{
		ene.armor-=(pist.damage*3);
	}

	if(ene.armor&lt;=0)
	{
		ene.health-=(pist.damage*3);
	}
	break;
	case 5:
	if(ene.armor&gt;0)
	{
		ene.armor-=(pist.damage*5);
	}

	if(ene.armor&lt;=0)
	{
		ene.health-=(pist.damage*5);
	}
		break;
	}

			if(ene.armor&lt;=0&amp;&amp;ene.health&lt;=0)
			{
				cout&lt;&lt;&quot;Ihr Gegner ist tot!\n&quot;
					&lt;&lt;&quot;Sie haben gewonnen!\n&quot;;
			}
}

//Gegner kann jetzt 1, 3 oder 5 schüsse abgeben, leben und rüstung nachladen!
void CEnemy::action()
{
	//
   int rnd = (rand() % 6);
   switch(rnd) 
   {
      case 0:
         ene.shooting=1;
		 break;
      case 1:
         ene.shooting=3;
		 break;
      case 2:
		 ene.shooting=5;
		 break;
	  case 3:
		  ene.get_health();
		  break;
	  case 4:
		  ene.get_armor();
		  break;
	  case 5:
		  ene.reload();
		  break;
   }
} 

//Erstellt!!!(Final)!!!
void CEnemy::get_info()
{
	cout&lt;&lt;&quot;Ihr gegner ist der PC!\n&quot;
		&lt;&lt;&quot;Status Leben und Ruestung:\n&quot;;

	if(ene.health&gt;0)
	{
		cout&lt;&lt;ene.health&lt;&lt;&quot; Leben\n&quot;;
	}

	if(ene.armor&gt;0)
	{
		cout&lt;&lt;ene.armor&lt;&lt;&quot; Armor\n&quot;;
	}

	cout&lt;&lt;&quot;\nStatus Items:\n&quot;;

	if(ene.medikits&gt;0)
	{
		cout&lt;&lt;&quot;Der Gegner hat &quot;&lt;&lt;ene.medikits&lt;&lt;&quot; Medipacks\n&quot;;
	}

	if(ene.medikits&lt;=0)
	{
		cout&lt;&lt;&quot;Der Gegner hat alle Medipacks verbraucht!\n&quot;;
	}

	if(ene.armory&gt;0)
	{
		cout&lt;&lt;&quot;Und Er hat &quot;&lt;&lt;ene.armory&lt;&lt;&quot; Erstzarmor\n&quot;;
	}

	if(ene.armory&lt;=0)
	{
		cout&lt;&lt;&quot;Aber er hat seine Ersatzarmor aufgebraucht!\n&quot;;
	}
}

void CEnemy::reload()
{
	if(epist.magazin==20)
	{
	}

	if(epist.magazin&gt;0&amp;&amp;epist.magazin&lt;20||epist.magazin&lt;=0)
	{

		for(;epist.magazin&lt;20;epist.magazin++)
		{
			epist.ammo--;
		}

		cout&lt;&lt;&quot;\nDer Gegner musste nachladen!\n\n&quot;
			&lt;&lt;&quot;Sie dürfen nochmal schiessen!\n&quot;;
	}

	if(epist.ammo&lt;=0)
	{
		cout&lt;&lt;&quot;Der Gegner hat keine Munition mehr!!!\n\n&quot;;
	}
	//Spieler darf wenn der gegner nachlädt schiessen!
	play.shoot();
}

///////////////////////////////
//Methoden der Klasse Cinfo:///
///////////////////////////////

void CEnemy::generator()
{
// Initialisierung des internen Zufallszahlengenerator über die aktuelle Uhrzeit
	srand(time(NULL)); 
}

//Final!!!
void Cinfo::choice()
{
	ene.generator();
		//Done!!!
	for(;play.health&gt;0||ene.health&gt;0;inf.i++)
	{
		system(&quot;CLS&quot;);
		inf.info();
	if(play.health&lt;=0||ene.health&lt;=0)
		{
			cout&lt;&lt;&quot;\n\n\n&quot;;
			break;
		}

		cout&lt;&lt;&quot;//Start Runde &quot;&lt;&lt;inf.i&lt;&lt;&quot;\n{\n&quot;;

		play.get_info();
		pist.info_pist();

		ene.get_info();
		epist.info_epist();

	cout&lt;&lt;&quot;\n\n&quot;
		&lt;&lt;&quot;Waehlen sie nun was sie tun wohlen!\n\n&quot;
		&lt;&lt;&quot;*[F]ire\n&quot;
		&lt;&lt;&quot;*[R]elaod\n&quot;
		&lt;&lt;&quot;*[I]dle\n&quot;
		&lt;&lt;&quot;*[M]edikit\n&quot;
		&lt;&lt;&quot;*[A]rmor\n&quot;;

	cin&gt;&gt;op;
	switch(inf.op)
	{
	case 'f':
	case 'F':
		ene.action();
		play.shoot();
		ene.hit();
		play.hit();
		break;
	case 'r':
	case 'R':
		play.reload();
		ene.action();
		play.hit();
		break;
	case 'i':
	case 'I':
		pist.idle();
		ene.action();
		play.hit();
		break;
	case 'm':
	case 'M':
		play.get_health();
		break;
	case 'a':
	case 'A':
		play.get_armor();
		break;
	default:
		pist.idle();
		ene.action();
		play.hit();
		break;
	}
	}
}

//Erstellt!
void Cinfo::info()
{
	fout&lt;&lt;&quot;//Start Runde &quot;&lt;&lt;inf.i&lt;&lt;&quot;!\n{\n&quot;

	//Spielerinfos!!!
		&lt;&lt;&quot;//Spieler Informationen:\n&quot;
		&lt;&lt;&quot;Sie sind Spieler NR.1\n&quot;
		&lt;&lt;&quot;Status Leben und Ruestung:\n&quot;;

	if(play.health&gt;0)
	{
		fout&lt;&lt;play.health&lt;&lt;&quot; Leben\n&quot;;
	}

	if(play.armor&gt;0)
	{
		fout&lt;&lt;play.armor&lt;&lt;&quot; Armor\n&quot;;
	}

	fout&lt;&lt;&quot;\nStatus Items:\n&quot;;
	if(play.medikits&gt;0)
	{
		fout&lt;&lt;&quot;Sie haben &quot;&lt;&lt;play.medikits&lt;&lt;&quot; Medipacks\n&quot;;
	}

	if(play.medikits&lt;=0)
	{
		fout&lt;&lt;&quot;Sie haben keine Medipacks mehr!\n&quot;;
	}

	if(play.armory&gt;0)
	{
		fout&lt;&lt;&quot;Und Sie haben &quot;&lt;&lt;play.armory&lt;&lt;&quot; Erstatzarmor\n&quot;; 
	}

	if(play.armory&lt;=0)
	{
		fout&lt;&lt;&quot;Sie haben ihre Erstatzruestung aufgebraucht!\n&quot;;
	}

	//Waffeninfos!!!
	fout&lt;&lt;&quot;\n//Waffen Informationen:\n&quot;
		&lt;&lt;&quot;Pistolenname:&quot;&lt;&lt;pist.name&lt;&lt;&quot;\n&quot;
		&lt;&lt;&quot;Magazingroesse:&quot;&lt;&lt;pist.magazin&lt;&lt;endl
		&lt;&lt;&quot;Gesamt Munition:&quot;&lt;&lt;pist.ammo&lt;&lt;endl
		&lt;&lt;&quot;Schaden:&quot;&lt;&lt;pist.damage&lt;&lt;&quot;\n\n&quot;;

	//Gegnerinfos!!!!
	fout&lt;&lt;&quot;Ihr gegner ist der PC!\n&quot;
		&lt;&lt;&quot;Status Leben und Ruestung:\n&quot;;

	if(ene.health&gt;0)
	{
		fout&lt;&lt;ene.health&lt;&lt;&quot; Leben\n&quot;;
	}

	if(ene.armor&gt;0)
	{
		fout&lt;&lt;ene.armor&lt;&lt;&quot; Armor\n&quot;;
	}

	fout&lt;&lt;&quot;\nStatus Items:\n&quot;;

	if(ene.medikits&gt;0)
	{
		fout&lt;&lt;&quot;Der Gegner hat &quot;&lt;&lt;ene.medikits&lt;&lt;&quot; Medipacks\n&quot;;
	}

	if(ene.medikits&lt;=0)
	{
		fout&lt;&lt;&quot;Der Gener hat alle Medipacks verbraucht!\n&quot;;
	}

	if(ene.armory&gt;0)
	{
		fout&lt;&lt;&quot;Und Er hat &quot;&lt;&lt;ene.armory&lt;&lt;&quot; Erstzarmor\n&quot;;
	}

	if(ene.armory&lt;=0)
	{
		fout&lt;&lt;&quot;Aber Er hat seine Ersatzarmor verbraucht!\n&quot;;
	}

	//Waffeninfos des Gegners!!!
	fout&lt;&lt;&quot;\n//Waffen Informationen:\n&quot;
		&lt;&lt;&quot;Pistolenname:&quot;&lt;&lt;epist.name&lt;&lt;&quot;\n&quot;
		&lt;&lt;&quot;Magazingroesse:&quot;&lt;&lt;pist.magazin&lt;&lt;endl
		&lt;&lt;&quot;Gesamt Munition:&quot;&lt;&lt;pist.ammo&lt;&lt;endl
		&lt;&lt;&quot;Schaden:&quot;&lt;&lt;pist.damage&lt;&lt;&quot;\n\n&quot;
		&lt;&lt;&quot;}\n&quot;
		&lt;&lt;&quot;//Ende Runde &quot;&lt;&lt;inf.i&lt;&lt;&quot;!\n\n\n\n&quot;;

			if(ene.armor&lt;=0&amp;&amp;ene.health&lt;=0)
			{
				cout&lt;&lt;&quot;//Endergebnis:\n&quot;
					&lt;&lt;&quot;Ihr Gegner ist tot!\n&quot;
					&lt;&lt;&quot;Sie haben gewonnen!\n\n&quot;;
			}

			if(play.armor&lt;=0&amp;&amp;play.health&lt;=0)
			{
				fout&lt;&lt;&quot;//Endergebnis:\n&quot;
					&lt;&lt;&quot;Sie sind tot!\n&quot;
					&lt;&lt;&quot;Sie haben verloren! :( :( :(\n\n&quot;;
			} 

}

/////////////////////////////////////////////////////
//funktion int main() Hier startet das programm ;)///
/////////////////////////////////////////////////////

//Final!
int main()
{
	inf.choice();
	/*
	delete ene;
	delete play;
	delete pist;
	delete epist;
	delete inf;
	*/
	system(&quot;PAUSE&quot;);
}
</code></pre>
<p>gegen was sollte ich die Globalen Objekte ersetzen?</p>
<p>Zeiger, Referencen, Kopien der Objekte oder gegen etwas komplett anderes?</p>
<p>Hab damit grosse Probleme!<br />
Und dann bekam ich auch den Vorschlag einie sachen Private zusetzen aber dann kann ich sachen wie das leben der KI und des Spielers nicht nutzen wegen Zugriffsproblemen.</p>
<p>Hoffe ihr Pro-grammierer könnt mir helfen<br />
Und ich hoffe das ihr mir zum KI ein paar gute Links, Bücher, Ideen und Ratschläge geben <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 MartinMilbret</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/131587/ki-beispiele-gesucht</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 05:02:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/131587.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 04 Jan 2006 16:02:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to KI Beispiele gesucht! on Thu, 05 Jan 2006 12:32:03 GMT]]></title><description><![CDATA[<p>Ja der Titel sagt viel aber ich erkläre es mal simpler:</p>
<p>Ich hab ein kleines Konsolenspielchen gemacht aber ich weiss nicht ob man die Klasse Enemy als wirkliche KI ansehen kann da ich auch leider nicht weiss wie man eine KI Programmiert mit C++ würde ich mal gerne wissen ob sich jemand mit dem Thema auskennt!</p>
<p>Hier mal der Code:</p>
<p>Weapon.h</p>
<pre><code class="language-cpp">//Klasse der pistole
class CWeapon
{
public:
	//Methoden:
	void info_pist();	//Erstellt
	void info_epist();	//Erstellt
	void idle();		//Erstellt

	//Elemente:
	string name;
	int shoot;
	int magazin;
	int ammo;
	int damage;

	CWeapon(string xname=&quot;Weapon1&quot;, int xmagazin=20, int xammo=200, int xdamage=5)
	{
		name=xname;
		magazin=xmagazin;
		ammo=xammo;
		damage=xdamage;
	}
	~CWeapon()
	{
	}
};
</code></pre>
<p>Player.h</p>
<pre><code class="language-cpp">//Klasse des Spielers
class CPlayer
{
public:
	//Methoden:
	void get_health();	//Erstellt
	void get_armor();	//Erstellt
	void hit();			//Erstellt
	void shoot();		//Erstellt
	void get_info();	//Erstellt
	void reload();		//Erstellt

	//Elemente:
	string name;
	int medikits;
	int armory;
	int health;
	int armor;

	CPlayer(string xname=&quot;Player 1&quot;, int xarmor=100, int xhealth=100, int xmedikits=3, int xarmory=2)
	{
		name=xname;
		health=xhealth;
		armor=xarmor;
		medikits=xmedikits;
		armory=xarmory;
	}
	~CPlayer()
	{
	}
};
</code></pre>
<p>Enemy.h(KI)</p>
<pre><code class="language-cpp">//Klasse des Gegners
class CEnemy
{
public:
	//Methoden:
	void get_health();	//Erstellt
	void get_armor();	//Erstellt
	void hit();			//Erstellt
	void action();		//Erstellt
	void get_info();	//Erstellt
	void reload();		//Erstellt
	void generator();	//Erstellt

	//Elemente:
	string name;
	int medikits;
	int armory;
	int shooting;
	int health;
	int armor;

	CEnemy(string xname=&quot;KI&quot;, int xarmor=100, int xhealth=100, int xmedikits=3, int xarmory=2)
	{
		health=xhealth;
		armor=xarmor;
		medikits=xmedikits;
		armory=xarmory;
	}
	~CEnemy()
	{
	}

};
</code></pre>
<p>All.h(enthält noch Globale objekte und die fstream funktion zur ausgabe der Endergebnise!)</p>
<pre><code class="language-cpp">//Objekte der klassen
//Globale Objekte löschen!!! 
CEnemy ene;
CPlayer play;
CWeapon pist(&quot;AK-74&quot;, 30, 300, 10);
CWeapon epist(&quot;MP-7A1&quot;, 30, 300, 15);
Cinfo inf;

//Funktion zur ausgabe der Infos des spielverlaufs als txt datei!
fstream fout(&quot;Verlauf.txt&quot;, ios::out);
</code></pre>
<p>Quellcode.cpp</p>
<pre><code>//Headerdateien(standart)
#include &lt;cstdlib&gt;
#include &lt;ctime&gt;
#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string&gt;
#include &lt;windows.h&gt;

//namespace std;
using namespace std;

//Eigene Headerdateien!
#include &quot;Pistole.h&quot;
#include &quot;Player.h&quot;
#include &quot;Enemy.h&quot;
#include &quot;Output.h&quot;
#include &quot;All.h&quot;

//Makros!!!
#ifdef __unix__
   #define clrscr() printf(&quot;\x1B[2J&quot;)
#elif __linux__
   #define clrscr() printf(&quot;\033[2J&quot;)
#elif __BORLANDC__ &amp;&amp; __MSDOS__
   #include &lt;conio.h&gt;
#elif __WIN32__ || _MSC_VER
   #define clrscr() system(&quot;cls&quot;)
#else
   #define clrscr() printf(&quot;clrscr() - Fehler!!\n&quot;)
#endif

////////////////////////////////
//Methoden von Klasse Pistole://
////////////////////////////////

//Final!!!
//Spieler Waffe!
void CWeapon::info_pist()
{
	cout&lt;&lt;&quot;\n\n&quot;
		&lt;&lt;&quot;Waffen Infos:\n&quot;
		&lt;&lt;&quot;\n&quot;
		&lt;&lt;&quot;Pistolenname:&quot;&lt;&lt;pist.name&lt;&lt;endl
		&lt;&lt;&quot;Magazingroesse:&quot;&lt;&lt;pist.magazin&lt;&lt;endl
		&lt;&lt;&quot;Gesamt Munition:&quot;&lt;&lt;pist.ammo&lt;&lt;endl
		&lt;&lt;&quot;Schaden:&quot;&lt;&lt;pist.damage&lt;&lt;&quot;\n\n&quot;;

}

//Final!!!
//Gener Waffe!
void CWeapon::info_epist()
{
	cout&lt;&lt;&quot;\n\n&quot;
		&lt;&lt;&quot;Waffen Infos:\n&quot;
		&lt;&lt;&quot;\n&quot;
		&lt;&lt;&quot;Pistolenname:&quot;&lt;&lt;epist.name&lt;&lt;endl
		&lt;&lt;&quot;Magazingroesse:&quot;&lt;&lt;epist.magazin&lt;&lt;endl
		&lt;&lt;&quot;Gesamt Munition:&quot;&lt;&lt;epist.ammo&lt;&lt;endl
		&lt;&lt;&quot;Schaden:&quot;&lt;&lt;epist.damage&lt;&lt;&quot;\n\n&quot;;

}

//vllt unnütz!
//Erstellt!!!
void CWeapon::idle()
{
	cout&lt;&lt;&quot;\n\nNichts passiert\n&quot;;
}

///////////////////////////////
//Methoden der Klasse Player://
///////////////////////////////

//Medikit?!?(ungenutzt)!!!
void CPlayer::get_health()
{
	for(;;)
	{
		if(play.medikits&lt;=0)
		{
			cout&lt;&lt;&quot;Sie haben keine Medikits mehr!\n&quot;;
			break;
		}

		if(play.health&gt;=100)
		{
			cout&lt;&lt;&quot;Sie haben bereits volles Leben!\n&quot;;
			break;
		}
		play.medikits--;
		play.health+=25;
		break;
	}
}

void CPlayer::get_armor()
{
	for(;;)
	{
		if(play.armory&lt;=0)
		{
			cout&lt;&lt;&quot;Sie haben keine Extra Armor mehr!\n&quot;;
			break;
		}

		if(play.armor&gt;=150)
		{
			cout&lt;&lt;&quot;Sie haben bereits volle Rüstung!\n&quot;;
			break;
		}
		play.armory--;
		play.armor+=50;
		break;
	}
}

//WIP!!!!!!
void CPlayer::hit()
{
	switch(ene.shooting)
	{
	case 1:
	if(play.armor&gt;0)
	{
		play.armor-=pist.damage;
	}

	if(play.armor&lt;=0)
	{
		play.health-=pist.damage;
	}
	break;
	case 3:
	if(play.armor&gt;0)
	{
		play.armor-=(pist.damage*3);
	}

	if(play.armor&lt;=0)
	{
		play.health-=(pist.damage*3);
	}
	break;
	case 5:
	if(play.armor&gt;0)
	{
		play.armor-=(pist.damage*5);
	}

	if(play.armor&lt;=0)
	{
		play.health-=(pist.damage*5);
	}
	break;
	}

			if(play.armor&lt;=0&amp;&amp;play.health&lt;=0)
			{
				cout&lt;&lt;&quot;Sie sind tot!\n&quot;
					&lt;&lt;&quot;Sie haben verloren!\n&quot;;
			} 
}

//Schiesst eine bestimmte anzahl kugeln ab und ruft bei leerem magazin 
//die nachladefunktion auf.
void CPlayer::shoot()
{

	cout&lt;&lt;&quot;\n\nWie oft wollen sie schiessen?\n&quot;
		&lt;&lt;&quot;Geben sie die anzahl der schuesse ein\n&quot;
		&lt;&lt;&quot;(1, 3 oder 5 Schuss)!\n&quot;;
	cin&gt;&gt;pist.shoot;

switch(pist.shoot)
{
case 1:
	pist.magazin-=1;
	break;
case 3:
	pist.magazin-=3;
	break;
case 5:
	pist.magazin-=5;
	break;
default:
	cout&lt;&lt;&quot;Falsche Eingabe!\n&quot;;
}
	if(pist.magazin&lt;=0)
	{
		play.reload();
	}
	else(pist.magazin&gt;0);
	{
		cout&lt;&lt;&quot;Magazingroesse:&quot;&lt;&lt;pist.magazin&lt;&lt;&quot; Schuss\n&quot;;
	}
}

//Erstellt!!!
void CPlayer::get_info()
{

	cout&lt;&lt;&quot;Sie sind Spieler NR.1\n&quot;
		&lt;&lt;&quot;Status Leben und Ruestung:\n&quot;;

	if(play.health&gt;0)
	{
		cout&lt;&lt;play.health&lt;&lt;&quot; Leben\n&quot;;
	}

	if(play.armor&gt;0)
	{
	cout&lt;&lt;play.armor&lt;&lt;&quot; Armor\n&quot;;
	}

	cout&lt;&lt;&quot;\nStatus Items:\n&quot;;
	if(play.medikits&gt;0)
	{
		cout&lt;&lt;&quot;Sie haben &quot;&lt;&lt;play.medikits&lt;&lt;&quot; Medipacks\n&quot;;
	}

	if(play.medikits&lt;=0)
	{
		cout&lt;&lt;&quot;Sie haben keine Medipacks mehr!\n&quot;;
	}

	if(play.armory&gt;0)
	{
		cout&lt;&lt;&quot;Und Sie haben &quot;&lt;&lt;play.armory&lt;&lt;&quot; Erstatzarmor\n&quot;; 
	}

	if(play.armory&lt;=0)
	{
		cout&lt;&lt;&quot;Sie haben ihre Erstatzruestung aufgebraucht!!\n&quot;;
	}
}

//Final!!!
void CPlayer::reload()
{

	if(pist.magazin==20)
	{
		cout&lt;&lt;&quot;\n\nDas Magazin ist nochvoll!\n&quot;
			&lt;&lt;&quot;Kein nachladen moeglich!\n\n&quot;;
	}

	if(pist.magazin&gt;0&amp;&amp;pist.magazin&lt;20||pist.magazin&lt;=0)
	{

		for(;pist.magazin&lt;20;pist.magazin++)
		{
			pist.ammo--;
		}
		cout&lt;&lt;&quot;\nDie Waffe wurde nachgeladen!\n\n&quot;
			&lt;&lt;&quot;Sie haben &quot;&lt;&lt;pist.magazin&lt;&lt;&quot; schuss im Magazin!\n&quot;;
	}

	if(pist.ammo&lt;=0)
	{
		cout&lt;&lt;&quot;Ammo ist leer!\n\n&quot;;
	}

	//Spieler wir jetzt nachdem Nachladen getroffen!
	ene.action();
	play.hit();

}

//////////////////////////////
//Methoden der Klasse Enemy://
//////////////////////////////

//Medikit des gegners?!?(ungenutzt)!!!
void CEnemy::get_health()
{
	for(;;)
	{
		if(ene.health&gt;=100||ene.medikits&lt;=0)
		{
			break;
		}
		ene.medikits--;
		ene.health+=10;
		break;
	}
}

void CEnemy::get_armor()
{
	for(;;)
	{
		if(ene.armor&gt;=150||ene.armory&lt;=0)
		{
			break;
		}
		ene.armory--;
		ene.armor+=10;
		break;
	}
}

//wip!!!
void CEnemy::hit()
{
	switch(pist.shoot)
	{
	case 1:
	if(ene.armor&gt;0)
	{
		ene.armor-=pist.damage;
	}

	if(ene.armor&lt;=0)
	{
		ene.health-=pist.damage;
	}
	break;
	case 3:
	if(ene.armor&gt;0)
	{
		ene.armor-=(pist.damage*3);
	}

	if(ene.armor&lt;=0)
	{
		ene.health-=(pist.damage*3);
	}
	break;
	case 5:
	if(ene.armor&gt;0)
	{
		ene.armor-=(pist.damage*5);
	}

	if(ene.armor&lt;=0)
	{
		ene.health-=(pist.damage*5);
	}
		break;
	}

			if(ene.armor&lt;=0&amp;&amp;ene.health&lt;=0)
			{
				cout&lt;&lt;&quot;Ihr Gegner ist tot!\n&quot;
					&lt;&lt;&quot;Sie haben gewonnen!\n&quot;;
			}
}

//Gegner kann jetzt 1, 3 oder 5 schüsse abgeben, leben und rüstung nachladen!
void CEnemy::action()
{
	//
   int rnd = (rand() % 6);
   switch(rnd) 
   {
      case 0:
         ene.shooting=1;
		 break;
      case 1:
         ene.shooting=3;
		 break;
      case 2:
		 ene.shooting=5;
		 break;
	  case 3:
		  ene.get_health();
		  break;
	  case 4:
		  ene.get_armor();
		  break;
	  case 5:
		  ene.reload();
		  break;
   }
} 

//Erstellt!!!(Final)!!!
void CEnemy::get_info()
{
	cout&lt;&lt;&quot;Ihr gegner ist der PC!\n&quot;
		&lt;&lt;&quot;Status Leben und Ruestung:\n&quot;;

	if(ene.health&gt;0)
	{
		cout&lt;&lt;ene.health&lt;&lt;&quot; Leben\n&quot;;
	}

	if(ene.armor&gt;0)
	{
		cout&lt;&lt;ene.armor&lt;&lt;&quot; Armor\n&quot;;
	}

	cout&lt;&lt;&quot;\nStatus Items:\n&quot;;

	if(ene.medikits&gt;0)
	{
		cout&lt;&lt;&quot;Der Gegner hat &quot;&lt;&lt;ene.medikits&lt;&lt;&quot; Medipacks\n&quot;;
	}

	if(ene.medikits&lt;=0)
	{
		cout&lt;&lt;&quot;Der Gegner hat alle Medipacks verbraucht!\n&quot;;
	}

	if(ene.armory&gt;0)
	{
		cout&lt;&lt;&quot;Und Er hat &quot;&lt;&lt;ene.armory&lt;&lt;&quot; Erstzarmor\n&quot;;
	}

	if(ene.armory&lt;=0)
	{
		cout&lt;&lt;&quot;Aber er hat seine Ersatzarmor aufgebraucht!\n&quot;;
	}
}

void CEnemy::reload()
{
	if(epist.magazin==20)
	{
	}

	if(epist.magazin&gt;0&amp;&amp;epist.magazin&lt;20||epist.magazin&lt;=0)
	{

		for(;epist.magazin&lt;20;epist.magazin++)
		{
			epist.ammo--;
		}

		cout&lt;&lt;&quot;\nDer Gegner musste nachladen!\n\n&quot;
			&lt;&lt;&quot;Sie dürfen nochmal schiessen!\n&quot;;
	}

	if(epist.ammo&lt;=0)
	{
		cout&lt;&lt;&quot;Der Gegner hat keine Munition mehr!!!\n\n&quot;;
	}
	//Spieler darf wenn der gegner nachlädt schiessen!
	play.shoot();
}

///////////////////////////////
//Methoden der Klasse Cinfo:///
///////////////////////////////

void CEnemy::generator()
{
// Initialisierung des internen Zufallszahlengenerator über die aktuelle Uhrzeit
	srand(time(NULL)); 
}

//Final!!!
void Cinfo::choice()
{
	ene.generator();
		//Done!!!
	for(;play.health&gt;0||ene.health&gt;0;inf.i++)
	{
		system(&quot;CLS&quot;);
		inf.info();
	if(play.health&lt;=0||ene.health&lt;=0)
		{
			cout&lt;&lt;&quot;\n\n\n&quot;;
			break;
		}

		cout&lt;&lt;&quot;//Start Runde &quot;&lt;&lt;inf.i&lt;&lt;&quot;\n{\n&quot;;

		play.get_info();
		pist.info_pist();

		ene.get_info();
		epist.info_epist();

	cout&lt;&lt;&quot;\n\n&quot;
		&lt;&lt;&quot;Waehlen sie nun was sie tun wohlen!\n\n&quot;
		&lt;&lt;&quot;*[F]ire\n&quot;
		&lt;&lt;&quot;*[R]elaod\n&quot;
		&lt;&lt;&quot;*[I]dle\n&quot;
		&lt;&lt;&quot;*[M]edikit\n&quot;
		&lt;&lt;&quot;*[A]rmor\n&quot;;

	cin&gt;&gt;op;
	switch(inf.op)
	{
	case 'f':
	case 'F':
		ene.action();
		play.shoot();
		ene.hit();
		play.hit();
		break;
	case 'r':
	case 'R':
		play.reload();
		ene.action();
		play.hit();
		break;
	case 'i':
	case 'I':
		pist.idle();
		ene.action();
		play.hit();
		break;
	case 'm':
	case 'M':
		play.get_health();
		break;
	case 'a':
	case 'A':
		play.get_armor();
		break;
	default:
		pist.idle();
		ene.action();
		play.hit();
		break;
	}
	}
}

//Erstellt!
void Cinfo::info()
{
	fout&lt;&lt;&quot;//Start Runde &quot;&lt;&lt;inf.i&lt;&lt;&quot;!\n{\n&quot;

	//Spielerinfos!!!
		&lt;&lt;&quot;//Spieler Informationen:\n&quot;
		&lt;&lt;&quot;Sie sind Spieler NR.1\n&quot;
		&lt;&lt;&quot;Status Leben und Ruestung:\n&quot;;

	if(play.health&gt;0)
	{
		fout&lt;&lt;play.health&lt;&lt;&quot; Leben\n&quot;;
	}

	if(play.armor&gt;0)
	{
		fout&lt;&lt;play.armor&lt;&lt;&quot; Armor\n&quot;;
	}

	fout&lt;&lt;&quot;\nStatus Items:\n&quot;;
	if(play.medikits&gt;0)
	{
		fout&lt;&lt;&quot;Sie haben &quot;&lt;&lt;play.medikits&lt;&lt;&quot; Medipacks\n&quot;;
	}

	if(play.medikits&lt;=0)
	{
		fout&lt;&lt;&quot;Sie haben keine Medipacks mehr!\n&quot;;
	}

	if(play.armory&gt;0)
	{
		fout&lt;&lt;&quot;Und Sie haben &quot;&lt;&lt;play.armory&lt;&lt;&quot; Erstatzarmor\n&quot;; 
	}

	if(play.armory&lt;=0)
	{
		fout&lt;&lt;&quot;Sie haben ihre Erstatzruestung aufgebraucht!\n&quot;;
	}

	//Waffeninfos!!!
	fout&lt;&lt;&quot;\n//Waffen Informationen:\n&quot;
		&lt;&lt;&quot;Pistolenname:&quot;&lt;&lt;pist.name&lt;&lt;&quot;\n&quot;
		&lt;&lt;&quot;Magazingroesse:&quot;&lt;&lt;pist.magazin&lt;&lt;endl
		&lt;&lt;&quot;Gesamt Munition:&quot;&lt;&lt;pist.ammo&lt;&lt;endl
		&lt;&lt;&quot;Schaden:&quot;&lt;&lt;pist.damage&lt;&lt;&quot;\n\n&quot;;

	//Gegnerinfos!!!!
	fout&lt;&lt;&quot;Ihr gegner ist der PC!\n&quot;
		&lt;&lt;&quot;Status Leben und Ruestung:\n&quot;;

	if(ene.health&gt;0)
	{
		fout&lt;&lt;ene.health&lt;&lt;&quot; Leben\n&quot;;
	}

	if(ene.armor&gt;0)
	{
		fout&lt;&lt;ene.armor&lt;&lt;&quot; Armor\n&quot;;
	}

	fout&lt;&lt;&quot;\nStatus Items:\n&quot;;

	if(ene.medikits&gt;0)
	{
		fout&lt;&lt;&quot;Der Gegner hat &quot;&lt;&lt;ene.medikits&lt;&lt;&quot; Medipacks\n&quot;;
	}

	if(ene.medikits&lt;=0)
	{
		fout&lt;&lt;&quot;Der Gener hat alle Medipacks verbraucht!\n&quot;;
	}

	if(ene.armory&gt;0)
	{
		fout&lt;&lt;&quot;Und Er hat &quot;&lt;&lt;ene.armory&lt;&lt;&quot; Erstzarmor\n&quot;;
	}

	if(ene.armory&lt;=0)
	{
		fout&lt;&lt;&quot;Aber Er hat seine Ersatzarmor verbraucht!\n&quot;;
	}

	//Waffeninfos des Gegners!!!
	fout&lt;&lt;&quot;\n//Waffen Informationen:\n&quot;
		&lt;&lt;&quot;Pistolenname:&quot;&lt;&lt;epist.name&lt;&lt;&quot;\n&quot;
		&lt;&lt;&quot;Magazingroesse:&quot;&lt;&lt;pist.magazin&lt;&lt;endl
		&lt;&lt;&quot;Gesamt Munition:&quot;&lt;&lt;pist.ammo&lt;&lt;endl
		&lt;&lt;&quot;Schaden:&quot;&lt;&lt;pist.damage&lt;&lt;&quot;\n\n&quot;
		&lt;&lt;&quot;}\n&quot;
		&lt;&lt;&quot;//Ende Runde &quot;&lt;&lt;inf.i&lt;&lt;&quot;!\n\n\n\n&quot;;

			if(ene.armor&lt;=0&amp;&amp;ene.health&lt;=0)
			{
				cout&lt;&lt;&quot;//Endergebnis:\n&quot;
					&lt;&lt;&quot;Ihr Gegner ist tot!\n&quot;
					&lt;&lt;&quot;Sie haben gewonnen!\n\n&quot;;
			}

			if(play.armor&lt;=0&amp;&amp;play.health&lt;=0)
			{
				fout&lt;&lt;&quot;//Endergebnis:\n&quot;
					&lt;&lt;&quot;Sie sind tot!\n&quot;
					&lt;&lt;&quot;Sie haben verloren! :( :( :(\n\n&quot;;
			} 

}

/////////////////////////////////////////////////////
//funktion int main() Hier startet das programm ;)///
/////////////////////////////////////////////////////

//Final!
int main()
{
	inf.choice();
	/*
	delete ene;
	delete play;
	delete pist;
	delete epist;
	delete inf;
	*/
	system(&quot;PAUSE&quot;);
}
</code></pre>
<p>gegen was sollte ich die Globalen Objekte ersetzen?</p>
<p>Zeiger, Referencen, Kopien der Objekte oder gegen etwas komplett anderes?</p>
<p>Hab damit grosse Probleme!<br />
Und dann bekam ich auch den Vorschlag einie sachen Private zusetzen aber dann kann ich sachen wie das leben der KI und des Spielers nicht nutzen wegen Zugriffsproblemen.</p>
<p>Hoffe ihr Pro-grammierer könnt mir helfen<br />
Und ich hoffe das ihr mir zum KI ein paar gute Links, Bücher, Ideen und Ratschläge geben <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 MartinMilbret</p>
]]></description><link>https://www.c-plusplus.net/forum/post/956818</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/956818</guid><dc:creator><![CDATA[MartinMilbret]]></dc:creator><pubDate>Thu, 05 Jan 2006 12:32:03 GMT</pubDate></item><item><title><![CDATA[Reply to KI Beispiele gesucht! on Wed, 04 Jan 2006 16:29:02 GMT]]></title><description><![CDATA[<p>ich hab mir deinen zeilenweise code jetzt nicht durchgelesen, aber ich wüde das mit vererbung machen.</p>
<p>Basisklasse: Spielfigur<br />
&quot;Spieler gesteurte Spielfigur&quot; ist eine &quot;Spielfigur&quot;<br />
&quot;KI gesteurte Spielfigur&quot; ist eine &quot;Spielfigur&quot;</p>
<p>Die meisten funktionen kannst du erben, außer denen die die Kontrolle beeinflussen. Bei dem Spieler sollte das die Tastatur sein, bei der KI sollte es berechnet werden.</p>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/956851</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/956851</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Wed, 04 Jan 2006 16:29:02 GMT</pubDate></item><item><title><![CDATA[Reply to KI Beispiele gesucht! on Wed, 04 Jan 2006 16:36:30 GMT]]></title><description><![CDATA[<p>Guter vorschlag aber leider bin ich noch nicht soweit <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> bin zwar schon weit bei klassen aber noch nicht bei vererbung <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> kommt aber noch <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/956864</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/956864</guid><dc:creator><![CDATA[MartinMilbret]]></dc:creator><pubDate>Wed, 04 Jan 2006 16:36:30 GMT</pubDate></item><item><title><![CDATA[Reply to KI Beispiele gesucht! on Wed, 04 Jan 2006 16:45:21 GMT]]></title><description><![CDATA[<p>Vererbung solltest du dir anschauen, denn dann könntest du dir ne Menge sparen.</p>
<p>Bezüglich KI mal googln oder dir nen Buch kaufen, hab Spieleprogrammierung - Gems I, da gibts ganzes Kapitel über KI.<br />
Ansonsten is KI sehr simpel gesagt nichts anderes als das reagieren des Computers auf Ereignisse, wozu noch jede Menge gehört (Zufall, vordefiniertes Verhalten ect. ect.). Einfach mal überlegen was du an stelle des Computers machen würdest wenn du auf den Spieler triffst und das umsetzten. ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/956880</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/956880</guid><dc:creator><![CDATA[effe_eichelt]]></dc:creator><pubDate>Wed, 04 Jan 2006 16:45:21 GMT</pubDate></item><item><title><![CDATA[Reply to KI Beispiele gesucht! on Wed, 04 Jan 2006 18:15:49 GMT]]></title><description><![CDATA[<p>K hab ja schon so etwas gecodet <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="😉"
    /> müsst nur mal die CEnemy Methoden durch gucken <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>
<pre><code class="language-cpp">void action();        //Erstellt
</code></pre>
<p>Diese umgenau zusein <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>
<p>dort hab ich mit srand was zusammen gefummelt was eine simple art KI sein soll aber ich denke das es eher ein netter versuch ist <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="😛"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/956976</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/956976</guid><dc:creator><![CDATA[MartinMilbret]]></dc:creator><pubDate>Wed, 04 Jan 2006 18:15:49 GMT</pubDate></item><item><title><![CDATA[Reply to KI Beispiele gesucht! on Wed, 04 Jan 2006 18:31:35 GMT]]></title><description><![CDATA[<p>Wozu die CEPistole? der Gegner kann doch genau so eine Pistole benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/956994</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/956994</guid><dc:creator><![CDATA[Glamdrink]]></dc:creator><pubDate>Wed, 04 Jan 2006 18:31:35 GMT</pubDate></item><item><title><![CDATA[Reply to KI Beispiele gesucht! on Wed, 04 Jan 2006 18:57:23 GMT]]></title><description><![CDATA[<p>Stimm du meinst das der Gegner ein eigenes Objekt der Selben Klasse bekommt *kopf schüttel* hätte mir einfallen können <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="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/957014</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/957014</guid><dc:creator><![CDATA[MartinMilbret]]></dc:creator><pubDate>Wed, 04 Jan 2006 18:57:23 GMT</pubDate></item><item><title><![CDATA[Reply to KI Beispiele gesucht! on Thu, 05 Jan 2006 12:32:53 GMT]]></title><description><![CDATA[<p>So hab jetzt mal versucht die Waffe des Spielers sowie die des Gegners mal als Globales Objekt zuerstellen:</p>
<pre><code class="language-cpp">CWeapon pist(&quot;AK-74&quot;, 30, 300, 10);
CWeapon epist(&quot;MP-7A1&quot;, 30, 300, 15);
</code></pre>
<p>Hatte ein Problem was ich jetzt gefixt habe <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="😉"
    /><br />
Hab auch den Quellcode oben komplett geupdatet also bitte mal neu Überfliegen <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>
<p>Jetzt hab ich aber noch das Problem mit den Globalen Objekten und die änderung der Werte die ich mit den Ganzen Methoden beeinflussen will!</p>
<p>Wie kann ich die globalen objekte so ändern das ich lokale Objekte habe aber auch nicht jedes mal ein neue Objekt erstellen muss bei Methoden aufrufen(da sonst der Konstruktor aufgerufen wird) oder wie kann ich das machen? Miz Heap, Zeigern oder Referencen? das macht mir echt kopfzerbrechen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/957710</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/957710</guid><dc:creator><![CDATA[MartinMilbret]]></dc:creator><pubDate>Thu, 05 Jan 2006 12:32:53 GMT</pubDate></item><item><title><![CDATA[Reply to KI Beispiele gesucht! on Thu, 05 Jan 2006 13:53:31 GMT]]></title><description><![CDATA[<p>Ich beschäftige mich sehr mit KI nur setzte ich mehr mechanik ein. Also sowas wie roboter (die man natürlich mit c bzw. C++ oder assembler oder basic programmieren muss). Wenn du auch sowas machen willst, kannst du ja mal bei <a href="http://www.roboternetz.de" rel="nofollow">www.roboternetz.de</a> vorbeischauen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/957828</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/957828</guid><dc:creator><![CDATA[poroblem]]></dc:creator><pubDate>Thu, 05 Jan 2006 13:53:31 GMT</pubDate></item></channel></rss>