diff options
Diffstat (limited to 'Beginning_C++_through_game_programming/ch9.ipynb')
-rwxr-xr-x | Beginning_C++_through_game_programming/ch9.ipynb | 469 |
1 files changed, 469 insertions, 0 deletions
diff --git a/Beginning_C++_through_game_programming/ch9.ipynb b/Beginning_C++_through_game_programming/ch9.ipynb new file mode 100755 index 00000000..4c67034d --- /dev/null +++ b/Beginning_C++_through_game_programming/ch9.ipynb @@ -0,0 +1,469 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Chapter 9 : Advanced Classes and Dynamic Memory: Game Lobby" + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": {}, + "source": [ + "example 9.1 page no : 288" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "'''\n", + "//Critter Farm\n", + "//Demonstrates object containment\n", + "'''\n", + "class Critter:\n", + " def __init__(self,name=\"\"):\n", + " self.m_Name = name\n", + "\n", + " def GetName(self):\n", + " return self.m_Name;\n", + "\n", + "class Farm:\n", + " def __init__(self,spaces = 1):\n", + " self.m_Critters = []\n", + "\n", + " def Add(self,aCritter):\n", + " self.m_Critters.append(aCritter);\n", + "\n", + " def RollCall(self):\n", + " for i in self.m_Critters:\n", + " print i.GetName() , \" here.\";\n", + "\n", + "crit = Critter(\"Poochie\");\n", + "print \"My critter's name is \" , crit.GetName()\n", + "print \"\\nCreating critter farm.\";\n", + "myFarm = Farm(3)\n", + "print \"Adding three critters to the farm.\";\n", + "myFarm.Add(Critter(\"Moe\"));\n", + "myFarm.Add(Critter(\"Larry\"));\n", + "myFarm.Add(Critter(\"Curly\"));\n", + "print \"Calling Roll. . .\";\n", + "myFarm.RollCall();" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "My critter's name is Poochie\n", + "\n", + "Creating critter farm.\n", + "Adding three critters to the farm.\n", + "Calling Roll. . .\n", + "Moe here.\n", + "Larry here.\n", + "Curly here.\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 3, + "metadata": {}, + "source": [ + "example 9.2 page no : 293" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "'''\n", + "//Friend Critter\n", + "//Demonstrates friend functions and operator overloading\n", + "'''\n", + "\n", + "class Critter:\n", + " def __init__(self,name=\"\"):\n", + " self.m_Name = name\n", + "\n", + " def GetName(self):\n", + " return self.m_Name;\n", + "\n", + "\n", + "def Peek(aCritter):\n", + " print aCritter.m_Name\n", + "\n", + "def print_(aCritter):\n", + " print \"Critter Object - \",\n", + " print \"m_Name: \" , aCritter.m_Name,\n", + "\n", + "\n", + "crit = Critter(\"Poochie\");\n", + "print \"Calling Peek() to access crit's private data member, m_Name: \";\n", + "Peek(crit);\n", + "print \"Sending crit object to cout with the , operator:\";\n", + "print_(crit)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Calling Peek() to access crit's private data member, m_Name: \n", + "Poochie\n", + "Sending crit object to cout with the , operator:\n", + "Critter Object - m_Name: Poochie\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "heading", + "level": 3, + "metadata": {}, + "source": [ + "example 9.3 page no : 297" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "'''\n", + "// Heap\n", + "// Demonstrates dynamically allocating memory\n", + "'''\n", + "def intOnHeap():\n", + " pTemp = []\n", + " return pTemp;\n", + "\n", + "def leak1():\n", + " drip1 = []\n", + "\n", + "def leak2():\n", + " drip2 = []\n", + "\n", + "\n", + "pHeap = 10;\n", + "print \"*pHeap: \" , pHeap\n", + "pHeap2 = intOnHeap();\n", + "print \"pHeap2: \" , pHeap2 \n", + "print \"Freeing memory pointed to by pHeap.\"; # python automatically deletes the memory.\n", + "print \"Freeing memory pointed to by pHeap2.\";\n", + "pHeap = 0;\n", + "pHeap2 = 0;" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "*pHeap: 10\n", + "pHeap2: []\n", + "Freeing memory pointed to by pHeap.\n", + "Freeing memory pointed to by pHeap2.\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "heading", + "level": 3, + "metadata": {}, + "source": [ + "example 9.4 page no : 304" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "'''\n", + "//Heap Data Member\n", + "//Demonstrates an object with a dynamically allocated data member\n", + "'''\n", + "\n", + "\n", + "class Critter:\n", + " def __init__(self,name=None,age=None):\n", + " if (age!=None and name != None) or (age==None and name==None):\n", + " print \"Constructor called\";\n", + " self.m_pName = name\n", + " self.m_Age = age\n", + " else:\n", + " print \"Copy Constructor called\";\n", + " self.m_pName = name.m_pName\n", + " self.m_Age = name.m_Age;\n", + "\n", + " def GetName(self):\n", + " return self.m_Name;\n", + "\n", + " def __del__(self):\n", + " print \"Destructor called\\n\";\n", + "\n", + " def operator(self,c):\n", + " print \"Overloaded Assignment Operator called\";\n", + " return self\n", + " \n", + " def Greet(self):\n", + " print \"I'm \" , self.m_pName , \" and I'm \" , self.m_Age , \" years old.\";\n", + " print \"&m_pName: \" , \n", + " print id(self.m_pName)\n", + "\n", + "\n", + "def testDestructor():\n", + " toDestroy = Critter(\"Rover\", 3);\n", + " toDestroy.Greet(); \n", + "\n", + "def testCopyConstructor(aCopy):\n", + " aCopy.Greet();\n", + "\n", + "def testAssignmentOp():\n", + " crit1 = Critter(\"crit1\", 7);\n", + " crit2 = Critter(\"crit2\", 9);\n", + " crit1 = crit2;\n", + " crit1.Greet();\n", + " crit2.Greet();\n", + " crit3 = Critter(\"crit\", 11);\n", + " crit3 = crit3;\n", + " crit3.Greet();\n", + "\n", + "testDestructor();\n", + "print ''\n", + "crit = Critter(\"Poochie\", 5);\n", + "crit.Greet();\n", + "testCopyConstructor(crit);\n", + "crit.Greet();\n", + "print ''\n", + "testAssignmentOp();" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Constructor called\n", + "I'm Rover and I'm 3 years old.\n", + "&m_pName: 30745776\n", + "Destructor called\n", + "\n", + "\n", + "Constructor called\n", + "I'm Poochie and I'm 5 years old.\n", + "&m_pName: 30744672\n", + "I'm Poochie and I'm 5 years old.\n", + "&m_pName: 30744672\n", + "I'm Poochie and I'm 5 years old.\n", + "&m_pName: 30744672\n", + "\n", + "Constructor called\n", + "Constructor called\n", + "Destructor called\n", + "\n", + "I'm crit2 and I'm 9 years old.\n", + "&m_pName: 30725152\n", + "I'm crit2 and I'm 9 years old.\n", + "&m_pName: 30725152\n", + "Constructor called\n", + "I'm crit and I'm 11 years old.\n", + "&m_pName: 30744624\n", + "Destructor called\n", + "\n", + "Destructor called\n", + "\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "heading", + "level": 3, + "metadata": {}, + "source": [ + "example 9.5 and 9.6 page no : 318" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "'''\n", + "defining player and lobby classes\n", + "'''\n", + "\n", + "class Player:\n", + " def __init__(self,name):\n", + " self.m_Name =name\n", + " self.m_pNext = 0\n", + "\n", + " def GetName(self):\n", + " return self.m_Name;\n", + "\n", + " def GetNext(self):\n", + " return self.m_pNext;\n", + "\n", + " def SetNext(self,next):\n", + " self.m_pNext = next;\n", + " \n", + "class Lobby:\n", + " def __init__(self):\n", + " self.m_pHead =0\n", + "\n", + " def __del__(self):\n", + " self.Clear();\n", + "\n", + " def AddPlayer(self):\n", + " #create a new player node\n", + " print \"Please enter the name of the new player: \",\n", + " name = 'abc' #raw_input()\n", + " pNewPlayer = Player(name);\n", + " #if list is empty, make head of list this new player\n", + " if (self.m_pHead == 0):\n", + " self.m_pHead = pNewPlayer;\n", + " #otherwise find the end of the list and add the player there\n", + " else:\n", + " pIter = self.m_pHead;\n", + " while (pIter.GetNext() != 0):\n", + " pIter = pIter.GetNext();\n", + " pIter.SetNext(pNewPlayer);\n", + " \n", + " def RemovePlayer(self):\n", + " if (self.m_pHead == 0):\n", + " print \"The game lobby is empty.\"\n", + " else:\n", + " pTemp = self.m_pHead;\n", + " self.m_pHead = self.m_pHead.GetNext();\n", + "\n", + " def Clear(self):\n", + " while (self.m_pHead != 0):\n", + " RemovePlayer();\n", + "\n", + " def print_(self):\n", + " pIter = self.m_pHead;\n", + "\n", + " print \"Here's who's in the game lobby:\";\n", + " if (pIter == 0):\n", + " print \"The lobby is empty.\\n\";\n", + " else:\n", + " while (pIter != 0):\n", + " print pIter.GetName()\n", + " pIter = pIter.GetNext();\n", + "\n", + "myLobby = Lobby()\n", + "choice = 1 \n", + "choices = [1,2,3,0]\n", + "i = 0\n", + "while (choice != 0):\n", + " print myLobby.print_();\n", + " print \"\\nGAME LOBBY\";\n", + " print \"0 - Exit the program.\";\n", + " print \"1 - Add a player to the lobby.\";\n", + " print \"2 - Remove a player from the lobby.\";\n", + " print \"3 - Clear the lobby.\";\n", + " print \"\\nEnter choice: \",\n", + " choice = choices[i] #int(raw_input())\n", + " i += 1\n", + " if choice ==0:\n", + " print \"Good-bye.\"\n", + " elif choice ==1: \n", + " myLobby.AddPlayer()\n", + " elif choice==2: \n", + " myLobby.RemovePlayer(); \n", + " elif choice==3: \n", + " myLobby.Clear()\n", + " else:\n", + " print \"That was not a valid choice.\\n\";" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " Here's who's in the game lobby:\n", + "The lobby is empty.\n", + "\n", + "None\n", + "\n", + "GAME LOBBY\n", + "0 - Exit the program.\n", + "1 - Add a player to the lobby.\n", + "2 - Remove a player from the lobby.\n", + "3 - Clear the lobby.\n", + "\n", + "Enter choice: Please enter the name of the new player: Here's who's in the game lobby:\n", + "abc\n", + "None\n", + "\n", + "GAME LOBBY\n", + "0 - Exit the program.\n", + "1 - Add a player to the lobby.\n", + "2 - Remove a player from the lobby.\n", + "3 - Clear the lobby.\n", + "\n", + "Enter choice: Here's who's in the game lobby:\n", + "The lobby is empty.\n", + "\n", + "None\n", + "\n", + "GAME LOBBY\n", + "0 - Exit the program.\n", + "1 - Add a player to the lobby.\n", + "2 - Remove a player from the lobby.\n", + "3 - Clear the lobby.\n", + "\n", + "Enter choice: Here's who's in the game lobby:\n", + "The lobby is empty.\n", + "\n", + "None\n", + "\n", + "GAME LOBBY\n", + "0 - Exit the program.\n", + "1 - Add a player to the lobby.\n", + "2 - Remove a player from the lobby.\n", + "3 - Clear the lobby.\n", + "\n", + "Enter choice: Good-bye.\n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file |