Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Topics - Derb

#1
GLBasic - de / Alphamode
2011-Dec-29

Malzeit  O_O

Ich habe ein Problem mit Alphamode. Gebe ich positive Werte an, wird mein Sprite Hell was OK ist. Ich will es aber abdunkeln also negativer Wert passiert nichts.


Danke
#2
Hallo und frohe Weihnachten erstmal


Weiß jemand wie man grafiken zB. ein Sprite abdunkelt?

Mir geht es im Prinzip darum... Ein Flugzeug wird über einer Landschaft dargestellt. Das Flugzeug soll dabei einen Schatten auf die darunterliegenden Bodenstrukturen werfen.

Danke schon mal




#3
Ich habe zwei Funktionen die ich Testhalber auf die Notwendigsten Dinge Kastriert habe. Die liest die Daten ein und die andere schreibt sie. Die Entstandene Datei ist trotz vorhandener Werte 0 KB groß und beim Lesen der Daten schmeißt mich der Compiler ohne Fehlermeldung aus dem Programm.

Was mach ich falsch???


Quote
// Diese Funktion Liest die Daten einer Map
FUNCTION loaddata:
   IF OPENFILE (1,mapname$+".map",0)
      //READWORD 1,MaxTX;READWORD 1,MaxTY;READWORD 1,TS
      // FILESEEK 1,100,0 // Ab Pos 100 folgen die Map Infos
      FOR i=0 TO 80
         FOR ii=0 TO 80
            READWORD 1,info0%
            READWORD 1,info1%
            READWORD 1,info2%
            quad[ii]
  • =info0%
                quad[ii][1]=info1%
                quad[ii][2]=info2%           
             NEXT
          NEXT
       CLOSEFILE 1
       ENDIF
    ENDFUNCTION



    // Diese Funktion Speichert die Daten einer Map
    FUNCTION savedata:
       IF OPENFILE (1,mapname$+".map",0)
          //WRITEWORD 1,MaxTX;WRITEWORD 1,MaxTY;WRITEWORD 1,TS
          // FILESEEK 1,100,0 // Ab Pos 100 folgen die Map Infos
          FOR i=0 TO 80
             FOR ii=0 TO 80
                info0%=quad[ii]

    •             info1%=quad[ii][1]
                  info2%=quad[ii][2]       
                  WRITEWORD 1,info0%
                  WRITEWORD 1,info1%
                  WRITEWORD 1,info2%
               NEXT
            NEXT
         CLOSEFILE 1
         ENDIF
      ENDFUNCTION

#4
Folgender Code:


QuoteFUNCTION loaddata:
   IF OPENFILE (1,mapname$+".map",0)
      READWORD 1,testy//READWORD 1,MaxTX;READWORD 1,MaxTY;READWORD 1,TS
      FILESEEK 1,100,0 // Ab Pos 100 folgen die Map Infos
      FOR i=0 TO MaxTY
         FOR ii=0 TO MaxTX
           // READWORD 1,quad[ii]

  •            // READWORD 1,quad[ii][1]
               // READWORD 1,quad[ii][2]
             NEXT
          NEXT
       CLOSEFILE 1
       ENDIF
    ENDFUNCTION
Verursacht das da:
(Ich habe mit den REM // Teilen die Anderen Variablen ausgehebelt um die möglichen Fehlerquellen zu minimieren.)


Quote_______________________________________
*** Configuration: WIN32 ***
precompiling:
GPC - GLBasic Precompiler V.10.104 SN:60390fbf - 2D, WIN32
"mapED.gbas"(315) warning : probably unassigned variable : testy
Wordcount:851 commands
compiling:
C:\Users\JRN~1\AppData\Local\Temp\glbasic\gpc_temp0.cpp: In function `DGInt __GLBASIC__::loaddata()':
C:\Users\JRN~1\AppData\Local\Temp\glbasic\gpc_temp0.cpp:2611: error: invalid initialization of reference of type 'DGNat&' from expression of type 'DGInt'
C:/Program Files (x86)/GLBasic/Compiler/platform/Include/glb.h:1110: error: in passing argument 2 of `void __GLBASIC__::READWORD(DGNat, DGNat&)'
*** FATAL ERROR - Bitte die Compiler-Ausgabe ins Forum kopieren
_______________________________________
*** Fertig ***
Dauer: 1.8 sek. Zeit: 19:13
Erstellen: 0 erfolgreich.
*** 1 FEHLGESCHLAGEN ***




#5
ist es gl basic konform innerhalb einer funktion in eine andere funktion zu springen???
#6
GLBasic - de / User Libs
2011-Nov-19
In einem englischen Thread wird auf die Frage wie man User Libs benutz folgendes geantwortet.

QuoteOpen your Project then you userlib (gbal of other gbas) then rightclick and add to project. thats all. now you can use functions from userlibs and other source files.

Habe diese Lib http://www.glbasic.com/forum/index.php?topic=2276.0 einbinden wollen.

Ging aber nicht.


Geht das irgendwie auf deutsch  :S
#7
Nur mal so eine Frage.

Sehe ich es richtig, das es keinen Befehl gibt, der es erlaubt ein Sprite das auf dem Screen gezeichnet wurde, mittels einer art "MOVESPRITE 1,tox,toy" Befehl zu verschieben?

Ich meine damit, das die Bewegung auch sichtbar sein sollte.
#8
Moinsen


Ich bin auf der suche nach Landschaftstexturen für meine Map(siehe Bildanhang). Googeln bringt mich nicht recht weite,r da die Auflösungen alle mies sind. Vielleicht hat ja jemand einen kreativen Link für mich ;-)







