Author Topic: starfield mit Blinksternen ;)  (Read 5550 times)

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5081
  • O Rly?
    • View Profile
starfield mit Blinksternen ;)
« on: 2007-Apr-06 »
Code: (glbasic) [Select]
SYSTEMPOINTER TRUE
SETSCREEN 640,480,1

TYPE star
x
y
ENDTYPE

LOCAL S AS star

LOCAL stars[] AS  star

WHILE TRUE

starX = RND(640)

S.x = starX
S.y = -10

DIMPUSH stars[], S


FOREACH check IN stars[]
INC  check.y,RND(3)
SETPIXEL check.x, check.y, RGB(RND(255),RND(255),RND(255))
       IF check.y > 480 THEN DELETE check
NEXT


SHOWSCREEN
WEND
END
wers brauch ;)
I <3 DGArray's :D

PC:
AMD Ryzen 7 1700 @3.9GHz, 16GB HyperX Fury 3000MHz Ram, ASUS ROG GTX 1060 STRIX 6GB, Windows 10 Pro 64Bit, MSi Tomahawk B350 Mainboard

Offline Antidote

  • Mr. Polyvector
  • ***
  • Posts: 164
    • View Profile
    • http://antidotes.wordpress.com
starfield mit Blinksternen ;)
« Reply #1 on: 2007-Apr-06 »
@Schranz0r

Ich z.B. :))
Also, ich finde es schon interessant, dass man mit ein paar Zeilen diesen (in der früheren Demoszene höufiger gesehenen Effekt) zu erstellen.

Wobei meine NEwbie Frage gleich mal raus muss...

Warum beginnt es mit:
SYSTEMPOINTER TRUE

Wenn FALSE dort steht, gibtes doch auch keine Veränderung...oder??
Wofür steht denn dieser Befehl in Deinem Beispiel??

Greetz Antidote
PC Core2Duo e4300, 2GBRam, Geforce 8800GT-1gb, XPsp3
GP2x, Wii, XBox360, Wiz, psp, ps3 usw.

Offline D2O

  • Prof. Inline
  • *****
  • Posts: 1071
    • View Profile
    • http://www.deuteriumoxid.com
starfield mit Blinksternen ;)
« Reply #2 on: 2007-Apr-06 »
Schön, so langsam komm ich dann auch mal in das geheimnis dieser Typs :)

Aber nun zu einer frage.
Im moment habe ich ca. 300 partikel, wie grenze ich das ein das, z.B nur 50 angezeigt werden,
und danch wieder 50 ?
I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell

Offline Kitty Hello

  • code monkey
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 10762
  • here on my island the sea says 'hello'
    • View Profile
    • http://www.glbasic.com
starfield mit Blinksternen ;)
« Reply #3 on: 2007-Apr-07 »
Lass einen Index mitlaufen, und brich ab:
Code: (glbasic) [Select]
index=0
FOREACH blah in blahblah[]
INC index,1
IF index>50 THEN BREAK
...
NEXT

Offline D2O

  • Prof. Inline
  • *****
  • Posts: 1071
    • View Profile
    • http://www.deuteriumoxid.com
starfield mit Blinksternen ;)
« Reply #4 on: 2007-Apr-07 »
Ah ja.

OK, irgendwie steh ich heut auf dem Schlauch :(
Das mit dem Index hab ich drin, functioniert auch.
Nur, Die sterne fallen nun auch nur soweit bis der Index erreicht ist.
Ich möchte gerne das sie festgelegte anzahl der Sterne auch bis zum Bildschirmende fallen.

Hier mal der Code dazu.

Code: (glbasic) [Select]
SYSTEMPOINTER FALSE
SETSCREEN 640,480,0

TYPE star  // Type erstellen
    x
    y
    index
ENDTYPE

LOCAL S AS star // s ist type von star

LOCAL stars[] AS  star // Array als star

WHILE TRUE

    starX = RND(640) // Zufalls startposition x achse

    S.x = starX   // x achse s.x zuweisen
    S.y = -10 // s.y 10 nach unten rutschen



    DIMPUSH stars[], S  // array erhöhen/vergrössern


FOREACH check IN stars[]
INC S.index,1
    INC  check.y,RND(3)
    SETPIXEL check.x, check.y, RGB(RND(255),RND(255),RND(255))
         IF check.y > 480  THEN DELETE check
       
       IF S.index > 50
        S.index = 0
        DELETE check
        BREAK
  ENDIF
NEXT

PRINT BOUNDS(stars[],0),10,10
SHOWSCREEN
WEND
END
I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5081
  • O Rly?
    • View Profile
starfield mit Blinksternen ;)
« Reply #5 on: 2007-Apr-07 »
So in etwar ?


