BASIC

Author Topic: Simples Jump and Run ;)  (Read 4600 times)

Offline D2O

  • Prof. Inline
  • *****
  • Posts: 1062
    • View Profile
    • http://www.deuteriumoxid.com
Simples Jump and Run ;)
« on: 2007-Jan-27 »
Hallo alle,

hier mal schnell ein Simples Jump and Run.
Das ganze ist ohne sound.
Gesteuert wird mit den Pfeiltasten und Spacetaste.
Level gibts nur eins, dafür ist es zufallsgeneriert.
Die gelben klötzchen geben punkte.
Klick mich:
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 BumbleBee

  • Global Moderator
  • Prof. Inline
  • *******
  • Posts: 891
    • View Profile
Simples Jump and Run ;)
« Reply #1 on: 2007-Jan-27 »
Hi
Bist ja wirklich sehr fleißig und machst gute Beispiele. Hast du auch vor
ein komplettes Spiel in GLBasic zu schreiben?

Cheers
The day will come...

CPU Intel(R) Core(TM) i5-3570k, 3.4GHz, AMD Radeon 7800 , 8 GB RAM, Windows 10 Home 64Bit

Offline Kitty Hello

  • code monkey
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 10697
  • here on my island the sea says 'hello'
    • View Profile
    • http://www.glbasic.com
Simples Jump and Run ;)
« Reply #2 on: 2007-Jan-28 »
Das ist ja süß!

Offline D2O

  • Prof. Inline
  • *****
  • Posts: 1062
    • View Profile
    • http://www.deuteriumoxid.com
Simples Jump and Run ;)
« Reply #3 on: 2007-Jan-28 »
:) Es ist aber auch wirklich ziemlich simple ;)

Mein Traum (Ziel) ist es mal ein Cooles Jump and Run zu machen, Rayman, der erste teil, ist da mein absoluter Favorite.
Ich versuch es zumindest mal Code Technisch dort hin zu kommen.
Bei mir ist es was die Gfx angeht, so wie bei vielen anderen, ne Katastophe :)

Auch was die Zeit angeht, ist es immer Relative knapp.
Aber man versucht sein bestes zu geben.
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: 10697
  • here on my island the sea says 'hello'
    • View Profile
    • http://www.glbasic.com
Simples Jump and Run ;)
« Reply #4 on: 2007-Jan-29 »
Wollte ich auch immer mal machen. Ich hab mal ein 3D J&R Construction Kit gemacht, aber auch nie fertig gebracht. Mario64 ist mein absoluter Fav.
Im 2D fand ich Super Mario Bros (NES) am Besten von der Steuerung her. Auf dem SNES Yohis's Island und das Super Mario waren auch sehr gut programmiert.

Offline D2O

  • Prof. Inline
  • *****
  • Posts: 1062
    • View Profile
    • http://www.deuteriumoxid.com
Simples Jump and Run ;)
« Reply #5 on: 2007-Jan-29 »
Oh ja, die waren/sind auch sehr gut. Mario64, dazu kann ich nichts sagen.
Was auch noch gesagt sein soll, Sonic von Sega.
Hier war die Steuerung sehr gut, gerade die Loopings waren cool.
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: 10697
  • here on my island the sea says 'hello'
    • View Profile
    • http://www.glbasic.com
Simples Jump and Run ;)
« Reply #6 on: 2007-Jan-29 »
Sonic war mir zu schnell. Blink, Blitz, Britzel, Loop-loop-loop und schon nächstes Level. Hallo!? Darf ich mitspielen?

Offline Kosta

  • Mr. Polyvector
  • ***
  • Posts: 167
  • nothing.....except 'Kosta'
    • View Profile
    • Kosta's Blog
Simples Jump and Run ;)
« Reply #7 on: 2007-Jan-29 »
Ich fand früher Alex Kidd in Miracle World auf dem Sega Master System genial

P.S:   obiges Jump'n'Run Beispiel:
also bei mir scheint es irgendwie nicht richtig zu funzen...es scrollt vol alleine, und ich kann weder links/rechts/springen(space)....
Intel QuadCore, Geforce8600GT,512MB,4GB Ram, 26" TFT
HP nw8440 Schläppy
GP2X Mk2 (Firmware 3.0)

