Index: /orxonox/trunk/core/npc.cc
===================================================================
--- /orxonox/trunk/core/npc.cc	(revision 1857)
+++ /orxonox/trunk/core/npc.cc	(revision 1858)
@@ -19,4 +19,7 @@
 #include "npc.h"
 
+#include <iostream>
+
+using namespace std;
 
 
@@ -28,2 +31,19 @@
 
 
+void NPC::setPosition(int x, int y, int z)
+{
+  xCor = x; yCor = y; zCor = z;
+}
+
+void NPC::getPosition(int* x, int* y, int* z) 
+{
+  *x = xCor; 
+  *y = yCor; 
+  *z = zCor;
+}
+
+
+void NPC::drawNPC(void) 
+{
+  cout << "Player::drawNPC()" << endl;
+}
Index: /orxonox/trunk/core/npc.h
===================================================================
--- /orxonox/trunk/core/npc.h	(revision 1857)
+++ /orxonox/trunk/core/npc.h	(revision 1858)
@@ -10,5 +10,17 @@
   ~NPC ();
 
+  void drawNPC(void);
+  void setPosition(int x, int y, int z);
+  void getPosition(int* x, int* y, int* z);
+
+ private:
+  /* position of the non player space craft */
+
   int npcType;
+
+  int xCor;
+  int yCor;
+  int zCor;
+;
 
 };
Index: /orxonox/trunk/core/orxonox.cc
===================================================================
--- /orxonox/trunk/core/orxonox.cc	(revision 1857)
+++ /orxonox/trunk/core/orxonox.cc	(revision 1858)
@@ -72,4 +72,5 @@
   glutDisplayFunc(display);
   glutReshapeFunc(reshape);
+  glutKeyboardFunc(keyboard);
 }
 
@@ -88,4 +89,13 @@
 }
 
+
+void Orxonox::keyboard(unsigned char key, int x, int y)
+{
+  switch(key) {
+  case 27:
+    exit 0;
+    break;
+  }
+}
 
 
@@ -122,4 +132,12 @@
   (*wd).addPlayer(pl);
   (*wd).addPlayer(pl);
+
+  NPC* nl = new NPC;
+  (*wd).addNPC(nl);
+  (*wd).addNPC(nl);
+  (*wd).addNPC(nl);
+  (*wd).addNPC(nl);
+  (*wd).addNPC(nl);
+  (*wd).addNPC(nl);
   (*wd).testThaTest();
 
Index: /orxonox/trunk/core/orxonox.h
===================================================================
--- /orxonox/trunk/core/orxonox.h	(revision 1857)
+++ /orxonox/trunk/core/orxonox.h	(revision 1858)
@@ -23,4 +23,5 @@
   static void display (void);
   static void reshape (int w, int h);
+  static void keyboard(unsigned char key, int x, int y);
 };
 
Index: /orxonox/trunk/core/player.cc
===================================================================
--- /orxonox/trunk/core/player.cc	(revision 1857)
+++ /orxonox/trunk/core/player.cc	(revision 1858)
@@ -14,4 +14,5 @@
 
 #include "player.h"
+#include <iostream>
 
 using namespace std;
@@ -25,2 +26,12 @@
 
 
+void Player::setPosition( int x, int y, int z)
+{
+  xCor = x; yCor = y; zCor = z;
+}
+
+
+void Player::drawPlayer(void) 
+{
+  cout << "Player::drawPlayer()" << endl;
+}
Index: /orxonox/trunk/core/player.h
===================================================================
--- /orxonox/trunk/core/player.h	(revision 1857)
+++ /orxonox/trunk/core/player.h	(revision 1858)
@@ -10,4 +10,8 @@
   ~Player ();
 
+  void setPosition(int x, int y, int z);
+  void getPosition(int* x, int* y, int* z);
+  void drawPlayer(void);
+
  private:
   /* position of the space craft */
@@ -16,4 +20,6 @@
   int zCor;
 
+
+
 };
 
