Hintergrund

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite Zurück  1, 2, 3

Neue Antwort erstellen

BladeRunner

Moderator

BeitragDi, Feb 27, 2007 18:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Das geht so nicht, denn Keydown liefert dir zurück OB eine Taste gedrückt wurde. Du kannst damit nicht das Drücken negieren.
Wenn Du Teile deines Codes abhängig vom Tastendruck und vom Inhalt von wert machen willst musst du den Bedingungsteil deiner IF anpassen:
pseudocode:
Code: [AUSKLAPPEN]
if Taste gedrückt UND wert = dies Then
    mach das
elseif Taste Gedrückt Und wert > das und wert < dies then
    mach jenes
else
    mach sonstwas
endif


Du kannst also Bedingungen verknüpfen.
Wenn dir das zu kompliziert ist kannst du sie auch Verschachteln, das gibt mehr Text, ist aber übersichtlicher:

Code: [AUSKLAPPEN]
if taste Gedrückt then
    if wert = dies then
        tu das
    else
        tu jenes
    endif
else
    if wert = dies
        mach was neues
    else
         machwasduwillst
    endif
endif
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

viper199

BeitragDi, Feb 27, 2007 18:20
Antworten mit Zitat
Benutzer-Profile anzeigen
ok nur wie bring ich dann bei then den dazu das er stehen bleibt und das auch wirklich in alle richtungen?

Bei:

ImagesCollide(player,player_x,player_y,0,wasserbg,1,1,0) player_x=player_x+0 , player_y=player_y+0

passiert gar nichts also er kann weiterhin über die inseln fahren, was ja auch logisch ist, da die vorige kordinate ja auch nicht geändert wird weil sie ja um 0 geändert wird.

bei:

ImagesCollide(player,player_x,player_y,0,wasserbg,1,1,0) player_x=player_x+1 , player_y=player_y+1

prallt das schidd ab, doch von einer bestimmten seite wird das Schiff dann sogar bei einer Kollision über die Insel getragen.

Deswegen muss es eine andere Möglichkeit geben, doch wie ist die?

BladeRunner

Moderator

BeitragDi, Feb 27, 2007 18:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Du speicherst, bevor Du deine Figur bewegst, ihre aktuellen Koordinaten ab. Dann bewegst Du. Sollte es zu einer Kollision kommen setzt Du die Koordinaten auf die gespeicherten zurück.
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

viper199

BeitragDi, Feb 27, 2007 18:53
Antworten mit Zitat
Benutzer-Profile anzeigen
soweit war ich auch schon ^^ Laughing

BladeRunner

Moderator

BeitragDi, Feb 27, 2007 18:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann mach es genauso.
Ich werde Dir keinen fertigen Code liefern, denn dann lernst Du nichts.
Was ist an: koordinaten speichern, gehen, nach kollision alte Koordinaten wieder nehmen so kompliziert ?
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

viper199

BeitragDi, Feb 27, 2007 19:07
Antworten mit Zitat
Benutzer-Profile anzeigen
das ist so kompliziert weil ich keine ahnung habe wie ich die kordinate speicher Sad
 

FBI-blitz

BeitragDi, Feb 27, 2007 22:08
Antworten mit Zitat
Benutzer-Profile anzeigen
weißt du nicht, wie man ner Variable nen Wert zuweist? So kannst du ganz eifnach die Koordinaten speichern.
Computer 1: AMD Athlon64 3500+ | nVidia GF 7900GT | 1024 MB DDR-RAM | ASUS A8N-SLI Preimium | 250 GB SATA 2 || WindowsXP | Blitz3D | Blitz+
Computer 2: AMD AthlonXP 2400+ | ATI Radeon 9500 | 512 MB DDR-RAM | MSI K7N2 | 80 GB IDE | 160 GB IDE || WindowsXP | Blitz3D | Blitz+
Computer 3: Intel Pentium MMX | onBoard-Grafik | 32 MB RAM | 1 GB IDE || Windows 98 SE | Blitz+

BladeRunner

Moderator

BeitragMi, Feb 28, 2007 15:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Rolling Eyes
Code: [AUSKLAPPEN]
x = 15 ; jetzt steht 15 in x
x_alt = x ; jetzt steht 15 in x und x_alt
x = 345 ; rate mal was nun in x steht und was in x_alt ? (Bingo: 345 in x und 15 in x_alt
x = x_alt ; und nu ist x wieder auf 15.

Noch Fragen ?
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

viper199

BeitragMi, Feb 28, 2007 15:55
Antworten mit Zitat
Benutzer-Profile anzeigen
hehe hab ne einfachere version gefunden xD

If KeyDown(203) Then

player_x=player_x-2

If player_x<0 Then player_x=0
player=LoadImage("left.bmp")

If ImagesCollide(player,player_x,player_y,0,wasserbg,1,1,0) Then player_x=player_x+2

EndIf

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Feb 28, 2007 16:00
Antworten mit Zitat
Benutzer-Profile anzeigen
player=LoadImage("left.bmp") in einer Schleife die immer wieder aufgerufen wird, ist nicht grad sinnvoll. Laden von Bildern und sonstigem, sollte nur einmal im Code durchgeführt werden.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

viper199

BeitragDo, März 01, 2007 16:51
Antworten mit Zitat
Benutzer-Profile anzeigen
ja stimmt Shocked
ich habs nur da vergessen gehabt raus zu bauen Rolling Eyes

vielen Dank an alle hier =)
PS: das mit den variablen mach ich zwischendurch mal Wink

Gehe zu Seite Zurück  1, 2, 3

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group