GLBASIC Blog:
http://www.glbasic.com/forum/index.php?blog=51.0

Offline D2O

  • Prof. Inline
  • *****
  • Posts: 1062
    • View Profile
    • http://www.deuteriumoxid.com
Simples Jump and Run ;)
« Reply #8 on: 2007-Jan-29 »
Quote from: Kosta
Ich fand früher Alex Kidd in Miracle World auf dem Sega Master System genial

P.S:   obiges Jump'n'Run Beispiel:
also bei mir scheint es irgendwie nicht richtig zu funzen...es scrollt vol alleine, und ich kann weder links/rechts/springen(space)....
??
Scrolling geht automatisch,
gesteuert werden kann nur das kleine blaue Quadrat.
Springen kann man nur wenn man "Boden unter den füssen hat,
links und rechts sollte eigendlich mit den Pfeiltasten "Links" + "Rechts" gehen.

Wenn das bei Dir nicht gehen sollte, dann bin ich rat/sprach los.
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

superfish

  • Guest
Simples Jump and Run ;)
« Reply #9 on: 2007-Aug-06 »
@ D2O

Moin Allerseits,

sag mal könnte man von deinem kleine Jump & Run auch den Code bokomen?

Habs mir runtergeladen und und leider war nur die "*.exe" bzw. nicht der cod dabei.

Ich habe noch Probleme mit den Types und dem DIM

Und hoffe dein code bringt mich weiter ;)

Saludos

fish

Offline D2O

  • Prof. Inline
  • *****
  • Posts: 1062
    • View Profile
    • http://www.deuteriumoxid.com
Simples Jump and Run ;)
« Reply #10 on: 2007-Aug-06 »
Moin, ich schau heut Mittag nochmal nach ob ich den noch habe.
Ist ja schon wieder ne weiler her.
Aber im Prinzip wird ein array nur mit zufallszahlen geladen umd der wert z.B. 1 ist, wird etwas gezwichnet.
Ich schau mal.
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

superfish

  • Guest
Simples Jump and Run ;)
« Reply #11 on: 2007-Aug-06 »
Supi, das is ne feine Sache. Vielen Dank schon mal ;)

Offline D2O

  • Prof. Inline
  • *****
  • Posts: 1062
    • View Profile
    • http://www.deuteriumoxid.com
Simples Jump and Run ;)
« Reply #12 on: 2007-Aug-06 »
Hab ihn gefunden, war noch auf einem backup image :)
Er ist grausam ;) , der code
Hab noch ein paar kommentare reingeschrieben, damit man sich ein bisschen zurecht findet.

Code: GLBasic [Select]
// --------------------------------- //
// Project:
// Start: Saturday, January 27, 2007
// IDE Version: 4.051



//Grafiken erzeugen
FILLRECT  0,0,32,32,RGB(200,50,50)
GRABSPRITE 0,0,0,32,32
SAVESPRITE 0,"rect0.bmp"
LOADSPRITE "rect0.bmp",0

FILLRECT  100,100,116,116,RGB(20,50,250)
GRABSPRITE 1,100,100,16,16
SAVESPRITE 1,"rect1.bmp"
LOADSPRITE "rect1.bmp",1

FILLRECT   150,150,182,182,RGB(255,255,0)
GRABSPRITE 2,150,150,32,32
SAVESPRITE 2,"rect2.bmp"
LOADSPRITE "rect2.bmp",2



GLOBAL punktex,punktey
GLOBAL winkel, winkelgo
winkelgo = 10
GLOBAL punkte = 0

//Arrays erzeugen
DIM a1[26][2]
DIM a2[26][2]
DIM a3[26][2]

//Array mit zufallswerten für die Grafik füllen
        FOR i = 0 TO 25
                a1[i][0] = RND(8)
                a2[i][0] = RND(8)
                a3[i][0] = RND(8)
        NEXT
//Array mit den Positionswerten füllen, nur X Achse   
FOR i = 0 TO 25
                a1[i][1] = i*32
                a2[i][1] = i*32
                a3[i][1] = i*32
NEXT   
       
GLOBAL posx = -2
GLOBAL playerx = 300
GLOBAL  playery = 0
GLOBAL g = 2
GLOBAL collision = 0