[attachment deleted by admin]
#9
Servus

Vieleicht bin ich ja a bissal blöd, aber ich kann keinen einzigen Anhang aus diesem Forum downloaden. Alle Anhänge ob nun eine Grafik oder zB. ein pdf sind bei mir sehr große php dateien. Ist das Normal so???
#10
Hallo

Ich habe mir aus einem Codeschnipseln von hier und ein paar veränderungen meinerseits ein kleines Programm geschhrieben.

Ziel ist es eine große Karte zu zeichnen, auf der alle 64 Pixel sobald ich mit der maus drüber fahre, ein kleiner Rahmen in 64 x 64 Pixel erscheint. Das funktioniert mitlerweile sehr gut. Selbst wenn ich die Map um ein paar pixel verschiebe, wird der Rahmen korrekt abgeschnitten gezeichnet. Leider verändert sich ja beim scrollen die virtuelle Maus Position und ich komme einfach nicht drauf wie ich das dann abfange.

Bsp. Die Karte ist genau um 0 , 64 , 128 oder 192 Pixel verschoben, dann rastet die maus alle 64 Pixel korrekt ein und wirft mir den Rahmen über mein Quadrat. Sobald ich jedoch nur 32 Pixel gescrollt habe wird zwar der Rahmen immer über ein Quadrat geworfen aber die Maus reagiert um die 32 Pixel falsch.

Was tun???


Code (glbasic) Select


// --------------------------------- //
// Project: Map Ed
// Start: Sunday, May 08, 2011
// IDE Version: 10.159



// Globale Variablen

GLOBAL mainscreenx%,mainscreeny%
GLOBAL GraphX%,GraphY%
GLOBAL gox%,goy%                 // Wird für Mapscrolling benötigt
GLOBAL MaxTX%                // Tileanzahl in der Horizontalen
GLOBAL MaxTY%                // Tileanzahl in der Vertikalen
GLOBAL TS%                // Tilegrösse
GLOBAL level%[]
GLOBAL scroll_speed%    // Scrollspeed
GLOBAL x%,y%,startx%,starty%,endx%,endy% // Var für forschleife
GLOBAL posx%,posy%                         // Var für die scollposition
GLOBAL vposx%,vposy%                        // Virtuelle Karten Koordinaten



// Dimensionieren der Speicherfelder

DIM quad[100][100][50][50]


// Werte der Konfiguration auslesen

GOSUB Konfig



// Daten Auslesen

GOSUB Daten



// Screen und Fonts und Maus Konfigurieren

SETSCREEN mainscreenx, mainscreeny, mainscreenfull
LOADFONT "Grafik/fonts/smalfont.png", 1
SETFONT 0
SYSTEMPOINTER TRUE



// Laden der Grafiken in den Grafik Puffer
// RGB 255/0/128 <--- (Diese Farbe ist für GL Basic transparent)

LOADSPRITE "Grafik/map/64x64.bmp", 0 //Title Set
LOADSPRITE "Grafik/map/highlight.bmp",2     //Highligt


@Hauptschleife:
//-------------------------------------------------------------------------------------------------------------------------------------
// Hauptschleife Ende mit Esc ---------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------------------------
REPEAT

updatefor()
scroll()
scrollmap(gox,goy)

FOR y = starty TO endy
    FOR x = startx TO endx
   DRAWSPRITE 0,posx+TS*x,posy+TS*y
   SETFONT 0
   PRINT "H:"+INTEGER(posx+TS*x),posx+TS*x,0+posy+TS*y // Nur zum austesten die Titles Beschriften
   PRINT "V:"+INTEGER(posy+TS*y),posx+TS*x,8+posy+TS*y // Nur zum austesten die Titles Beschriften
    NEXT
NEXT

virtualkoord()



SETFONT 1
MOUSESTATE mx, my, br, bl               // Aktuelle Mausposition speichern
mmx=mx ; mmy=my                         // Mausposition in zweitem Wert zwischenspeichern
vposx=INTEGER(ABS(posx)-TS*startx)      // Pixel Anzahl um die der Bildschirm verschoben ist in der X Achse
vposy=INTEGER(ABS(posy)-TS*starty)      // Pixel Anzahl um die der Bildschirm verschoben ist in der Y Achse
mx=mx-MOD(mx,TS);my=my-MOD(my,TS)       // Rasterung für die Markierung
PRINT "mmx"+mmx,100,30
PRINT "mx-vposx"+mx,100,42
mx=mx-vposx ; my=my-vposy               // Rasterung mit Korrigiertem Nullpunkt
PRINT "mx-vposx"+mx,100,54
DRAWSPRITE 2,mx,my



