Autor | Thema: DLL | | Datum:21.06.02 20:12 
| |
Hallo,
ich habe schon viele Beispiele zu DLLs gefunden, aber verstehe sie immer noch nicht. Einen Eintrag hab ich auch schon durchgelesen und hilft mir auch nix. Könnt ihr mir ein Beispiel
geben um ein SNAKE Spiel zu machen (Mit PROSPEED.DLL) Nur das ein teil der Schlange immer hinter dem Kopf hinter her rennt?
Bitte, wäre toll?
Johann
|
| | Datum:23.06.02 14:13 
| |
Hallo Johann,
hier ist mal ein Beispiel:
Window 0,0-800,600
Declare neu&
$I Prospeed_Funktionen.inc ' Datei mit Funktionen einbinden
neu&=usedll("ProSpeed.dll") ' Dll öffnen
' *** Hier geht jetzt dein eigentliches Programm los.
' *** Ab hier kannst du alle Funktionen der Dll nutzen.
'
WaitInput
freedll neu& ' Dll schliessen
End
Wichtig ist, das sich die Datei "ProSpeed_Funktionen.inc" im gleichen Ordner befindet, wie dein Sourcecode, die ProSpeed.dll natürlich auch !!!
Gruß, Frank
|
| | Datum:23.06.02 23:08 
(webmaster@rokosoft.de) | |
Hi hab mal auf die schnelle ein Beispiel geschrieben.
Bitte Pfade anpassen und Dein eigenes Bild anpassen.
Hier wird aus Windows ein Bild benutzt.
DECLARE teststatus%,prospeed$,pfad$,prospeed&
Declare spritep&,Kopf&,bereich#,kopf&,KOPF2&
Declare fensterkopie1&,fensterkopie2&
dim bereich#,10000
teststatus%=1 'EXEPFAD ABFRAGEN
if teststatus%=1
let pfad$=@getdir$("@") 'INTERPRETERMODUS
elseif teststatus%=2
let pfad$=@Par$(0)
let pfad$=@upper$(pfad$) 'FÜR EXE
let pfad$=@Translate$(pfad$,"\XXX.EXE","")
endif
' HIER ANPASSEN
Prospeed$=pfad$;"\Prospeed.dll"
$I C:\PROFAN\AKTUELLE PROJEKTE\LOS\INC\Prospeed_Funktionen.inc
prospeed&=usedll(prospeed$)
Windowstyle $F0
WINDOW %0,0-%maxx,%maxy
CLS RGB(0,0,0)
fensterkopie1&=CreateExtBmp(%HDC,%maxx,%maxy)
fensterkopie2&=CreateExtBmp(%HDC,%maxx,%maxy)
string bereich#,0="C:\WINDOWS\KACHELN.BMP" 'ALS BEISPIEL
spritep&=LoadExtImage(bereich#)
kopf&=InitSprite(spritep&,%HDC,fensterkopie1&,fensterkopie2&,0,0,48,48,1,1,10,110,245,1,1)
string bereich#,0="C:\WINDOWS\KACHELN.BMP"
spritep&=LoadExtImage(bereich#)
kopf2&=InitSprite(spritep&,%HDC,fensterkopie1&,fensterkopie2&,0,0,48,48,1,1,10,160,245,1,1)
Whilenot equ(%scankey,27)
waitinput
MoveSprite(kopf&,%mousex,%mousey)
AttachSprite(kopf2&,kopf&,5,5) 'Hier natürlich passende Werte
Wend
FreeExtBmp(fensterkopie1&)
FreeExtBmp(fensterkopie2&)
FreeExtBmp(spritep&)
FreeExtBmp(kopf&)
FreeExtBmp(kopf2&)
freedll prospeed&
dispose bereich#
Hoffe Deine Snake macht nun was Du willst ;)
Rolf
|
| | Datum:24.06.02 18:27 
| |
Hallo,
hier kommt der Snake-Effekt noch etwas besser zum Ausdruck. Es werden 31 Sprites benutzt.
Bilddaten für das Sprite bitte anpassen.
Declare prospeed&
Declare spritep&,Kopf&,bereich#,kopf&,KOPF2&
Declare fensterkopie1&,fensterkopie2&,x&,y&
dim bereich#,10000
ChDir GetDir$("@")
$I Prospeed_Funktionen.inc
prospeed&=usedll("prospeed.dll")
Windowstyle $F0
WINDOW 0,0-%maxx,%maxy
CLS RGB(0,0,0)
fensterkopie1&=CreateExtBmp(%HDC,%maxx,%maxy)
fensterkopie2&=CreateExtBmp(%HDC,%maxx,%maxy)
string bereich#,0="C:\WINDOWS\Granit.BMP" 'ALS BEISPIEL, EINFACH IRGENDEIN BILD VERWENDEN
spritep&=LoadExtImage(bereich#)
kopf&=InitSprite(spritep&,%HDC,fensterkopie1&,fensterkopie2&,0,0,16,16,1,1,10,110,245,8,8)
y&=kopf&
Whileloop 30
x&=CopySprite(y&)
AttachSprite(x&,y&,0,0)
y&=x&
EndWhile
Whilenot equ(%scankey,27)
MoveSprite(kopf&,Rnd(%maxx),Rnd(%maxy))
Sleep 250
Wend
DeleteAllSprites()
FreeExtBmp(fensterkopie1&)
FreeExtBmp(fensterkopie2&)
FreeExtBmp(spritep&)
FreeExtBmp(kopf&)
FreeExtBmp(kopf2&)
freedll prospeed&
dispose bereich#
Gruß, Frank
|
| | Datum:24.06.02 20:56 
(frankabbing@12move.de) | |
Hallo nochmal,
hier noch eine bessere Version, fehlerbereinigt und ohne das ein Bild benötigt wird.
Declare prospeed&,kopf&,fensterkopie1&,fensterkopie2&,x&,y&
ChDir GetDir$("@")
$I Prospeed_Funktionen.inc
prospeed&=usedll("prospeed.dll")
Windowstyle $F0
WINDOW 0,0-%maxx,%maxy
CLS RGB(0,0,0)
fensterkopie1&=CreateExtBmp(%HDC,%maxx,%maxy)
fensterkopie2&=CreateExtBmp(%HDC,%maxx,%maxy)
UseBrush 1,Rgb(255,0,0)
Ellipse 0,0-32,32
kopf&=InitSprite(%hdc2,%HDC,fensterkopie1&,fensterkopie2&,0,0,32,32,1,1,10,110,245,12,12)
y&=kopf&
Whileloop 30
x&=CopySprite(y&)
AttachSprite(x&,y&,0,0)
y&=x&
EndWhile
Whilenot equ(%scankey,27)
MoveSprite(kopf&,Rnd(%maxx),Rnd(%maxy))
Sleep 250
EndWhile
DeleteAllSprites()
FreeExtBmp(fensterkopie1&)
FreeExtBmp(fensterkopie2&)
FreeExtBmp(kopf&)
freedll prospeed&
End
Gruß, Frank
|
| | Datum:25.06.02 18:28 
| |
Ich bins nochmal.
Jetzt versteh ich die DLLs! Danke
Aber ich wollte ein richtiges SNKAESpiel machen, wo etwas passiert wenn man den Schwanz berührt. Das letzte Beispiel war schon super(!!!), aber besteht nur aus kopf&. Also werd ich mit Collision (usw.) immer gameover...
Kann man den Schwanz richtig nachlaufen lassen, und jedem Teil einzeln programmieren?
|
| | Datum:25.06.02 19:50 
| |
Hallo Johann,
es gibt mehrere Methoden, um ein Snake Spiel zu realisieren, die Sourcecodes waren nur ein Beispiel, zuende entwickeln mußt du es schon selber.
Ich persönlich würde mit Tabellen (Bereiche) oder Array's arbeiten, z.B. für ein Spielfeld von 32 x 32 Kästchen würdest du dann eine 1024 Byte langen Bereich benötigen.
Werte für die Tabelle wären z.B.:
0 = freie Stelle
1 = Mauer / Hinderniss
3 = Kopf
4 = Teil des Schwanzes
Jetzt bearbeitest du diese Tabelle, z.B. Kopf geht weiter nach links usw.
Nach jedem Ändern der Tabelle mußt du dann diese Daten auf den Bildschirm bringen. Wie du das genau machst, liegt aber bei dir...
Gruß, Frank
|
| | Datum:26.06.02 18:12 
| |
Ok, aber ich versteh nicht ganz was du meist...
Wie soll ich so eine Tabelle machen?
|
| | Datum:26.06.02 20:32 
| |
Hallo,
hier mal ein anschauliches Beispiel:
' *** Das Spielfeld besteht hier aus 16 x 16 Feldern, also aus einer Tabelle (Bereich)
' *** mit 256 bytes.
' *** Sichtbar wird das Spielfeld hier mit simplen Buchstaben gemacht, du solltest
' *** stattdessen Grafikplättchen (Tiles) verwenden
' *** Eine große Auswahl Tiles kannst du z.B. von meiner Homepage herunter laden.
' *** http://www.12move.de/home/frankabbing/
Declare bereich#,x&,y&,z&,text$
Dim bereich#,257
Cls
' *** Rahmen erstellen
'
Whileloop 16
Byte bereich#,&loop=1
Byte bereich#,&loop+240=1
Wend
y&=0
Whileloop 16
Byte bereich#,y&=1
Byte bereich#,y&+15=1
y&=y&+16
Wend
' *** Kopf und Schwanz erstellen
'
Byte bereich#,68=3
Byte bereich#,69=4
Byte bereich#,70=4
Byte bereich#,71=4
Byte bereich#,87=4
Byte bereich#,103=4
Byte bereich#,119=4
' *** Tabelle sichtbar machen
'
x&=0
y&=0
Whileloop 16
Whileloop 16
z&=Byte(bereich#,(x&+y&))+48
x&=x&+1
text$=Chr$(z&)
Print text$;
Wend
x&=0
y&=y&+16
Print
Wend
WaitInput
Dispose bereich#
End
Gruß, Frank
|
| | Datum:30.06.02 15:20 
| |
Hi, ich bins nochmal
Das haut einfach nicht so hin wie ich es haben will. Ich hab ja schon viel gemeistert, aber das ist eine Spur zu hoch für mich. Grafik einfügen usw kann ich nicht....
Kann mir jemand irgendwie weiterhelfen (verzweifelt)
|
| | Datum:30.06.02 22:37 
| |
Hallo Johann,
probier's doch mal erst an etwas leichterem.
Stück für Stück geht's besser als mit der Holzhammer-Methode.
Gruß, Frank
|
| | Datum:04.07.02 15:08 
(frankabbing@12move.de) | |
Hallo Johann,
in der nächsten ProSpeed Version gibt es eine Funktion, um solche Maptabellen grafisch darzustellen.
Die Maptabellen können bequem mit einem Mapeditor erstellt, z.B. mit Mappy (auf meiner Homepage).
Ein Aufruf der Funktion SetTiles() reicht aus, um eine beliebig große Landschaft (zusammengestellt aus Grafikstückchen (Tiles)) darzustellen. Und das Beste ist, es können auch scheinbar 3-dimensionale Landschaften erstellt werden (Transparenz-Modus), z.B. große Bäume oder Berge usw. verdecken die dahinterliegende Landschaft...
Und die Funktion ist sehr schnell.
Sobald ich die Anleitung für SetTiles() fertig habe, schicke ich dir gerne die Betaversion der ProSpeed.dll, wenn du möchtest.
Gruß, Frank
|
| | | Datum:06.07.02 01:01 
(webmaster@rokosoft.de) | |
@Sveni
Dann warte ab, das Paket wird auch noch den Speed@animator erhalten:

Rolf :)
|
| | Datum:06.07.02 10:22 
| |
*freu!*
Gruß, Frank
|
| | Datum:06.07.02 15:33 
| |
@ svenschmidt
Wow, daraus wird ja noch ein Game-Studio ... respekt
meinst du 3dgs?
mfg
|
| | Datum:12.07.02 14:16 
| |
Hi Florian,
reg' dich ab, es gibt 'zig Gamecreator und die meisten sind besser als 3dgs...
Gruß, Frank
|
| | Datum:12.07.02 16:43 
| |
@ Frank Abbing
???????ß Warum so sauer?
war in keinster weise negative oder beleidigend gemeint!
und die aussage das es einige bessere gibt als 3dgs, würde ich nicht sagen, ok wenn man von reinen programmieren spricht schon aber von der einfachheit und der leistung ist 3dgs bestimmt unschlagbar, habe auch schon mal Bb und blitz3d, gamemaker, dark basic usw probiert aber alles "zu schwer"
|
| | Datum:12.07.02 20:34 
| |
Hi,
ich sauer ? Nene, da hast du was mißverstanden ;-))
Gamemaker ist schon cool, ist der Beste würd' ich sagen.
Je komplexer das Programm, desto leistungsfähiger ist es.
Komplexer heißt nicht schlechter...
Gruß, Frank
|
| | Datum: 13.07.02 13:57 
| |
Ok gamemaker ist ja wohl ...... hehe
naja
|
|
|