Code: (glbasic) [Select]
SYSTEMPOINTER FALSE
SETSCREEN 640,480,0

TYPE star  // Type erstellen
    x
    y
ENDTYPE

LOCAL S AS star // s ist type von star

LOCAL stars[] AS  star // Array als star



WHILE TRUE


IF  BOUNDS(stars[],0) < 50
    starX = RND(640) // Zufalls startposition x achse
    S.x = starX   // x achse s.x zuweisen
    S.y = -10        // s.y 10 nach unten rutschen
    DIMPUSH stars[], S  // array erhöhen/vergrössern
ENDIF

FOREACH check IN stars[]
    INC  check.y,RND(3)
    SETPIXEL check.x, check.y, RGB(RND(255),RND(255),RND(255))
         IF check.y > 480 THEN DELETE check        
NEXT


PRINT BOUNDS(stars[],0),10,10

SHOWSCREEN
WEND
END
wenns dir zu viel auf einen Haufen sind mach nen Timer mit rein !

Code: (glbasic) [Select]
SYSTEMPOINTER FALSE
SETSCREEN 640,480,0

TYPE star  // Type erstellen
    x
    y
ENDTYPE

LOCAL S AS star // s ist type von star

LOCAL stars[] AS  star // Array als star



WHILE TRUE


IF  BOUNDS(stars[],0) < 50 AND timer < GETTIMERALL()
    starX = RND(640) // Zufalls startposition x achse
    S.x = starX   // x achse s.x zuweisen
    S.y = -10        // s.y 10 nach unten rutschen
    DIMPUSH stars[], S  // array erhöhen/vergrössern
    timer = GETTIMERALL()+90
ENDIF

FOREACH check IN stars[]
    INC  check.y,RND(3)
    SETPIXEL check.x, check.y, RGB(RND(255),RND(255),RND(255))
         IF check.y > 480 THEN DELETE check        
NEXT


PRINT BOUNDS(stars[],0),10,10

SHOWSCREEN
WEND
END
EDIT:

Hier mal das Winterspecial ....Schneeflöckchen weis röckchen ... ;)

Code: (glbasic) [Select]
SYSTEMPOINTER FALSE
SETSCREEN 640,480,0

TYPE star  // Type erstellen
    x
    y
ENDTYPE

LOCAL S AS star // s ist type von star

LOCAL stars[] AS  star // Array als star



WHILE TRUE


IF  BOUNDS(stars[],0) < 50 AND timer < GETTIMERALL()
    starX = RND(640) // Zufalls startposition x achse
    S.x = starX   // x achse s.x zuweisen
    S.y = -10        // s.y 10 nach unten rutschen
    DIMPUSH stars[], S  // array erhöhen/vergrössern
    timer = GETTIMERALL()+90
ENDIF

FOREACH check IN stars[]
    INC  check.y,RND(3)
    PRINT "X", check.x, check.y
         IF check.y > 480 THEN DELETE check
NEXT


PRINT BOUNDS(stars[],0),10,10

SHOWSCREEN
WEND
END
I <3 DGArray's :D

PC:
AMD Ryzen 7 1700 @3.9GHz, 16GB HyperX Fury 3000MHz Ram, ASUS ROG GTX 1060 STRIX 6GB, Windows 10 Pro 64Bit, MSi Tomahawk B350 Mainboard

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5081
  • O Rly?
    • View Profile
starfield mit Blinksternen ;)
« Reply #6 on: 2007-Apr-07 »
und so könnte man z.B leben in ein Spielemenu bringen(Grafiken sind provisorisch):


Code: (glbasic) [Select]
LIMITFPS 80

SETSCREEN 640,480,0

FILLRECT 0,0,10,10, RGB(0x00, 0x80, 0xff)
GRABSPRITE 0,0,0,10,10
BLACKSCREEN