SHOWSCREEN



UNTIL KEY (01)
END
//-------------------------------------------------------------------------------------------------------------------------------------
// Hauptschleife Ende mit Esc ---------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------------------------



// Variablen für Forschleife updaten, enthält Globale variablen
FUNCTION updatefor:
//Startwert für die forschleife
startx = ABS(posx/TS)
starty = ABS(posy/TS)

//endwerte für die forschleife
endx = startx +(GraphX/TS)
IF endx > MaxTX THEN endx = MaxTX

endy = starty +(GraphY/TS)+1   //+1 da man hier in einen Kommabereich reinkommt!
IF endy > MaxTY THEN endy = MaxTY


ENDFUNCTION



FUNCTION virtualkoord:

// MOUSESTATE mx, my, br, bl
// mx=mx-MOD(mx,64);my=my-MOD(my,64)

// vposx=INTEGER(ABS(posx)-TS*startx) // Virtueller Nullpunkt Multiplikator in der X Achse
// vposy=INTEGER(ABS(posy)-TS*starty) // Virtueller Nullpunkt Multiplikator in der Y Achse

// vposx=mx-vposx
// vposy=my-vposy

ENDFUNCTION



// Für das scrolling mit der Maus und mit den Pfeiltasten
FUNCTION scroll:

MOUSESTATE mx, my, br, bl

IF mx < 1  AND posx < 0 // Nach Links mit der Maus
    gox = 1
ENDIF

IF mx > mainscreenx - 2 AND posx > GraphX-(TS*MaxTX) // Nach Rechts mit der Maus
    gox = 2
ENDIF

IF my > mainscreeny - 2 AND posy > GraphY-(TS*MaxTY) // Nach Unten mit der Maus
    goy = 2
ENDIF

IF my < 1 AND posy < 0 // Nach Oben mit der Maus
    goy = 1
ENDIF



IF KEY(203) // Links mit Pfeiltasten
    gox = 1
ENDIF

IF KEY(205) // Rechts mit Pfeiltasten
    gox = 2
ENDIF

IF KEY(208) // Runter mit Pfeiltasten
    goy = 2
ENDIF

IF KEY(200) // Hoch mit den Pfeiltasten
    goy = 1
ENDIF



ENDFUNCTION



FUNCTION scrollmap:l_x%,l_y%
IF l_x = 1 THEN INC posx,scroll_speed
IF l_x = 2 THEN DEC posx,scroll_speed
IF l_y = 1 THEN INC posy,scroll_speed
IF l_y = 2 THEN DEC posy,scroll_speed


IF posx > 0 THEN posx = 0
IF posy > 0 THEN posy = 0
IF posx < (0-(TS*MaxTX)) + GraphX THEN posx = (0-(TS*MaxTX)) + GraphX

IF posy < (0-(TS*MaxTY)) + GraphY THEN posy = (0-(TS*MaxTY)) + GraphY

gox = 0
goy = 0
ENDFUNCTION


FUNCTION getfps:

STATIC fps_time%,fps_counter%,fps%,fps_temp%
fps_time = GETTIMERALL()
fps_counter = fps_counter + 1
IF (fps_time-fps_temp)>1000
fps_temp = fps_time
fps = fps_counter
fps_counter = 0
ENDIF

RETURN fps
ENDFUNCTION

SUB Konfig:

mainscreenx=1280               // breite des Bildschirms
mainscreeny=800                // höhe des Bildschirms
mainscreenfull=1               // Vollbild=1, Fenster=0
GraphX=1280                    // Bildschrim auflösung in die Variablen speichern
GraphY=800                     // Bildschrim auflösung in die Variablen speichern
LIMITFPS -1                    // Max Bildwiederholungsrate
MaxTX = 40                     // Title Anzahl (also Karten Größe) in der X Achse
MaxTY = 40                     // Title Anzahl (also Karten Größe) in der Y Achse
scroll_speed = 1               // Scroll Geschwindigkeit (1 = Weich)
TS = 64                        // Größe der Titles (Quads)

ENDSUB

SUB Daten:



ENDSUB







#11
Servus

Ich bin leider schon seit Jahren von der Thematik weg. Möchte aber gern wieder Fuß fassen. Daher meine Frage...


mittels :

QuoteREPEAT
MOUSESTATE mx, my, br, bl
x=mx-MOD(mx,64);y=my-MOD(my,64)
DRAWSPRITE 0,x, y
SHOWSCREEN
UNTIL KEY (01)
END

habe ich eine Rasterung, die alle 64 Pixel ein Rechteck anzeigt.



Alle 64 Pixel nach links und nach unten habe ich praktisch ein neues Quadrat. Wie kann ich schnell und ohnen großen Code herausfinden in welchem Quadrat ich mich befinde.

Beispiel: Koordinate x = 128 Koordinate y = 64, das wäre dann 3 Spalte 2 zeile. Aber wie berechne ich das.




Danke ;-)