Einsteigerfragen zur PROFAN Programmierung

| Suchen
| Zurück zur Übersicht

Autor | Thema: DLL
Johann Olaf
| 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
Frank Abbing
| 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
Rolf Koch
| 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
Frank Abbing
| 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
Frank Abbing
| 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
Johann Olaf
| 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?
Frank Abbing
| 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
Johann Olaf
| Datum:26.06.02 18:12 |
Ok, aber ich versteh nicht ganz was du meist... Wie soll ich so eine Tabelle machen?
Frank Abbing
| 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
Johann Olaf
| 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)
Frank Abbing
| 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
Frank Abbing
| 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
Sven Schmidts
| Datum:04.07.02 19:14 (schmidts@flat2serv.de) |
Wow, daraus wird ja noch ein Game-Studio ... respekt.
Rolf Koch
| Datum:06.07.02 01:01 (webmaster@rokosoft.de) |
@Sveni Dann warte ab, das Paket wird auch noch den Speed@animator erhalten: Rolf :)
Frank Abbing
| Datum:06.07.02 10:22 |
*freu!* Gruß, Frank
Florian May
| Datum:06.07.02 15:33 |
@ svenschmidt Wow, daraus wird ja noch ein Game-Studio ... respekt meinst du 3dgs? mfg
Frank Abbing
| Datum:12.07.02 14:16 |
Hi Florian, reg' dich ab, es gibt 'zig Gamecreator und die meisten sind besser als 3dgs... Gruß, Frank
Florian May
| 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"
Frank Abbing
| 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
Florian May
| Datum: 13.07.02 13:57 |
Ok gamemaker ist ja wohl ...... hehe naja

| Zurück zur Übersicht

| Ein kostenloses WebMart Forum WebMart Homepage Tools kostenlos |