LOADBMP "back.png"


/////////////////////////////////////////////////////////////////////////////////////////////////////////////
WHILE TRUE

KeyHitUpdate()
MOUSESTATE mx,my,b1,b2


        FOR i = 0 TO 25
                                // immer um posx nach links verschieben
                a1[i][1] = a1[i][1]+posx
                a2[i][1] = a2[i][1]+posx
                a3[i][1] = a3[i][1]+posx

                        //Wenn das Array den wert 1 hat Bodenplatten zeichnen
                        IF a1[i][0] = 1 THEN SPRITE 0,a1[i][1],300
                        IF a2[i][0] = 1 THEN SPRITE 0,a2[i][1],400
                        IF a3[i][0] = 1 THEN SPRITE 0,a3[i][1],500
                       
                        //Wenn ein Arrayfeld links ausserhalb vom bildschirm ist, neu mit zufallszallen füllen
                        // und nach rechts vom bildschirm verschieben
                        // Das selbe mit den anderen Arrays
                        IF  a1[i][1] < -32
                                a1[i][0] = RND(8)
                                a1[i][1] = 800
                        ENDIF

                        IF a2[i][1] < -32
                                a2[i][0] = RND(8)
                                a2[i][1] = 800
                        ENDIF

                        IF a3[i][1] < -32
                                a3[i][0] = RND(6)
                                a3[i][1] = 800
                        ENDIF

                        // Wenn das Array den wert 0 hat, gelbes klötzchen zeichnen und drehen
                        IF a1[i][0] = 0 THEN ROTOSPRITE 2,a1[i][1],300,winkel
                       
                                                //Wenn eine kollision mit dem Player ist
                                                //Das arra mit dem wert 0 füllen
                                                //und das gelbe klötzchen mit Zoomsprite kurz aufflackern lassen
                                        IF a1[i][0] = 0
                                                IF SPRCOLL(1,playerx,playery,2,a1[i][1],300)
                                                        punkte = punkte + 1
                                                        a1[i][0] = 2
                                                                ZOOMSPRITE 2,a1[i][1],300, 2, 2
                       
                                                ENDIF
                                        ENDIF
                       
                       
                       
                                                //Kollision mit dem Boden prüfen, Genauso bei den andern Arrays
                                        IF a1[i][0] = 1
                                                IF SPRCOLL(1,playerx,playery,0,a1[i][1],300)
                                               
                                                                collision = 1
                                                                playery = 284
                                                                // Nur springen möglich wenn man den boden berührt
                                                                IF  KeyHit(57) = 2
                                                                        jumpcontroll = 1
                                                                        playertemp = playery
                                                                ENDIF
                                                ELSE
                                                        collision = 0
                                        ENDIF
                        ENDIF

                 IF a2[i][0] = 1
                                IF  SPRCOLL(1,playerx,playery,0,a2[i][1],400)
                                        //PRINT "Collision",100,10//playery = playery
                                        collision = 1
                                        playery = 384
                                                IF  KeyHit(57) = 2
                                                        jumpcontroll = 1
                                                        playertemp = playery
                                                ENDIF
                                ELSE
                                        collision = 0
                                ENDIF
                ENDIF

                 IF  a3[i][0] = 1
                                IF  SPRCOLL(1,playerx,playery,0,a3[i][1],500)
                                         //PRINT "Collision",100,10//playery = playery
                                        collision = 1
                                        playery = 484
                                        IF  KeyHit(57) = 2
                jumpcontroll = 1
                playertemp = playery
ENDIF
                                ELSE
                                        collision = 0
                                ENDIF
                ENDIF

