Figur läuft aus der Karte raus

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Bassmaster

Betreff: Figur läuft aus der Karte raus

BeitragFr, Jan 18, 2008 11:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo ich hab folgendes Problem und zwar läuft meine Figur aus der Karte angenommen ich drücke die rechte pfeil taste dann läuft der soweit das ich den nicht mehr sehen kann.

Was muss man machen das der nicht aus meiner Sicht kommt ?

Smily

BeitragFr, Jan 18, 2008 11:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Am besten du setzt dich mal mit den Grundlagen der Programmierung auseinander:

www.robsite.de
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org
 

Bassmaster

BeitragFr, Jan 18, 2008 11:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Da hab ich mir dieses Jump and Run Tutorial runtergeladen aber da is alles irgendwie nur so knapp erklärt Confused


Code: [AUSKLAPPEN]

;Tutorial 1: Erstellen der Level
;-------------------------------
;In diesem Teil möchte ich erklären, wie Level erstellt und auf den Bildschirm
;gebracht wird. Zusätzlich habe ich noch einige Kommentare zu den Befehlen eingegeben.

Graphics 640,480   
      
SetBuffer BackBuffer()   
frametimer = CreateTimer (30)   ;Um das Spiel auf alle Rechnerkonfigurationen gleich schnell laufen
                           ; lassen, sollte man einen Zeitgeber setzen. 25 - 60 sind Empfehlenswert.
                           
ClsColor 0, 0, 255   ; Farbe, mit dem der Bildschirm gelöscht wird

;Gfx laden
Global tile = LoadImage ("tile2.bmp")
MaskImage tile, 255, 0, 255   ;Setzt die transparente Farbe auf Lila


;Kartendaten lesen
Dim map (20,15)   ;Karte definieren. Da die Karte später nach X und Y Koordinaten gezeichnet wird,
               ;2 dimensionanes Array

Restore mapdata   ;Setzt die Datazeilen von mapdata zurück
For y=0 To 14      ;Y = 15. Von 0 bis 14
   For x=0 To 19   ;X = 20.
      Read map(x,y)   ;Daten auslesen
   Next
Next


;Hauptschleife
Repeat
Cls                     ;Bildschirm löschen
WaitTimer (frametimer)   ;Den gewählten Zeitgeber warten

DrawMap()               ;Function Drawmap ausführen

Flip                  ;Bildschirm tauschen

Until KeyHit (1)
End


;Functionen
Function DrawMap()
   For y = 0 To 14
      For x = 0 To 19
         If map(x,y) = 1 Then            ;ist in dem genannten (x,y) Array eine 1 gemerkt,
            DrawImage tile, x*32, y*32   ;Grafik malen.
         EndIf
      Next
   Next
End Function 

;Die Koordinaten der Karte werden hier gelesen
.mapdata
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
[/code]

Smily

BeitragFr, Jan 18, 2008 12:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Ähm..

erstens: Wo wird hier eine SPielfigur gezeichnet?

zweitens:
Es geht nich darraum, den Code irgendwie auswendig zu lernen oder c&p zu machen.. Du musst ihn verstehen
den Werteberreich einer Variable zu begrenzen gehört mit zu dem Primitvsten dingen in der Programmierung.
Du musst wissen:
- wie du eine variable ausliest
- wie du einen if-befehl verwendest
- wie du eine variable setzt


cu,
Smily0412
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org
 

Bassmaster

BeitragFr, Jan 18, 2008 12:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Wieso Spielfigur Zeichen 0_o das is net mein Source Code der Code ist aus einem Tutorial von der Robsite hp

Mathias-Kwiatkowski

BeitragFr, Jan 18, 2008 12:48
Antworten mit Zitat
Benutzer-Profile anzeigen
also das sieht aus wie ein RPG code, und auf robsite gibt es mehrere. die ein stück für stück alles erklären, ich habe es selber daraus gelernt, brauchte nur ein wenig hilfe in der umsetzung in blitzmax, mhh such mal nach RPG in diesem forum, da sollten einige hilfen drin sein, ps. deine spielfigur läuft aus dem rand weil du mit sicherheit keine begrenzung drin hast oder die map scrollt nicht mit Wink das würde ich als erstes prüfen, wenn du noch genauere fragen hast mach mal PM habe einige RPG beispiele auf platte, schreib in der pm einfach mal deine icq oder msn nummer, bis dann.!

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Jan 18, 2008 13:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Bassmaster hat Folgendes geschrieben:
Hallo ich hab folgendes Problem und zwar läuft meine Figur aus der Karte angenommen ich drücke die rechte pfeil taste dann läuft der soweit das ich den nicht mehr sehen kann.


