Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: QB: Juna-asematauludemo

Antti Laaksonen [15.03.2002 14:20:07]

#

Vielä muutama vuosi sitten olivat juna-asemien taulut mekaanisia, ja niiden tekstit vaihdettiin pläräämällä kaikki kirjaimet läpi. Nyttemmin taulut ovat elektronisia, mutta vanhoja muistoja verestää Juna-asematauludemo, joka matkii parhaansa mukaan vanhoja tauluja.

Pääohjelma

OPTION BASE 1

'taulukko, jossa on taulun tekstit
DIM SHARED taulu(4, 28) AS STRING * 1

'taulun nollaus
FOR i = 1 TO 4
  FOR j = 1 TO 28
    taulu(i, j) = " "
  NEXT
NEXT

CLS
PiirraTaulu
COLOR 0, 7
VaihdaTeksti "Juna-asematauludemo         ", "", "", ""
SLEEP 3
VaihdaTeksti "P                      09:20", "Hiekkaharju", "Sandskulla", ""
SLEEP 3
VaihdaTeksti "K                      10:43", "Kerava     ", "Kervo     ", ""

Aliohjelmat

SUB PiirrakehysJT (x1 AS INTEGER, y1 AS INTEGER, x2 AS INTEGER, y2 AS INTEGER)
  'taulun kehyksen piirtäminen
  DIM tyyli AS STRING
  tyyli = "╔═╗║╚╝"

  COLOR 8, 15

  LOCATE y1, x1: PRINT MID$(tyyli, 1, 1);
  FOR i = x1 + 1 TO x2 - 1
    PRINT MID$(tyyli, 2, 1);
  NEXT
  PRINT MID$(tyyli, 3, 1);

  FOR i = y1 + 1 TO y2 - 1
    LOCATE i, x1: PRINT MID$(tyyli, 4, 1);
    LOCATE i, x2: PRINT MID$(tyyli, 4, 1);
  NEXT

  LOCATE y2, x1: PRINT MID$(tyyli, 5, 1);
  FOR i = x1 + 1 TO x2 - 1
    PRINT MID$(tyyli, 2, 1);
  NEXT
  PRINT MID$(tyyli, 6, 1);

END SUB

SUB PiirraTaulu
  'taulun ja maaston piirtäminen
  PiirrakehysJT 2, 2, 33, 7

  LOCATE 3, 3: PRINT SPACE$(30)
  LOCATE 4, 3: PRINT SPACE$(30)
  LOCATE 5, 3: PRINT SPACE$(30)
  LOCATE 6, 3: PRINT SPACE$(30)

  COLOR 0, 12
  LOCATE 1, 15: PRINT SPACE$(6)
  FOR i = 8 TO 20
    LOCATE i, 15: PRINT SPACE$(6)
  NEXT

  COLOR 0, 9
  FOR i = 21 TO 23
    LOCATE i, 2: PRINT SPACE$(40)
  NEXT
  COLOR 0, 7
  LOCATE 23, 50: PRINT "  "
  LOCATE 23, 70: PRINT "  "

END SUB

SUB VaihdaTeksti (r1$, r2$, r3$, r4$)
  'taulun tekstin vaihtaminen
  'r1$=rivi1, r2$=rivi2, r3$=rivi3 ja r4$=rivi4

  DIM r$(1 TO 4)          'uudet rivit yhteen taulukkoon
  r$(1) = LEFT$(r1$, 28)
  r$(2) = LEFT$(r2$, 28)
  r$(3) = LEFT$(r3$, 28)
  r$(4) = LEFT$(r4$, 28)
    DO
      ok = 0
      FOR j = 1 TO 4
        FOR i = 1 TO LEN(r$(j))
          SELECT CASE ASC(taulu(j, i))
          CASE ASC(MID$(r$(j), i, 1))
            ok = ok + 1
          CASE ASC(" ")
            taulu(j, i) = CHR$(33)
          CASE IS >= 33
            SELECT CASE ASC(taulu(j, i))
            'ääkkösien tarkistaminen
            CASE 132
              taulu(j, i) = CHR$(142)
            CASE 142
              taulu(j, i) = CHR$(148)
            CASE 148
              taulu(j, i) = CHR$(153)
            CASE 153
              taulu(j, i) = " "
            CASE ELSE
              taulu(j, i) = CHR$(ASC(taulu(j, i)) + 1)
            END SELECT
          END SELECT
          LOCATE 2 + j, 3 + i: PRINT taulu(j, i)
        NEXT
      NEXT
      WAIT &H3DA, 8 'hidaste
      SOUND 100, .3 'ääni
      SOUND 0, .1
    LOOP WHILE ok < LEN(r1$) + LEN(r2$) + LEN(r3$) + LEN(r4$) 'valmis?
END SUB

(nimetön) [03.11.2002 12:47:41]

#

ihanhauska

miiro [30.05.2004 20:10:47]

#

aika hieno, nostalginen ja hauska

moptim [09.09.2007 08:32:57]

#

Cool :)

New Samppi [07.01.2009 18:15:59]

#

ihan hieno

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta