OHO jäi listaukset tosta ekasta. Joo en tiedä mitä hyötyä tästä on, mutta siinä se. Muuttakaa viivesilmukan loppu arvoa jos tökkii tai vilkkuu. Aliohjelmat olis kyllä voinu miettiä paremmin, mutta näin saadaan kolmioon hyvä satunnaisuus liikkumisen ja nopeuden suhteen!
'*************************************************************************
'Scapegoat.moa 17.11.02
'
'Ohjelma: Triangl
'*************************************************************************
DECLARE SUB AlkuPiste (x AS INTEGER, y AS INTEGER, suunta AS INTEGER, nopeus AS INTEGER)
DECLARE SUB LoppuPiste (xx AS INTEGER, yy AS INTEGER, suunta2 AS INTEGER, nopeus2 AS INTEGER)
DIM x AS INTEGER, xx AS INTEGER, y AS INTEGER, yy AS INTEGER
DIM suunta AS INTEGER, suunta2 AS INTEGER
DIM nopeus AS INTEGER, nopeus2 AS INTEGER
DIM i AS INTEGER, vari AS INTEGER
DIM viive AS DOUBLE
SCREEN 12
CLS
RANDOMIZE TIMER
x = INT(RND * 640)                                    'arvotaan.
xx = INT(RND * 640)                                   '
y = INT(RND * 480)                                    '
yy = INT(RND * 480)                                   '
suunta = INT(RND * 4) + 1                             '
suunta2 = INT(RND * 4) + 1                            '
nopeus = INT((RND * 30) + 5)                          '
nopeus2 = (RND * 30) + 5                              '
DO
  CALL AlkuPiste(x, y, suunta, nopeus)
  CALL LoppuPiste(xx, yy, suunta2, nopeus2)
  FOR i = 0 TO 24 STEP 4                              '"kopioidaan"...
      vari = i                                        'viivaa. (6 kpl).
      IF vari = 0 OR vari = 24 THEN
         vari = 9
      ELSE vari = 1
      END IF
      LINE (0, 0)-(639, 479), 1, B                    'reunaviiva.
      LINE (x - i, y - i)-(xx - i, yy - i), vari               'ite...
      LINE (xx - i, yy - i)-(664 - x - i, 504 - y - i), vari   'kol-...
      LINE (664 - x - i, 504 - y - i)-(x - i, y - i), vari     'mio.
  NEXT
  FOR viive = 1 TO 8000
  NEXT
LOOP WHILE INKEY$ = ""SUB AlkuPiste (x AS INTEGER, y AS INTEGER, suunta AS INTEGER, nopeus AS INTEGER)
DIM ylosvasen  AS INTEGER
DIM ylosoikea AS INTEGER
DIM alasvasen AS INTEGER
DIM alasoikea AS INTEGER
ylosvasen = 1                                         'suunnnat.
ylosoikea = 2                                         '
alasvasen = 3                                         '
alasoikea = 4                                         '
SELECT CASE suunta
       CASE ylosvasen
            CLS                                       'puhdistetaan välillä.
            x = x - nopeus
            y = y - nopeus
            IF x <= 24 THEN                           '24 0:N sijasta,...
               nopeus = INT(RND * 30) + 5             'koska viivoja...
               suunta = ylosoikea                     'on 6 kpl ja ne...
            ELSEIF y <= 24 THEN                       'ovat 4:n välein.
               nopeus = INT(RND * 30) + 5             '+ 5, jottei olisi...
               suunta = alasvasen                     'liian hidas.
            END IF
       CASE ylosoikea
            CLS                                       'ja puhdistetaan.
            x = x + nopeus
            y = y - nopeus
            IF x >= 640 THEN
               nopeus = INT(RND * 30) + 5
               suunta = ylosvasen
            ELSEIF y <= 24 THEN
               nopeus = INT(RND * 30) + 5
               suunta = alasoikea
            END IF
       CASE alasvasen
            x = x - nopeus
            y = y + nopeus
            IF x <= 24 THEN
               nopeus = INT(RND * 30) + 5
               suunta = alasoikea
            ELSEIF y >= 480 THEN
               nopeus = INT(RND * 30) + 5
               suunta = ylosvasen
            END IF
       CASE alasoikea
            x = x + nopeus
            y = y + nopeus
            IF x >= 640 THEN
               nopeus = INT(RND * 30) + 5
               suunta = alasvasen
            ELSEIF y >= 480 THEN
               nopeus = INT(RND * 30) + 5
               suunta = ylosoikea
            END IF