Bassmaster hat Folgendes geschrieben:
Wieso Spielfigur Zeichen 0_o das is net mein Source Code der Code ist aus einem Tutorial von der Robsite hp


Deine Aussage wiederspricht sich. Die Frage stellt sich nun: Was ist dein Problem? Wenn du ein Code mit einer Spielfigur hast, dann zeig uns diesen. Wenn du keinen hast, dann frage danach, wie man es am besten machen könnte, und nicht ''...und zwar läuft meine Figur aus der Karte...''.

Um dir denoch eine Hilfestellung zu geben:

- Nach deiner Beschreibung hast du bereits eine bewegte Figur. Von daher musst du den Wertebereich der entsprechenden Variable eingrenzen. So wie es Smily0412 schon sagte.

- Der Wertebereich kann anhand der Mapdaten errechnet oder auch per ewigen Annäherung angepasst werden.

- Im übrigen wird eine Spielfigur i.d.R. gegen eine Wand laufen, als auf freiem Feld abgegrenzt zu werden. Das heisst, du wirst früher oder später sicherlich eine Kollisionsabfrage machen ''müssen'' und somit auf eine Wertebereichseingrenzung verzichten können.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Bassmaster

BeitragFr, Jan 18, 2008 14:40
Antworten mit Zitat
Benutzer-Profile anzeigen
ok thx Mathias wenn ich nachher zuhause bin dann add ich dich mal.


@Hectic hier ist mein Source Code

Code: [AUSKLAPPEN]

Graphics 800,600,32,0



;bilder laden
SetBuffer BackBuffer()

Global runner = LoadAnimImage("runner.png" ,48,56,0,12)
Global sterne = LoadImage ("sterne.png")
Global boden  = LoadImage ("boden.png")
Global felsen = LoadImage ("felsen.png")

MaskImage runner ,255,255,255
MaskImage felsen ,255,255,255


Global move_runner,Player_pos_x ,Player_pos_y


controll()


   
   
;funktionen

Function controll()


Repeat

   ;figur bewegen
   ;--------------------------------------------------------------------------------------------------------------------------------------------
   If KeyDown(203) Then move_runner=move_runner-2   
   If KeyDown(205) Then move_runner=move_runner+2
   ;--------------------------------------------------------------------------------------------------------------------------------------------

   ;sterne bewegen
   ;--------------------------------------------------------------------------------------------------------------------------------------------
   If KeyDown(203) Then move_star = move_star +1  If move_star = 200 Then move_star = 1

   If KeyDown(205) Then move_star = move_star -1  If move_star = 200 Then move_star = 1   ;rechts laufen
   ;--------------------------------------------------------------------------------------------------------------------------------------------
   
   ;animation für die figur
   ;--------------------------------------------------------------------------------------------------------------------------------------------
   If KeyDown(203) Then If MilliSecs()-WarteZeit=>100 Then frame=frame+1 If frame=12 Then frame=1  WarteZeit=MilliSecs()
   If KeyDown(205) Then If MilliSecs()-WarteZeit=>100 Then frame=frame+1 If frame=12 Then frame=1  WarteZeit=MilliSecs()
   ;-------------------------------------------------------------------------------------------------------------------------------------


Cls

TileImage sterne,move_star,1
DrawImage runner,move_runner, 514, frame
DrawImage felsen, 230,517
DrawImage boden,0,567





Flip


Until KeyHit(1)
End Function
   
   
   
   
   


BladeRunner

Moderator

BeitragFr, Jan 18, 2008 16:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Jetzt guckst Du dir mal deine Beiden Zeilen an die du zur Bewegung benutzt und sagst mir dann mal was in diesen Zeilen geschieht. Erklär es mir Schritt für Schritt.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

The_Nici

BeitragFr, Jan 18, 2008 17:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Im Grunde genommen, Bassmaster, musst du ermitteln wann die Figur-X Koordinate grösser oder gleich der x-Grenze des Bildschirms ist.
ql:Graphicswidth() ermittelt die X-Breite deines Grafikfensters.
Nun, ist die Figur-x Koordinate grösser oder gleich die X-Breite des Bildschirms, setzt du sie wieder zurück.
Das gleiche kannst du mir der Breite 0 machen, nur, genau verkehrt herum.

Im allgemeinen wirkt es auf mich, als ob du nicht so gerne selber programmierst und nicht einen starken Durchsetzungswillen hast. Programmieren hat mir fleiss auch was gemeinsam. Man bekommt nicht ein MMORPG vor die Füsse geworfen. Wink

MfG

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group