Another simple Class Demo
James
James
Code:
'=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* 'SED_PBCC '============================================================================== 'Automobile Simulation C++ code from Planet-Source-Code.com converted to 'PBCC 5.0 Classes. Original C++ Author Brian Baugh '****************************************************************************** ' James C. Fuller ' August 9, 2008 ' [email protected] '****************************************************************************** #COMPILE EXE #DIM ALL %MAX_SPEED = 120 %MAX_REVERSE = -35 $AnyKey = "Any key to continue" CLASS cAutomobile INSTANCE engine,lights,gear,speed,quit AS LONG CLASS METHOD CREATE gear = 2 END METHOD INTERFACE iAutomobile : INHERIT IUNKNOWN METHOD DisplayStatus() CLS PRINT "--------------------------------" PRINT "Status:" PRINT "Engine: ";IIF$(engine,"On","Off") PRINT "Lights: ";IIF$(lights,"On","Off") PRINT " Gear: ";CHOOSE$(Gear,"Reverse","Neutral","Drive") PRINT " Speed: ";FORMAT$(speed) END METHOD '------------------------------------------------------------------------------ METHOD ToggleEngine() engine = IIF&(engine,0,1) END METHOD '------------------------------------------------------------------------------ METHOD ToggleLights() lights = IIF&(lights,0,1) END METHOD '------------------------------------------------------------------------------ METHOD Accelerate() IF speed > 0 THEN IF (engine = 1) AND (speed < %MAX_SPEED) AND (gear = 3) THEN speed +=5 ELSEIF engine <> 1 THEN PRINT "Engine is not on!! -> ";$AnyKey WAITKEY$ ELSEIF speed >= %MAX_SPEED THEN PRINT "Speed is at it's maximum!! -> ";$AnyKey WAITKEY$ ELSEIF gear <> 3 THEN PRINT "Gear is not in Drive!! -> ";$AnyKey WAITKEY$ END IF ELSEIF speed < 0 THEN IF (engine = 1) AND (speed > %MAX_REVERSE) AND (gear = 1) THEN speed -=5 ELSEIF engine <> 1 THEN PRINT "Engine is not on!! -> ";$AnyKey WAITKEY$ ELSEIF speed <= %MAX_REVERSE THEN PRINT "Cannot reverse faster!! -> ";$AnyKey WAITKEY$ ELSEIF gear<> 1 THEN PRINT "Gear not in 'Reverse'!! -> ";$AnyKey WAITKEY$ END IF ELSEIF speed = 0 THEN IF gear = 3 THEN IF engine = 1 THEN speed +=5 ELSE PRINT "Engine is not on!! -> ";$AnyKey WAITKEY$ END IF ELSEIF gear = 1 THEN IF engine = 1 THEN speed -= 5 ELSE PRINT "Engine is not on!! -> ";$AnyKey WAITKEY$ END IF ELSEIF gear = 2 THEN PRINT "Gear is in Neutral!! -> ";$AnyKey WAITKEY$ END IF END IF END METHOD '------------------------------------------------------------------------------ METHOD brake() IF speed = 0 THEN PRINT "Car is already stopped!! -> ";$AnyKey WAITKEY$ ELSEIF speed > 0 THEN speed -= 5 ELSEIF speed < 0 THEN speed += 5 END IF END METHOD '------------------------------------------------------------------------------ METHOD ChangeGear() LOCAL GearChoice AS LONG IF speed = 0 THEN IF engine = 0 THEN PRINT "Engine must be running to change gears!! -> ";$AnyKey WAITKEY$ EXIT METHOD END IF PRINT "1 - Gear Up" PRINT "2 - Gear Down" INPUT "Choice: ",GearChoice SELECT CASE AS LONG GearChoice CASE 1 IF gear < 3 THEN gear += 1 ELSE PRINT "No Higher Gears -> "; $AnyKey WAITKEY$ END IF CASE 2 IF gear > 1 THEN gear -=1 ELSE PRINT "No Lower Gears -> ";$AnyKey WAITKEY$ END IF CASE ELSE PRINT "You did not enter a valid choice -> ";$AnyKey WAITKEY$ END SELECT ELSE PRINT "Car is Moving!! -> ";$AnyKey WAITKEY$ END IF END METHOD END INTERFACE END CLASS FUNCTION PBMAIN() AS LONG LOCAL oCar AS iAutomobile LOCAL UserChoice AS LONG oCar = CLASS "cAutomobile" DO oCar.DisplayStatus PRINT "-------------------------------------------" PRINT "What would you like to do?" PRINT "-------------------------------------------" PRINT "1 - Turn engine Off\On" PRINT "2 - Turn light Off\On" PRINT "3 - Change gears" PRINT "4 - Accelerate" PRINT "5 - Brake" PRINT "6 - Exit Sim Car" INPUT "Choice: ",UserChoice SELECT CASE LONG UserChoice CASE 1 oCar.ToggleEngine CASE 2 oCar.ToggleLights CASE 3 oCar.ChangeGear CASE 4 oCar.Accelerate CASE 5 oCar.Brake END SELECT LOOP UNTIL UserChoice = 6 END FUNCTION