Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: QB: 3D tähtiefekti

Grey [07.05.2008 11:19:38]

#

Alunperin ei ollut tarkoitus julkaista tätä, mutta vakuutuin että muidenkin on pakko nähdä tämä. Sähläsin 3D:n kanssa, saaden vahingossa aikaan varsin näyttävän efektin. Kannattaa katsella hetken aikaa, niin huomaatte kyllä. Rajallinen tila ilman rajoja saa aikaan.. kaikkea jännää..

-Grey-

TYPE StarSet
 X AS LONG: Y AS LONG: Z AS LONG
 Xs AS INTEGER: Ys AS INTEGER: Zs AS INTEGER
END TYPE

TYPE CameraSet
 X AS LONG: Y AS LONG: Z AS LONG
END TYPE

DIM Max AS INTEGER
Max = 511
DIM Stars(Max) AS StarSet
DIM Camera AS CameraSet
DEFLNG A-Z

CLS : SCREEN 13: RANDOMIZE TIMER

FOR I = 0 TO Max
 Stars(I).X = INT(RND * 16)
 Stars(I).Y = INT(RND * 16)
 Stars(I).Z = INT(RND * 16)
 Stars(I).Xs = INT(RND * 16) - INT(RND * 8)
 Stars(I).Ys = INT(RND * 16) - INT(RND * 8)
 Stars(I).Zs = INT(RND * 16) - INT(RND * 8)
 IF Stars(I).Zs = 0 THEN Stars(I).Zs = 1
NEXT

Camera.X = 0: Camera.Y = 0: Camera.Z = 2000

DO
 W$ = INKEY$

IF T <> TIMER THEN
 WAIT &H3DA, 8: LINE (0, 0)-(319, 199), 0, BF
FOR I = 0 TO Max
 Stars(I).X = Stars(I).X - CLNG(Stars(I).Xs)
 Stars(I).Y = Stars(I).Y - CLNG(Stars(I).Ys)
 Stars(I).Z = Stars(I).Z - CLNG(Stars(I).Zs)
 IF Stars(I).X < -512 THEN Stars(I).X = Stars(I).X + 1024
 IF Stars(I).Y < -512 THEN Stars(I).Y = Stars(I).Y + 1024
 IF Stars(I).Z < -512 THEN Stars(I).Z = Stars(I).Z + 1024
 IF Stars(I).X > 511 THEN Stars(I).X = Stars(I).X - 1024
 IF Stars(I).Y > 511 THEN Stars(I).Y = Stars(I).Y - 1024
 IF Stars(I).Z > 511 THEN Stars(I).Z = Stars(I).Z - 1024
 X = 256 * (Stars(I).X + Camera.X) / (Camera.Z) + 160
 Y = 256 * (Stars(I).Y - Camera.Y) / (Camera.Z) + 100
 IF X > 0 AND X < 319 AND Y > 0 AND Y < 199 THEN
  C = ((Stars(I).Z + 512) / 64) + 15: PSET (X, Y), C
 END IF
NEXT
T = TIMER
END IF

 IF W$ <> "" THEN
  W$ = UCASE$(W$)
  IF W$ = "A" THEN Camera.Z = Camera.Z + 1
  IF W$ = "Z" THEN Camera.Z = Camera.Z - 1
  IF W$ = CHR$(0) + "H" THEN Camera.Y = Camera.Y + 1
  IF W$ = CHR$(0) + "P" THEN Camera.Y = Camera.Y - 1
  IF W$ = CHR$(0) + "K" THEN Camera.X = Camera.X + 1
  IF W$ = CHR$(0) + "M" THEN Camera.X = Camera.X - 1
  IF Camera.Z <= 0 THEN Camera.Z = 1
  IF W$ = CHR$(27) THEN EXIT DO
 END IF
LOOP

Metabolix [19.02.2012 17:16:40]

#

Saisit kyllä selittää tätä vähän lisää.

Vastaus

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

Tietoa sivustosta