Announcement

Collapse

Forum Guidelines

This forum is for finished source code that is working properly. If you have questions about this or any other source code, please post it in one of the Discussion Forums, not here.
See more
See less

Sim_Car Class Demo

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Sim_Car Class Demo

    Another simple Class Demo

    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
    Attached Files
Working...
X