END SELECT
END SUBSUB LoppuPiste (xx AS INTEGER, yy AS INTEGER, suunta2 AS INTEGER, nopeus2 AS INTEGER)
DIM ylosvasen  AS INTEGER
DIM ylosoikea AS INTEGER
DIM alasvasen AS INTEGER
DIM alasoikea AS INTEGER
ylosvasen = 1
ylosoikea = 2
alasvasen = 3
alasoikea = 4
SELECT CASE suunta2
       CASE ylosvasen
            xx = xx - nopeus2
            yy = yy - nopeus2
            IF xx <= 24 THEN
               nopeus2 = INT(RND * 30) + 5
               suunta2 = ylosoikea
            ELSEIF yy <= 24 THEN
               nopeus2 = INT(RND * 30) + 5
               suunta2 = alasvasen
            END IF
       CASE ylosoikea
            xx = xx + nopeus2
            yy = yy - nopeus2
            IF xx >= 640 THEN
               nopeus2 = INT(RND * 30) + 5
               suunta2 = ylosvasen
            ELSEIF yy <= 24 THEN
               nopeus2 = INT(RND * 30) + 5
               suunta2 = alasoikea
            END IF
       CASE alasvasen
            xx = xx - nopeus2
            yy = yy + nopeus2
            IF xx <= 24 THEN
               nopeus2 = INT(RND * 30) + 5
               suunta2 = alasoikea
            ELSEIF yy >= 480 THEN
               nopeus2 = INT(RND * 30) + 5
               suunta2 = ylosvasen
            END IF
       CASE alasoikea
            xx = xx + nopeus2
            yy = yy + nopeus2
            IF xx >= 640 THEN
               nopeus2 = INT(RND * 30) + 5
               suunta2 = alasvasen
            ELSEIF yy >= 480 THEN
               nopeus2 = INT(RND * 30) + 5
               suunta2 = ylosoikea
            END IF
END SELECT
END SUBViivoja muuten onkin 7. Kolmio saattaa mennä vähän reunojen yli.
Mikä tuo kuvaus on?
Mielenkiintoista grafiikkaa, tosin vähän vilkkuvaa (ainakin minulla).
Hieno ohjelma
Joo ei kovin kuvaa kuvaus, mutta jokin kolmio se on. Vilkkumisen saa säädettyä mm. viivesilmakan loppuarvoa muuttamalla. (minulla ei vilkkunut). Jos tökkii mutta ei vilku --> muuta aliohjelmien (nopeus ja nopeus2) vitonen vaikka kympiksi! Kiitoksia kommenteista!!
olisit voinu kyllä esittää paremman kuvauksen
Joo niin olisin voinut kuvailla. Eli "3d" huom. "" kolmion kaksi kulmaa saavat satunnaisen suunnan ja nopeuden alustuksessa. Kaksi kulmaa saavat kimpoamis suunnan reunaan törmätessään. Ne saavat myös uuden satunnaisen nopeuden. Näyttö putsataan vain, kun alkupiste osuu reunaan suunnasta ylövasen tai ylösoikea. Kolmio on itseasiassa vain viiva, jolle lasketaan alku ja loppu pisteet.
Tässä olis hyvä kuvaus:
Sellainen pyörivä ja pomppiva kolmiokasa niinkuin windowsin yks näytönsäästäjä. Saattaa vilkkua ja välkkyä.
Vähä outo. Tuo on vähä niinku vaeltavat kuviot-näytönsäästäjä.
Niinpä..
Aihe on jo aika vanha, joten et voi enää vastata siihen.