Mit dem neuen Update (bald, bald!) kann man so einfach Schüsse machen:
// --------------------------------- //
// Project: Blaster
// Start: Thursday, April 05, 2007
// IDE Version: 4.145
// Ein Schuss-TYPE. Hier ist nur die Position von Bedeutung
TYPE SHOT
x
y
ENDTYPE
// ein SHOT um später neue hinzuzufügen
LOCAL newshot AS SHOT
// das SHOTs Feld. Hier kommen die Schüsse rein
LOCAL shots[] AS SHOT
playerx = 320
WHILE TRUE
// Spieler Bewegung
INC playerx, KEY(205)-KEY(203)
// Auf den Rand begrenzen
playerx=MAX(MIN(playerx,600),40)
// Leertaste und etwas Zeit seit letztem Schuss vergangen?
IF KEY(57) AND delay // Schuss vorbereiten
newshot.x = playerx
newshot.y = 400
// Und in's Feld reinpacken
DIMPUSH shots[], newshot
// Zeit festlegen, wann der nächste Schuss geladen ist
delay = GETTIMERALL() + 100
ENDIF
// Durch alle Schüsse laufen
FOREACH pop IN shots[]
// Schuss hoch bewegen
DEC pop.y, 1
// Wenn Schuss am oberen Rand, dann entfernen und continue
IF pop.y<0 THEN DELETE pop
// Schuss zeichnen
PRINT "|", pop.x, pop.y
NEXT
// "Spieler" zeichnen
PRINT "A", playerx, 400
// etwas Statusinformationen
PRINT "Shots: "+BOUNDS(shots[], 0), 0,0
SHOWSCREEN
WEND
Schaut doch schon geiler aus Gernot, kann man sich doch einiges an arbeit sparen !
Nice work.
Seit dem Update auf die neue Version kann ich mein Projekt nicht kompilieren. Es wird die Meldung
*** Configuration: WIN32 ***
precompiling:
GPC - GLBasic Precompiler V.2007.095 - 3D, NET
"TypeTest.gbas"(14) error : wrong argument type : TYPE TTiles is not declared
beim kompilieren angezeigt.
Das Projekt besteht aus 2 Dateien, wobei die Datei uTypes.gbas unter Quellen eingetragen ist.
Die Hauptdatei:
// --------------------------------- //
// Project: TypeTest
// Start: Friday, April 06, 2007
// IDE Version: 4.148
GLOBAL Tile AS TTiles
GOSUB SetupTile
SUB SetupTile:
GLOBAL Tile AS TTiles
Tile.iXPos = 0
Tile.iYPos = 0
ENDSUB
Die Datei mit der Typendefinition:// --------------------------------- //
// Project: TypeTest
// Start: Friday, April 06, 2007
// IDE Version: 4.148
TYPE TTiles
aImages[]
iXPos
iYPos
ENDTYPE
Mit der Version 4.132 wurde das Projekt kompiliert, mit der Version 4.148 geht dieses nicht mehr.
Gruß
Thomas
TYPE TTile
aImage
iXPos
iYPos
ENDTYPE
LOCATE T AS TTile
LOCATE Tiles[] AS TTile
versuchs mal so !
Die Types haben sich ja jetzt geändert in der neuen Version, ist jetzt 1000x leichter als vorher
Dein Beispiel funktioniert nicht, der Befehl LOCATE wird als feherhaft markiert.
Was hat sich den gändert an der Definition und Verwendung von TYPES? Es sind neue Möglichkeiten für dynamische Arrays hinzugekommen, aber an den Types selber hat sich doch nichts geändert. Ich habe das Gefühl, das die Datei uTypes.gbas nicht korrekt eingebunden wird, denn ob die Datei unter Quellen aufgelistet ist oder nicht, es erscheint immer die gleiche Fehlermeldung.
Gruß
Thomas
@Gernot,
hat sich hier wieder ein kleiner Bug eingeschlichen??
Nun muss man Type wieder vor einer function deklarieren ansonsten gibts wieder ne fehlermeldung.
Beispile code:
GLOBAL test AS b
WHILE TRUE
test = a()
PRINT test.x,10,10
SHOWSCREEN
WEND
//TYPE b
//x
//ENDTYPE
FUNCTION a AS b:
GLOBAL c AS b
INC c.x,1
IF c.x > 100 THEN c.x = 0
RETURN c
ENDFUNCTION
TYPE b
x
ENDTYPE
Hoppla. Danke.
Das Update ging mal wieder schnell :)
Ich hatte mich schon gewundert das mein Projekt sich plötzlich nicht mehr Compilieren läst.
Vielen Dank für das schnelle Update, mein Projekt läßt sich wieder kompilieren.
Gruß
Thomas
*schwitz*
Ist das normal ??
Mein Projekt hat 3 Dateien :
Main , Declarationen , Funktionen
Wenn ich den Befehl:
GLOBAL fire[] AS laser
REDIM fire[5]
in die Datei Declarationen schreibe bingt er einen Fehler
wrong argument type : TYPE is not declared
Aber wenn es im Main steht geht es!
(// IDE Version: 5.055)
nicht normal. Mach mal ein update.
Wenn's nicht geht, bitte mini-projekt posten.
Häää? Wie alt ist dieser Thread eigentlich - vom 5. Apr. 2007??? Der ist bei mir heute erstmalig im Forum aufgetaucht, das ist nicht normal! Habe ich etwas verpasst?
wenn man was neues schreibt, rutschen die wieder nach oben.
Wie das verwirren kann, wenn ein alter Thread nochmal ausgegraben wird :)
Hier habe ich mal ein Beispiel Projekt nur mit dem Fehler.
http://www.zshare.net/download/5110599f998ec7/
Ach noch etwas seltsames. Es darf kein TYPE mit dem Namen "auto" erstellt werden
sonst passiert das :
_______________________________________
*** Configuration: WIN32 ***
precompiling:
GPC - GLBasic Precompiler V.2007.315 - 2D, WIN32
Wordcount:3 commands
compiling:
In file included from C:/DOKUME~1/Besitzer/LOKALE~1/Temp/glbasic/gpc_temp.h:5,
from C:/DOKUME~1/Besitzer/LOKALE~1/Temp/glbasic/gpc_tempg.cpp:2:
C:/DOKUME~1/Besitzer/LOKALE~1/Temp/glbasic/gpc_temp_class.h:1: error: expected identifier before "auto"
C:/DOKUME~1/Besitzer/LOKALE~1/Temp/glbasic/gpc_temp_class.h:2: error: expected unqualified-id before '{' token
In file included from C:/DOKUME~1/Besitzer/LOKALE~1/Temp/glbasic/gpc_tempg.cpp:2:
C:/DOKUME~1/Besitzer/LOKALE~1/Temp/glbasic/gpc_temp.h:6: error: ISO C++ forbids declaration of `golf' with no type
C:/DOKUME~1/Besitzer/LOKALE~1/Temp/glbasic/gpc_temp.h:6: error: multiple storage classes in declaration of `golf'
C:/DOKUME~1/Besitzer/LOKALE~1/Temp/glbasic/gpc_tempg.cpp:4: error: ISO C++ forbids declaration of `golf' with no type
C:/DOKUME~1/Besitzer/LOKALE~1/Temp/glbasic/gpc_tempg.cpp:4: error: top-level declaration of `golf' specifies `auto'
In file included from C:/DOKUME~1/Besitzer/LOKALE~1/Temp/glbasic/gpc_temp.h:5,
from C:/DOKUME~1/Besitzer/LOKALE~1/Temp/glbasic/gpc_temp0.cpp:1:
C:/DOKUME~1/Besitzer/LOKALE~1/Temp/glbasic/gpc_temp_class.h:1: error: expected identifier before "auto"
C:/DOKUME~1/Besitzer/LOKALE~1/Temp/glbasic/gpc_temp_class.h:2: error: expected unqualified-id before '{' token
In file included from C:/DOKUME~1/Besitzer/LOKALE~1/Temp/glbasic/gpc_temp0.cpp:1:
C:/DOKUME~1/Besitzer/LOKALE~1/Temp/glbasic/gpc_temp.h:6: error: ISO C++ forbids declaration of `golf' with no type
C:/DOKUME~1/Besitzer/LOKALE~1/Temp/glbasic/gpc_temp.h:6: error: multiple storage classes in declaration of `golf'
C:/DOKUME~1/Besitzer/LOKALE~1/Temp/glbasic/gpc_temp0.cpp: In function `int __GLBASIC__::__MainGameSub_()':
C:/DOKUME~1/Besitzer/LOKALE~1/Temp/glbasic/gpc_temp0.cpp:16: error: request for member `farbe' in `__GLBASIC__::golf', which is of non-class type `int'
In file included from C:/DOKUME~1/Besitzer/LOKALE~1/Temp/glbasic/gpc_temp.h:5,
from C:/DOKUME~1/Besitzer/LOKALE~1/Temp/glbasic/gpc_temp1.cpp:1:
C:/DOKUME~1/Besitzer/LOKALE~1/Temp/glbasic/gpc_temp_class.h:1: error: expected identifier before "auto"
C:/DOKUME~1/Besitzer/LOKALE~1/Temp/glbasic/gpc_temp_class.h:2: error: expected unqualified-id before '{' token
In file included from C:/DOKUME~1/Besitzer/LOKALE~1/Temp/glbasic/gpc_temp1.cpp:1:
C:/DOKUME~1/Besitzer/LOKALE~1/Temp/glbasic/gpc_temp.h:6: error: ISO C++ forbids declaration of `golf' with no type
C:/DOKUME~1/Besitzer/LOKALE~1/Temp/glbasic/gpc_temp.h:6: error: multiple storage classes in declaration of `golf'
*** FATAL ERROR - Bitte die Compiler-Ausgabe ins Forum kopieren
@S.O.P.M.
Ist doch normal das die Beiträge wieder hochrutschen.
Sonst hätte ich nie eine Antwort bekommen.
so gehts:
TYPE Auto
hersteller
farbe
ENDTYPE
GLOBAL golf AS Auto
golf.farbe = 1
@Schranz0r
Bezieht sich das auf den fehler das ein TYPE nicht den Namen "auto" haben darf ?
Oder das man die Instanz eines TYPE nur in die Hauptdatei des Projekts packen darf ?
Aber ich bin begeistert wie schnell man eine Antwort in diesen Forum bekommt.
Wenn man sich mal überlegt das es eher eine "Randgruppen" Programmiersprache ist.
Alleine das ist mir schon eine Vollversion wert.
Ja und vor allem dass der GLBasic Entwickler höchstselbst fast täglich hier reinschaut und auch immer ein offenes Ohr für Vorschläge oder Verbesserungen hat. Wo gibts das schon. Also wenn's mal zu einem GLBasic Treffen kommt (was ich hoffe) dann gibt's für Gernot auf jeden Fall ein extra Weizen.:booze:
Cheers
Jow wenn ich was seh, und helfen kann, helfe ich immer ;)
Du hast recht der Type darf nicht "auto" heissen, aber AUTO und Auto geht... Ist wohl ein C++ kommando laut Debuger oder zumindest schon vergeben... was mich durchaus wundert!
Types können meines wissens nur in der Maindatei vor der Hauptschleife, oder in einer Subdatei eingebunden werden!
In einer zusätzlichen datei kannst du übrigends so machen
SUBDATEI:
TYPE Auto
Model$
Farbe
ENDTYPE
GLOBAL Autos[] AS Auto
FUNCTION SetCar: Model$, Farbe
LOCAL i AS Auto
i.Model$ = Model$
i.Farbe = Farbe
DIMPUSH Autos[],i
ENDFUNCTION
FUNCTION ShowCars:
LOCAL i, num
FOREACH i IN Autos[]
PRINT i.Model$,num*90,10
PRINT i.Farbe,num*90,20
INC num,1
NEXT
ENDFUNCTION
MAINDATEI:
SetCar("AUDI",RGB(0x00, 0x00, 0x00))
SetCar("BMW",RGB(0xff, 0x00, 0x00))
WHILE TRUE
ShowCars()
SHOWSCREEN
WEND
END
so könnte man es machen ;)
TYPE tRandgruppe
sprache$
status
ENDTYPE
GLOBAL Randgruppe AS tRandgruppe
Randgruppe.sprache$ = "GL-Basic"
Randgruppe.status = FALSE
Randgruppe.sprache$ = "Cobol und sonstiger ernsthafter Unsinn"
Randgruppe.status = TRUE
;) ok, syntaktisch unsinng, aber ich weigere mich, eine Randgruppe zu sein ;)
Quote from: QuentinTYPE tRandgruppe
sprache$
status
ENDTYPE
GLOBAL Randgruppe AS tRandgruppe
Randgruppe.sprache$ = "GL-Basic"
Randgruppe.status = FALSE
Randgruppe.sprache$ = "Cobol und sonstiger ernsthafter Unsinn"
Randgruppe.status = TRUE
;) ok, syntaktisch unsinng, aber ich weigere mich, eine Randgruppe zu sein ;)
Sei mir nicht böse, aber whats that?
Entweder hast du hier was total falsch verstanden, oder es sollte ein Witz sein, den ich nicht verstehe....??????
Quote from: BugmanAber ich bin begeistert wie schnell man eine Antwort in diesen Forum bekommt.
Wenn man sich mal überlegt das es eher eine "Randgruppen" Programmiersprache ist.
Alleine das ist mir schon eine Vollversion wert.
lol Schranzor, es sollte nur ein Gag sein wegen obigem Posting von Bugman ;)
dann eher so :
IF Randgruppe = True THEN GLBasic = False
*ggg* oder so, dann wirds klarer
Übrigens, die Idee Types mit T zu beginnen (Tauto) ist hier auch wieder gut.
Also Gernot :D
Ich habe noch nie ein Tauto gesehen ;)
Spass bei Seite, noch 2 Posts dan hab ich Posting-Geburtstag, und zwar nen Runden :D
Aber wenn man Auto eingibt passts ja auch, aber Gernot sag mal, wieso ist den auto schon belegt? Hat das nen besonderen Grund?
[url]http://msdn2.microsoft.com/en-us/library/6k3ybftz(VS.80).aspx[/urll]
Wenn's kein Tauto gibt, dann eben TTauto. :D
Gruß aus Ingolstadt.
Na da müssen wir mal einen Termin für ein Audit ausmachen ;)