FILLRECT 0,0,10,10, RGB(0x00, 0xff, 0x80)
GRABSPRITE 1,0,0,10,10
BLACKSCREEN

FILLRECT 0,0,10,10, RGB(0x80, 0x80, 0xff)
GRABSPRITE 2,0,0,10,10
BLACKSCREEN

TYPE star  // Type erstellen
    x
    y
    pic
ENDTYPE

LOCAL S AS star // s ist type von star

LOCAL stars[] AS  star // Array als star



WHILE TRUE


IF  BOUNDS(stars[],0) < 50 AND timer < GETTIMERALL()
    starX = RND(640) // Zufalls startposition x achse
    S.x = starX   // x achse s.x zuweisen
    S.y = -10        // s.y 10 nach unten rutschen
    S.pic = RND(2) // Spritewert übergeben  
    DIMPUSH stars[], S  // array erhöhen/vergrössern
    timer = GETTIMERALL()+90
ENDIF

FOREACH check IN stars[]
    INC  check.y,RND(3)
    SPRITE check.pic, SIN(check.x)*640, COS(check.y)*480
         IF check.y > 480 THEN DELETE check
NEXT


PRINT BOUNDS(stars[],0),10,10

SHOWSCREEN
WEND
END
I <3 DGArray's :D

PC:
AMD Ryzen 7 1700 @3.9GHz, 16GB HyperX Fury 3000MHz Ram, ASUS ROG GTX 1060 STRIX 6GB, Windows 10 Pro 64Bit, MSi Tomahawk B350 Mainboard

Offline D2O

  • Prof. Inline
  • *****
  • Posts: 1071
    • View Profile
    • http://www.deuteriumoxid.com
starfield mit Blinksternen ;)
« Reply #7 on: 2007-Apr-07 »
Danke Schanz0r,

genau so :)

Ich hab es zwar auch mit BOUNDS() versucht, hatte es aber falsch gesetzt.
Werde woll heut und morgen etwas mit den neuen Types in richtung Partikelengine herumspielen.
I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell

Offline Antidote

  • Mr. Polyvector
  • ***
  • Posts: 164
    • View Profile
    • http://antidotes.wordpress.com
starfield mit Blinksternen ;)
« Reply #8 on: 2007-Apr-07 »
Damit sind nette Effekte möglich thx....
Nun aber nochmal zu meiner Frage:

Quote
SYSTEMPOINTER modus#
Zeigt den aktuellen System Mauspfeil an (modus#=TRUE) oder schaltet ihn ab (modus#=FALSE). Damit kann man GUIs programmieren, oder PocketPC Stifteingabe am PC durch den Mauspfeil simulieren.
Ok, muss man den Mauspfeil, denn überhaupt als "abgeschaltet" definieren??
Ist dem Prg. nicht auch klar, das keine Mauspfeil verwendet wird??
Würde mich über eine Antwort freuen.

Antidote
PC Core2Duo e4300, 2GBRam, Geforce 8800GT-1gb, XPsp3
GP2x, Wii, XBox360, Wiz, psp, ps3 usw.

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5081
  • O Rly?
    • View Profile
starfield mit Blinksternen ;)
« Reply #9 on: 2007-Apr-07 »
ne hatte ich noch drinne , damit ich die mit den mauszeiger so particles machen konnte....
(was aber in diesen Code so wie er jetz ist , nicht mehr der fall ist !)

Kann man ja weg lassen den Befehl, oder auf False setzet!
I <3 DGArray's :D

PC:
AMD Ryzen 7 1700 @3.9GHz, 16GB HyperX Fury 3000MHz Ram, ASUS ROG GTX 1060 STRIX 6GB, Windows 10 Pro 64Bit, MSi Tomahawk B350 Mainboard

Offline Kitty Hello

  • code monkey
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 10762
  • here on my island the sea says 'hello'
    • View Profile
    • http://www.glbasic.com
starfield mit Blinksternen ;)
« Reply #10 on: 2007-Apr-09 »
Sobald man MOUSE* Befehle verwendet, ist der Pfeil weg. Wenn man ihn trotzdem will, muss man SYSTEMPOINTER TRUE machen.