Index: /orxonox/trunk/core/world.cc
===================================================================
--- /orxonox/trunk/core/world.cc	(revision 1857)
+++ /orxonox/trunk/core/world.cc	(revision 1858)
@@ -24,7 +24,12 @@
 
 
-
+/** 
+   \brief Create a new World
+   
+   This creates a new empty world!
+*/
 World::World () {
   lastPlayer = null;
+  lastNPC = null;
 }
 
@@ -57,4 +62,87 @@
 
 
+/** 
+   \brief Remove Player
+   \param player A reference to the new npc object
+   
+   Remove a new Player to the game.
+*/
+bool World::removePlayer(Player* player) {
+  cout << "World::removeNPC not implemented yet" << endl;
+}
+
+
+/** 
+   \brief Add Non-Player-Character
+   \param player A reference to the new npc object
+   
+   Add a new Non-Player-Character to the game. Player has to be initialised previously 
+*/
+bool World::addNPC(NPC* npc) 
+{
+  npcList* listMember = new npcList;
+  listMember->npc = npc;
+  if ( lastNPC != null ) 
+    {
+      listMember->number = lastNPC->number + 1;
+      listMember->next = lastNPC;
+    }
+  else 
+    {
+      listMember->number = 0;
+      listMember->next = null;
+    }
+  lastNPC = listMember;
+}
+
+
+/** 
+   \brief Remove Non-Player-Character
+   \param player A reference to the new npc object
+   
+   Remove a new Non-Player-Character to the game.
+*/
+bool World::removeNPC(NPC* npc) {
+  cout << "World::removeNPC not implemented yet" << endl;
+}
+
+
+
+/** 
+   \brief Draws the World and all Objects contained
+   
+   Calls the draw function of all: Objects, Players, Environement
+*/
+void World::drawWorld(void) 
+{
+  playerList* tmpPlayer = lastPlayer;
+  Player* player = tmpPlayer->player;
+  while( tmpPlayer != null ) 
+    {
+      (*tmpPlayer->player).drawPlayer();
+      tmpPlayer = tmpPlayer->next;
+    }
+  npcList* tmpNPC = lastNPC;
+  while( tmpNPC != null )
+    {
+      (*tmpNPC->npc).drawNPC();
+      tmpNPC = tmpNPC->next;
+    }
+}
+
+
+/** 
+   \brief Updates the world and all its objects
+   
+   Calculates the new state of the world. User-input and AI of
+   the enemies are accounted for.
+*/
+void World::updateWorld(void) 
+{
+  
+
+}
+
+
 
 /** 
@@ -63,5 +151,5 @@
    testing, testing, testing...
 */
-void World::testThaTest() 
+void World::testThaTest(void) 
 {
   cout << "World::testThaTest() called" << endl;
@@ -75,9 +163,17 @@
     }
 
+  /* test addNPC */
+  cout << "addNPC test..." << endl;
+  npcList* nl = lastNPC;
+  while ( nl != null )
+    {
+      cout << "npc " << nl->number << " was found" << endl;
+      nl = nl->next;
+    }
+
+  /* test drawWorld() */
+  cout << "drawWorld()..." << endl;
+  drawWorld();
+
   cout << "World::testThaTest() finished" << endl;
 }
-
-bool World::removePlayer(Player* player) {}
-
-bool World::addNPC(NPC* npc) {}
-bool World::removeNPC(NPC* npc) {}
Index: /orxonox/trunk/core/world.h
===================================================================
--- /orxonox/trunk/core/world.h	(revision 1857)
+++ /orxonox/trunk/core/world.h	(revision 1858)
@@ -30,6 +30,7 @@
     npcList* next;
     NPC* npc;
+    int number;
   };
-  npcList* firstNPC;
+  npcList* lastNPC;
 
   bool addPlayer(Player* player);
@@ -39,4 +40,7 @@
   bool removeNPC(NPC* npc);
 
+
+  void drawWorld(void);
+  void updateWorld(void);
   void testThaTest(void);
 
