Welche Schleife passt am besten?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Sereyanne

Betreff: Welche Schleife passt am besten?

BeitragDi, März 25, 2008 17:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
ich habe schon wieder ein kleines Problem. Ist ja nicht so dass ich nicht mit Schleifen umgehen könnte. Aber scheinbar nicht gut genug.
Ein blödsinniger Code, zum leichten Verständnis meines Problems:
Code: [AUSKLAPPEN]
Function Menu()
Repeat
Flip 0
ClsColor 0,0,0
Cls
pfeil=LoadImage("gfx/pfeil.bmp")
MaskImage pfeil,0,0,0
DrawImage pfeil, 220,180
Text 270,20, "Menü"
Text 270,180, "Items"
Text 270,220, "Speichern"
Text 270,260, "Beenden"

If KeyHit(208) Then
Rect 220,180,40,40
DrawImage pfeil,220,220
EndIf

Until KeyHit(menu)
ClsColor 29,88,15
FlushKeys
End Function

So geht es jedenfalls nicht dass die If-Bedingung abgefragt wird. Mit While/Wend irgendwie auch nicht.
welche schleife eignet sich dafür und wie funktioniert es?
bitte helft mir....
 

ChristianK

BeitragDi, März 25, 2008 17:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Bilder niemals innerhalb einer Schleife laden! Confused
Es wäre auch ganz gut, wenn du dein Problem etwas genauer beschreibst. In Schleifen werden nur Dinge wiederholt, das hat mit If-Bedingungen nichts zu tun.
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT

The_Nici

BeitragDi, März 25, 2008 18:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]


Until KeyHit(menu)


Ich hoffe mal "mneu" ist eine vordefinierte Variable.
Keyhit=Tastaturkeys

Xeres

Moderator

BeitragDi, März 25, 2008 18:01
Antworten mit Zitat
Benutzer-Profile anzeigen
KeyHit(208) trifft nur dann zu, wenn du auf die Taste drückst, also im Millisekundenbereich. Endweder Keydown benutzen oder eine variable die die anzeige steuert.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Sereyanne

BeitragDi, März 25, 2008 18:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Bilder niemals innerhalb einer Schleife laden!

Ok sorry ich wollte das bild nicht global deklarieren weil ich es nur in dieser funktion brauche.

Zitat:
Es wäre auch ganz gut, wenn du dein Problem etwas genauer beschreibst.

Ich dachte eigentlich mein Code wäre selbsterklärend. Also ich versuche ein Pausenmenü zu coden, in dem man die Möglichkeit hat, Items auszuwählen, zu speichern oder das Spiel zu beenden. Ich kriege nur diesen Pfeil nicht bewegt.

Zitat:
Ich hoffe mal "mneu" ist eine vordefinierte Variable.

Ja klar. Das hab ich mittlerweile gelernt ^^
Code: [AUSKLAPPEN]
Const reden = 30, menu=28, abbruch=14


und mit keydown verschwindet der pfeil wieder wenn ich die taste loslasse!
 

Shark

BeitragMi, März 26, 2008 0:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
Code: [AUSKLAPPEN]

Function Menu()
pfeil=LoadImage("gfx/pfeil.bmp")
MaskImage pfeil,0,0,0
Repeat
local mx% = MouseX(), my% = MouseY()
ClsColor 0,0,0
Cls
DrawImage pfeil, mx,my
Text 270,20, "Menü"
Text 270,180, "Items"
Text 270,220, "Speichern"
Text 270,260, "Beenden"

If KeyHit(208) Then
Rect 220,180,40,40
DrawImage pfeil,220,220
EndIf
Flip 0
Until KeyHit(menu)
ClsColor 29,88,15
FlushKeys
End Function


Ich hab mal dein Code bissel geändert.
Und zwar das Laden vom Pfeil und maskieren vor der Schleife.
Und falls du den Pfeil mit der Mouse bewegen willst, dann hättest
du einfach das Bild auf MouseX() und MouseY() zeichnen soll.
So was mir nur schleierhaft ist, ist dieser Teil:
Code: [AUSKLAPPEN]

If KeyHit(208) Then
Rect 220,180,40,40
DrawImage pfeil,220,220
EndIf

Was willst du damit bezwecken Question

mfg Shark

Sereyanne

BeitragMi, März 26, 2008 9:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Was willst du damit bezwecken

Das war einfach nur ein blöder Code als Platzhalter. Soll bezwecken dass der Pfeil durch ein schwarzes Rechteck übermalt wird und an anderer Stelle erscheint. Hab ich aber schon durch einen vernünftigen Bewegungscode, ähnlich dem meiner Spielfigur, ersetzt.

Danke für den Code, aber eigentlich wollte ich ohne die Maus arbeiten.

Silver_Knee

BeitragMi, März 26, 2008 10:49
Antworten mit Zitat
Benutzer-Profile anzeigen
du willst das etwas an und danach wieder aus geht:
zustand=NOT zustand;zustand wird immer zu dem was er vorher nicht war:

Code: [AUSKLAPPEN]
If Keyhit(...)
 zustand=not zustand
Endif

If zustand
 ...
Endif

Thorsten

BeitragMi, März 26, 2008 11:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Xeres hat Folgendes geschrieben:
KeyHit(208) trifft nur dann zu, wenn du auf die Taste drückst, also im Millisekundenbereich. Endweder Keydown benutzen oder eine variable die die anzeige steuert.

Falsch, KeyHit ist solange gültig bis es abgefragt oder FlushKeys() angewandt wird.

mfG,

Thorsten

Sereyanne

BeitragMi, März 26, 2008 12:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke @Thorsten.
Hatte mich schon gewundert... Ich kann doch nicht den Knopf andauernd gedrückt halten müssen. Außerdem klappt es mit Keyhit wunderbar.

Mein Problem hat sich mit einem vernünftigen Steuerungscode gelöst. Danke an alle!!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group