{ "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", "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", "\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", "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", "\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", "\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 } ], "metadata": {} } ] }