NEXT




        // Wenn Jumpcontroll den wert 1 hat springt der Player
        IF jumpcontroll = 1
       
                playery = playery - 4
                        // Ist der player and der höchsten position, gehts wieder runter
                        IF playery < (playertemp - 150) THEN    jumpcontroll = 0
       
       
        ENDIF
       
        IF jumpcontroll = 0 THEN        playery = playery + g // abwärts (g = Anziehung)
       
        // Links rechts steuern
        IF KEY(205) THEN playerx = playerx + 2
        IF KEY(203) THEN playerx = playerx - 3
       
        //Überprüfung das der Player im Bildschirm bleibt, X Achse
        IF playerx <= 0 THEN playerx = 0
        IF playerx >= 784 THEN playerx = 784
       
        // Wenn der Player ausserhalb vom Bildschirnunten ist, Y Achse
        IF playery > 600
       
                PRINT "GAME OVER",10,200
                PRINT "Du hast "+punkte+" Punkte",10,250
                SHOWSCREEN
                KEYWAIT
                END
       
        ENDIF
       
                                //Winkel für Rotosprite
       
                                winkel = winkel + winkelgo
                                IF winkel >  360 THEN winkelgo = -10
                                IF winkel < 0 THEN winkelgo = 10
                //Player zeichnen
                SPRITE 1,playerx,playery
                //Punkteausgabe
                PRINT punkte+" Punkte",300,10
                //Mit der taste "S" einen screenshoot erstellen
                IF KeyHit(31) THEN f_savescreen("jar")
SHOWSCREEN
WEND
/////////////////////////////////////////////////////////////////////////////////////////////////////////////


FUNCTION KeyHitUpdate:
GLOBAL gKeyDown[], gKeyState[]
LOCAL  k
LOCAL i
    // First Time call/ zum ersten Mal hier
    IF BOUNDS(gKeyDown[],0)=0
        DIM gKeyDown[256]
        DIM gKeyState[256]
    ENDIF

    // For each key / für jede Taste
    FOR i=0 TO 255
        k = KEY(i)
        // Key is pressed / Taste ist gedrückt
        IF k
            IF gKeyDown[i]
                gKeyState[i]=1
            ELSE
                gKeyDown[i]=1
                gKeyState[i]=2
            ENDIF
        ELSE
            // Key is not pressed / Taste nicht gedrückt

            // Has key been pressed before?
            // War die Taste gedrückt?
            IF gKeyDown[i]
                gKeyDown[i] = 0
                gKeyState[i] = -1
            ELSE
                gKeyState[i]=0
            ENDIF
        ENDIF
    NEXT
ENDFUNCTION

//  0 = not pressed / nicht gedrückt
//  2 = just pressed / gerade runtergedrückt
//  1 = pressed / gedrückt (gehalten)
// -1 = release event / wieder losgelassen
FUNCTION KeyHit: nkey
    RETURN gKeyState[nkey]
ENDFUNCTION


FUNCTION f_savescreen:l_name$
LOCAL l_count
LOCAL l_oki
LOCAL l_end = FALSE

WHILE l_end = FALSE
                        //Überprüfung ob die datei vorhanden ist
        l_oki =  DOESFILEEXIST(l_name$+l_count+".png")
                        //Wenn nicht, datei erstellen und die schleife beenden
                IF l_oki = FALSE
                        SAVEBMP l_name$+l_count+".png"
                        l_end = TRUE
                ENDIF

                        // wenn ja, l_counter um eins zu erhöhen um den Dateinamen zu ändern
                IF l_oki = TRUE
                                 l_count = l_count + 1
                ENDIF


                IF l_count > 10 THEN l_end = TRUE //Nicht mehr als 11 Bilder speichern
WEND
ENDFUNCTION
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: 10697
  • here on my island the sea says 'hello'
    • View Profile
    • http://www.glbasic.com
Simples Jump and Run ;)
« Reply #13 on: 2007-Aug-06 »
Ich hätte statt a1..a3 ein Feld gemacht:
array[tiefe]
  • [y]. Oder (weil übersichtlicher) mit TYPES:
Code: GLBasic [Select]
TYPE FELDBITS
   a1
   a2
   a3
ENDTYPE

GLOBAL array[] AS FELDBITS
...falls jemand das nochmal von vorne anfängt. Aber ich hab in meinem 3D Jump&Run Kit auch Felder statt types und bereuhe es jetzt stark. Umschreiben ist aber zu viel Arbeit.

Offline D2O

  • Prof. Inline
  • *****
  • Posts: 1062
    • View Profile
    • http://www.deuteriumoxid.com
Simples Jump and Run ;)
« Reply #14 on: 2007-Aug-06 »
Jepp, Types wären nicht schlecht gewesen, aber es sind ja die ersten schritte in GLB gewesen ;)
Oder nur ein Array als Tilemap.
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