QBASIC program za upravljanje modelom lifta


' ******   dizalo   ****** (autor: B.Boranic)
CLS
izlaz = 888: ' **** ili 956 ****
OUT izlaz, 0
GOSUB maska1
'
DO
GOSUB pokazivanje
GOSUB biranje
GOSUB vozi
LOOP
END
'
maska1:
LOCATE 1, 30: PRINT "D I Z A L O"
LOCATE 20, 20: PRINT "Prizemlje"
LOCATE 15, 20: PRINT "I. kat"
LOCATE 10, 20: PRINT "II. kat"
LOCATE 5, 20: PRINT "III.kat"
'
LOCATE 5, 40: PRINT "(3)"
LOCATE 10, 40: PRINT "(2)"
LOCATE 15, 40: PRINT "(1)"
LOCATE 20, 40: PRINT "(P)"
RETURN
'
pokazivanje:
a = STRIG(1)
b = STRIG(3)
c = STRIG(5)
d = STRIG(7)
'
IF a = 1 THEN
   LOCATE 20, 10: PRINT ">>>>>>>"
   ELSE
   LOCATE 20, 10: PRINT "       "
END IF
'
IF b = 1 THEN
   LOCATE 15, 10: PRINT ">>>>>>>"
   ELSE
   LOCATE 15, 10: PRINT "       "
END IF
'
IF c = 1 THEN
   LOCATE 10, 10: PRINT ">>>>>>>"
   ELSE
   LOCATE 10, 10: PRINT "       "
END IF
'
IF d = 1 THEN
   LOCATE 5, 10: PRINT ">>>>>>>"
   ELSE
   LOCATE 5, 10: PRINT "       "
END IF
'
stanje = a * 2 ^ 0 + b * 2 ^ 1 + c * 2 ^ 2 + d * 2 ^ 3
RETURN
'
biranje:
q$ = INKEY$
IF q$ = "P" OR q$ = "p" THEN
   aa = 1: bb = 0: cc = 0: dd = 0
   LOCATE 20, 45: PRINT "***"
   LOCATE 15, 45: PRINT "   "
   LOCATE 10, 45: PRINT "   "
   LOCATE 5, 45: PRINT "   "
END IF
'
IF q$ = "1" THEN
   bb = 1: aa = 0: cc = 0: dd = 0
   LOCATE 15, 45: PRINT "***"
   LOCATE 20, 45: PRINT "   "
   LOCATE 10, 45: PRINT "   "
   LOCATE 5, 45: PRINT "   "
END IF
'
IF q$ = "2" THEN
   cc = 1: aa = 0: bb = 0: dd = 0
   LOCATE 10, 45: PRINT "***"
   LOCATE 15, 45: PRINT "   "
   LOCATE 20, 45: PRINT "   "
   LOCATE 5, 45: PRINT "   "
END IF
'
IF q$ = "3" THEN
   dd = 1: aa = 0: bb = 0: cc = 0
   LOCATE 5, 45: PRINT "***"
   LOCATE 15, 45: PRINT "   "
   LOCATE 10, 45: PRINT "   "
   LOCATE 20, 45: PRINT "   "
END IF
'
IF q$ = "Q" OR q$ = "q" THEN
   OUT izlaz, 0
   END
END IF
'
idina = aa * 2 ^ 0 + bb * 2 ^ 1 + cc * 2 ^ 2 + dd * 2 ^ 3
RETURN
'
vozi:
IF stanje < idina THEN
   OUT izlaz, 1
   kuda$ = "ide gore"
END IF
'
IF stanje > idina THEN
   OUT izlaz, 2
   kuda$ = "ide dolje"
END IF
'
DO
   GOSUB pokazivanje
   LOCATE 20, 60: PRINT "stanje = "; "   "
   LOCATE 21, 60: PRINT "idina  = "; "   "
   LOCATE 20, 60: PRINT "stanje = "; stanje
   LOCATE 21, 60: PRINT "idina  = "; idina
   LOCATE 22, 60: PRINT "                "
   LOCATE 22, 60: PRINT kuda$
   IF stanje = idina THEN EXIT DO
LOOP
'
OUT izlaz, 0
kuda$ = "stoji"
RETURN