Wieder mal Probleme mit meinen Games...
Übersicht

Another Stupid CoderBetreff: Wieder mal Probleme mit meinen Games... |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Halllo, ihr BlitzBasic-Coder da draußen!
Ich habe mal wieder zwei "kleine" Probleme. (Die Quellcodes gibt's unten.) 1. Abranoix : Ich will das sich die Figur langsamer (ungefähr so wie in Zelda (für GB), Harvest Moon, Pokenmon, ...) bewegt und habe auch schon probiert es zu proggen. Dürfte ja eigentlich ganz einfach sein aber ich hab's einfach nicht geschafft! Achja, wenn möglich sollte die FPS (Frames Pro Sekunde, Frames Per Second) gleich bleiben. 2. MapEdit: Ich suche eine Möglichkeit das Messages-Dim-Feld zu füllen indem man auf das feld klickt und dann einfach die Nachricht eingibt. Dabei wären Bugs Wie z.B.: Doppeltes Eingeben der Message und das sich danach der Speichern-Dialog öffnet zu vermeiden. Tja, Ich hoffe Ihr könnt mir helfen, wenn ja, wäre das sehr sehr nett. ![]() Quellcodes: -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Abranoix.bb: Global FileLoad$ AppTitle "Abranoix" Graphics 740, 530, 16, 2 ; Grafik-Modus. SetBuffer BackBuffer() ; Wir verwenden Doublebuffering. FPS = CreateTimer(60) ; Frames Per Sekunde ; Dim-Felder Dim Map(21,16) ; Das Karten-Dim-Feld. ; Globale Variablen Global P_X = 3; X-Koordinate des Players. Global P_Y = 8 ; Y-Koordinate des Players. Global P_Direc = 3 ; Die Richtung (Direction) des Players. Global P_Anim = 0 ; Der Frame der Player-Animation Global Modus$ = "Menü" ; Bilder Global Cursor = LoadImage("Graphics\Cursor.bmp") Global Button_Dark = LoadImage("Graphics\Button_Dark.bmp") Global Button_Light = LoadImage("Graphics\Button_Light.bmp") Global MessageBox = LoadImage("Graphics\MessageBox.bmp") Global MenueBox = LoadImage("Graphics\MenueBox.png") Global Loader = LoadImage("Graphics\Loader.png") Global Tileset = LoadAnimImage("Graphics\Tileset.bmp", 32, 32, 0, 21) ; Das Tileset der Karte. Global P_Image = LoadAnimImage("Graphics\Char.bmp", 32, 32, 0, 12) ; Transparenz MaskImage P_Image, 255, 0, 255 ; Damit Rosa Transparent wird. MaskImage Cursor, 255, 0, 255 ; Damit Rosa Transparent wird. MaskImage MenueBox, 255, 0, 255 ; Damit Schwarz NICHT Transparent wird. ; Schriften Global Arial18 = LoadFont("Blitz.fon", 18) ; Includes. Include "Funktionen.bb" ; Initialisierungen. While Not KeyDown(1) = True WaitTimer(FPS) HidePointer If Modus$ = "Menü" Origin 50, 25 DrawImage Loader, 0, 0 NeuesSpielButton = Button(320, 200, "Neues Spiel") If NeuesSpielButton = True Then FileLoad$ = "Maps\Map1.abrmap" LoadMap() Modus$ = "Spiel" EndIf LadeSpielButton = Button(320, 238, "Laden") If LadeSpielButton = True Then LadeSpiel() SpeicherSpielButton = Button(320, 276, "Speichern") If SpeicherSpielButton = True Then SpeicherSpiel() DrawImage Cursor, MouseX(), MouseY() EndIf If Modus$ = "Spiel" Origin 0, 0 Move() DrawMap() DrawImage P_Image, P_X*32-32, P_Y*32-32, P_Direc + P_Anim DrawImage MessageBox, 0, 480 DrawImage MenueBox, 640, 0 MenueButton = Button(691, 68, "Menü") If MenueButton = True Then Modus$ = "Menü" P_Anim = P_Anim + 1 If P_Anim >= 3 Then P_Anim = 0 If MouseX() > 640 DrawImage Cursor, MouseX(), MouseY() EndIf Flip Cls Wend FreeTimer FPS FreeFont Arial18 End -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Funktionen.bb (für Abranoix.bb) Function Move() If KeyDown(200) ; Rauf P_Direc = 0 If Not P_X <= 0 If Not P_X >= 21 If Not P_Y <= 0 If Not P_Y >= 16 If Map(P_X, P_Y - 1) < 10 P_Y = P_Y - 1 EndIf EndIf EndIf EndIf EndIf EndIf If KeyDown(208) ; Runter P_Direc = 3 If Not P_X <= 0 If Not P_X >= 21 If Not P_Y <= 0 If Not P_Y >= 16 If Map(P_X, P_Y + 1) < 10 P_Y = P_Y + 1 EndIf EndIf EndIf EndIf EndIf EndIf If KeyDown(203) ; Links P_Direc = 6 If Not P_X <= 0 If Not P_X >= 21 If Not P_Y <= 0 If Not P_Y >= 16 If Map(P_X - 1, P_Y) < 10 P_X = P_X - 1 EndIf EndIf EndIf EndIf EndIf EndIf If KeyDown(205) ; Rechts P_Direc = 9 If Not P_X <= 0 If Not P_X >= 21 If Not P_Y <= 0 If Not P_Y >= 16 If Map(P_X + 1, P_Y) < 10 P_X = P_X + 1 EndIf EndIf EndIf EndIf EndIf EndIf End Function Function LoadMap() StreamLoad = ReadFile(FileLoad$) For X = 0 To 21 For Y = 0 To 16 Map(X,Y) = ReadInt(StreamLoad) Next Next End Function Function DrawMap() For Y = 0 To 15 For X = 0 To 21 DrawImage Tileset, X*32-32, Y*32-32, Map(X,Y) Next Next End Function Function ShowMessage(Message$) MsgGo = 1 SetFont Arial18 Text 30, 500, Message$ End Function Function Button(X, Y, Text_$) Clicked = 0 W = ImageWidth(Button_Dark) H = ImageHeight(Button_Dark) W = W / 2 H = H / 2 X = X - W Y = Y - H DrawImage Button_Dark, X, Y If MouseX() > X If MouseX() < (X + (W*2)) If MouseY() > Y If MouseY() < (Y + (H*2)) DrawImage Button_Light, X, Y If MouseHit(1) Clicked = 1 EndIf EndIf EndIf EndIf EndIf Text X + W, Y + H, Text_$ , 1, 1 Return Clicked End Function Function LadeSpiel() End Function Function SpeicherSpiel() End Function -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- MapEdit: ;##################################################################################################### ;##-----------------------------------MapEdit Version 1.0-------------------------------------------## ;##-------------------------------Program : Paul Anselm Härle---------------------------------------## ;##################################################################################################### ;# # AppTitle "MapEdit V 1.0 By Paul Anselm Härle <paulhaerle@gmx.at>" ; Setzt den Fenster-Titel. # Graphics 740 + 64, 480 + 64, 16, 2 ; Startet den Grafik-Modus. # SetBuffer BackBuffer() ; Aktiviert den Backbuffer. # ;# # ;#---------------------------------------Dim-Felder--------------------------------------------------# ;# # Dim MapArr(21, 16) ; Der Array für die Karte. # Dim DrüberGrafiken(21, 16) ; Array für die Darüber gelegten Grafiken. # Dim Messages$(21, 16) ; Array für die Meldungen am Bildschirm. (TODO: Mehr als eine Message.) # Dim Items$(21, 16) ; Array mit Items. # ;# # ;#------------------------------------Globale Variablen----------------------------------------------# ;# # Global Map_X ; X-Koordinate des Tiles unter der Maus. # Global Map_Y ; Y-Koordinate des Tiles unter der Maus. # Global AktTile = 0 ; Das gerade gewählte Tile (wird auf Links-Klick gesetzt.). # Global Modus = 0 ; Der Modus (0=Tiles, 1=Grafiken,2=Messages, 3=Items). # ;# # ;#-----------------------------------Bilder & Transparenz--------------------------------------------# ;# # Global MenueImage = LoadImage("Graphics\Menue.png") ; Lädt das Menue als *.png-Datei. # Global Tileset = LoadAnimImage("Graphics\Tileset.bmp", 32, 32, 0, 21) ; Lädt das Tileset. # Global Cursor = LoadImage("Graphics\Cursor.bmp") ; Lädt den Cursor. # Global Button_Dark = LoadImage("Graphics\Button_Dark.png") ; Der dunkle Button. # Global Button_Light = LoadImage("Graphics\Button_Light.png") ; Der helle Button. # Global EingabeBox = LoadImage("Graphics\EingabeBox.bmp") ; Die Eingabe-Box. Wer hätte DAS gedacht? # MaskImage Cursor, 255, 0, 255 ; Aktiviert Rosa-ist-transparent für den Cursor. # ;# # ;#-----------------------------------Initialisierungen-----------------------------------------------# ;# # For X = 0 To 21 ;------|\ # Y = 0 ;------------|--\ # MapArr(X,Y) = 12 ;-|----\ # Next ;-----------------|------\ # For X = 0 To 21 ;------|--------\ # Y = 16 ;-----------|----------\ # MapArr(X,Y) = 12 ;-|------------\ # Next ;-----------------|--------------\ Macht die Ränder unbegehbar. # For Y = 0 To 16 ;------|--------------/ # X = 0 ;------------|------------/ # MapArr(X,Y) = 12 ;-|----------/ # Next ;-----------------|--------/ # For Y = 0 To 16 ;------|------/ # X = 21 ;-----------|----/ # MapArr(X,Y) = 12 ;-|--/ # Next ;-----------------|/ # ;# # ;##################################################################################################### ;#---------------------------------------Hauptschleife-----------------------------------------------# ;##################################################################################################### ;# # While Not KeyDown(1) = True ; Solange NICHT Escape (Scancode = 1) gedrückt wird... # ;# # For X = 0 To 21 ; Für jede Reihe... # For Y = 0 To 16 ; Für Jede Spalte... # DrawImage Tileset, X*32, Y*32, MapArr(X,Y) ; Zeichnet die Karte. # Next ; Beendet For. # Next ; Beendet For. # ;# # X_ = MouseX() ; X_ ist die X-Koordinate der Maus. # Y_ = MouseY() ; Y_ ist die Y-Koordinate der Maus. # DrawImage MenueImage, 640 + 64, 0 ; Zeichnet das Menü. # DrawImage Tileset, 675+ 64, 435, AktTile ; Zeigt das Aktuelle Tile im Menü an. # HidePointer ; "versteckt" den M$-Mauszeiger (damit man meinen Besser sieht;)). # ShowModus() ; Zeigt den aktuellen Modus an. # ;# # Map_X = (X_) / 32 ; Die X-Koordinate des gewählten Tiles kann nur ein vielfaches von 32 sein. # Map_Y = (Y_) / 32 ; Die Y-Koordinate auch. ![]() ;# # If Modus = 0 ; Wenn der Tile-zeichnen-Modus aktiviert ist... # ;# # If MouseHit(2) Then AktTile = AktTile + 1 ; Rechte Maustaste wechselt das aktuelle Tile. # If Not AktTile <= 20 Then AktTile = 0 ; Wenn das aktuelle Tile > 20 ist dann wird es 0. # ;# # If Map_X < 21 And Map_X >= 1 ;---------------|\ # If Map_Y < 16 And Map_Y >= 1 ;-----------|--\ # If MouseDown(1) Then ;---------------|----\ # MapArr(Map_X, Map_Y) = AktTile ;-|------ Wenn im Karten-Bereich links geklickt wird: # EndIf ;------------------------------|----/ dann zeichne das aktuelle Tile. # EndIf ;----------------------------------|--/ # EndIf ;--------------------------------------|/ # ;# # Else If Modus = 2 ; Wenn der "Message"-Modus aktiviert ist... # ;# # If Map_X < 21 And Map_X >= 1 ;---------------|\ # If Map_Y < 16 And Map_Y >= 1 ;-----------|--\ # If MouseHit(1) Then ;----------------|----\ # SetMessage();--------------------|------ Wenn im Karten-Bereich links geklickt wird: # EndIf ;------------------------------|----/ dann setze die Message. # EndIf ;----------------------------------|--/ # EndIf ;--------------------------------------|/ # ;# # EndIf ; Beendet auch diese Modus-Möglichkeit. # ;# # If KeyHit(31) Then SpeichereKarte() ; Wenn "S" gedrückt wird dann speichere die Karte. # ;# # If KeyHit(38) Then LadeKarte() ; Wenn "L" gedrückt wird dann lade die Karte. # ;# # If KeyHit(50) Then WechselModus() ; Wenn "M" gedrückt wird, wechsle den Modus. # ;# # DrawImage Cursor, X_, Y_ ; Zeichnet MEINEN ![]() ;# # Flip ; Tauscht die Buffer. # Cls ; Löscht den alten Bildschirm. # Wend ; Beendet die Hauptschleife (=While-Schleife). # End ; Beendet das Programm. # ; # ;##################################################################################################### ;#-------------------------------------------Funktionen----------------------------------------------# ;##################################################################################################### ;# # Function SpeichereKarte() ; Funktion um die Karte zu speichern. (Wird im Editor mit "S" aufgerufen.) # ;# # FileSave$ = RequestFile$("Karte Speichern:","abrmap", 1) ; Ermittelt die Datei mittels Dialog. # StreamSave = WriteFile(FileSave$) ; Öffnet die Datei für einen Schreibzugriff. # For X = 0 To 21 ;------------------------------------|\ # For Y = 0 To 16 ;--------------------------------|--\ # WriteInt StreamSave, MapArr(X,Y) ;-----------|----\ # Next ;-------------------------------------------|--/---\ # Next ;-----------------------------------------------|/-------\ # For X = 0 To 21 ;------------------------------------|\---------\ # For Y = 0 To 16 ;--------------------------------|--\---------\ # WriteInt StreamSave, DrüberGrafiken(X,Y) ;---|--------------\ # Next ;-------------------------------------------|--/-------------\ # Next ;-----------------------------------------------|/-----------------\ Speichert die Daten in # For X = 0 To 21 ;------------------------------------|\-----------------/ Der Datei. # For Y = 0 To 16 ;--------------------------------|--\-------------/ # WriteLine StreamSave, Messages$(X,Y) ;-------|--------------/ # Next ;-------------------------------------------|--/---------/ # Next ;-----------------------------------------------|/---------/ # For X = 0 To 21 ;------------------------------------|\-------/ # For Y = 0 To 16 ;--------------------------------|--\---/ # WriteLine StreamSave, Items$(X,Y) ;----------|----/ # Next ;-------------------------------------------|--/ # Next ;-----------------------------------------------|/ # ;# # End Function ; Beendet die Karte-Speichern-Funktion. # ;# # Function LadeKarte() ; Funktion um die Karte zu laden. (Wird im Editor mit "L" aufgerufen.) # ;# # FileLoad$ = RequestFile$("Karte Laden:","abrmap", 0) ; Ermittelt die Datei mittels Dialog. # StreamLoad = ReadFile(FileLoad$) ; Öffnet die Datei für einen Lesezugriff. # For X = 0 To 21 ;------------------------------------|\ # For Y = 0 To 16 ;--------------------------------|--\ # MapArr(X,Y) = ReadInt (StreamLoad) ;---------|----\ # Next ;-------------------------------------------|--/---\ # Next ;-----------------------------------------------|/-------\ # For X = 0 To 21 ;------------------------------------|\---------\ # For Y = 0 To 16 ;--------------------------------|--\---------\ # DrüberGrafiken(X,Y) = ReadInt(StreamLoad) ;--|--------------\ # Next ;-------------------------------------------|--/-------------\ # Next ;-----------------------------------------------|/-----------------\ Lädt die Daten aus # For X = 0 To 21 ;------------------------------------|\-----------------/ Der Datei. # For Y = 0 To 16 ;--------------------------------|--\-------------/ # Messages$(X,Y) = ReadLine(StreamLoad) ;------|--------------/ # Next ;-------------------------------------------|--/---------/ # Next ;-----------------------------------------------|/---------/ # For X = 0 To 21 ;------------------------------------|\-------/ # For Y = 0 To 16 ;--------------------------------|--\---/ # Items$(X,Y) = ReadLine(StreamLoad) ;---------|----/ # Next ;-------------------------------------------|--/ # Next ;-----------------------------------------------|/ # ;# # End Function ; Beendet die Karte-Laden-Funktion. # ;# # Function WechselModus() ; Funktion um den Modus zu wechseln. # ;# # Modus = Modus + 1 ; Modus wird um 1 erhöht. # If Modus >= 4 Then Modus = 0 ; Wenn Modus größer als 3 ist wird Modus wieder 0. # FlushKeys : FlushMouse ; # ;# # End Function ; Beendet die Wechsel-Funktion. # ;# # Function SetMessage() ; Funktion um eine Nachricht in die Karte einzutragen. # ;# # MsgDat$ = RequestFile$("Message-Datei: ", "txt", 0) ; Fragt den Datei-Pfad ab. # MsgDatID = ReadFile(MsgDat$) ; Erstellt einen Lesezugriff für die MsgDat$-Datei. # For X = 0 To 21 ; For Y = 0 To 16 Tex$ = ReadLine$(MsgDatID) ; Messages(X,Y) = Mid$(Tex$, 10) ; Next Next ;# # End Function ; Beendet die Setze-Nachricht-Funktion. # ;# # Function ShowModus() ; Funktion um den Aktuellen Modus anzuzeigen. # ;# # If Modus = 0 Then Text 712, 90, "Modus: Tile" ; Wenn Modus = 0 dann wird "Tile" angezeigt. # If Modus = 1 Then Text 712, 90, "Modus: Graf." ; Wenn Modus = 0 dann wird "Tile" angezeigt. # If Modus = 2 Then Text 712, 90, "Modus: Msg." ; Wenn Modus = 0 dann wird "Tile" angezeigt. # If Modus = 3 Then Text 712, 90, "Modus: Item" ; Wenn Modus = 0 dann wird "Tile" angezeigt. # ;# # End Function ; Beendet die Zeige-Modus-Funktion. # ;# # ;# # -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- So, das der Code so komisch aussieht tut mir leid und liegt daran das ich ihn in eine *.txt-Datei geschrieben und daraus ins Forum kopiert habe. Vielen Dank im vorraus. P.s.: Da ich nur ein 56k-Modem zu verfügung habe und meine Eltern mich nur kurz ins netz lassen ($) konnte ich meine wunderschönen ![]() Cu |
||
![]() |
Sparx |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sorry aber soeinen Code gucke ICH mir nicht an! Auch wen mein Programier stiel auch kagge sit, besser als das. Rueck den mal ein!
Und Was ist dabei eigentlich genau dein PROBLEM=?? |
||
User posted image |
newkev |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
zu dein erstes problem kann ich dir sagen benutz eine tile engine die eignet sich besser für sowas
tutorials gibts hier: http://www.robsite.de/tutorials.php?tut=blitzbasic |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group