Einmalige Schleife!

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Raiden93

Betreff: Einmalige Schleife!

BeitragDi, Aug 31, 2010 14:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo ich habe das Problem das ich nur Tutorials finde wo schleifen beschrieben wird und das die die ganze zeit durchlaufen aber nicht wie ich es hinkriege das es nur einmal durchläuft so gesagt das z.b etwas passiert ich aber auch 1 Punkt dafür kriege und nicht 100000Punkte in einer sekunde.

Tennisball

BeitragDi, Aug 31, 2010 14:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Benutze Flags (Variablen, die dir anzeigen, ob etwas schon passiert ist)

mfg,
Tennisball

ZaP

BeitragDi, Aug 31, 2010 14:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Suchst Du vielleicht If?
Starfare: Worklog, Website (download)
 

Omenaton_2

BeitragDi, Aug 31, 2010 16:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Sinn einer Schleife ist es, den Inhalt mehrmals ausführen zu lassen. Nur deshalb macht man überhaupt Schleifen.
Wenn du etwas nur 1 Mal machen willst, brauchst du keine Schleife dafür. Mach es einfach und fertig.

Silver_Knee

BeitragDi, Aug 31, 2010 16:35
Antworten mit Zitat
Benutzer-Profile anzeigen
@Omenaton_2 Rolling Eyes

Wenn du eine sache ein mal machen willst musst du die Bedingung stören, die das auslöste. zB wie Tennisball sagte mit ner Variable die dann an geht:
Code: [AUSKLAPPEN]
If Bedingung And Punkte_gegeben=0
  Punkte_gegeben=1
  ...
EndIf


oder die Bedingung selbst ausschaltest.
 

Omenaton_2

BeitragMi, Sep 01, 2010 9:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, aber die Abfrage einer Bedingung ist noch keine Schleife.
Ein "If Then Konstrukt" ist keine Schleife. For Next und Repeat Until, etc sind Schleifen.

Tennisball

BeitragMi, Sep 01, 2010 11:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist uns doch klar, Omenaton_2.
Ich denke mal Raiden will in sein Spiel (in der Hauptschleife) eine Abfrage machen, ob man z.B. an Ort xyz ist und dass dann Punkte gegeben werden. Aber eben nur einmal.
 

Omenaton_2

BeitragMi, Sep 01, 2010 12:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich sage sowas nur ungerne (ich will nicht kritisieren), aber die Frage ist zu undeutlich formuliert. Ich verstehe die Frage nicht.
In dem einzigen Satz sind locker 12+ Rechtschreibfehler und grammatikalische Fehler drin. Eine so formulierte Frage erschwert eine passende Antwort ganz erheblich.

Raiden93

BeitragMi, Sep 01, 2010 15:02
Antworten mit Zitat
Benutzer-Profile anzeigen
wird man hier diskriminiert oder weitergeholfen wie im Kindergarten hier ehrlich in meinem Buch steht das in diesem Forum mir weitergeholfen werden kann wenn ich mal nicht weiter kommen -.-!

Also ich habe ein Spiel das wie ein klassisches aufbau Browsergame aufgebaut ist.So man hat eine mauer wo Angreifer durch Zufall mal angreifen nur habe ich jetzt das Problem das nur ein Sound zu erkennen gibt wann man angegriffen wurde und da habe ich mir gedacht machst du mal einfach einen Text der dann angezeigt wird für sagen wir mal 5 Sekunden auch eingeblendet bleibt.Das Problem ist nur das ich den Text nicht mehr aus der schleife kriege das er nur 5Sekunden eingeblendet wird sondern für immer oder wenn alle 5 Sekunden .Ich weis zwar das ich was mit Millisecs machen muss aber mir fällt nach langem überlegen einfach nicht ein wie ich das Reallisieren kann :/ ich habe das Problem schon extra ein wenig bei Seite geschoben weil ich dachte vielleicht fällt mir ja später was ein aber erfolglos.

Hier der Link zu meinem Game:
http://rapidshare.com/files/41...ra_0.5.rar
Ich Persönlich finde mein Game schon recht Gut nur ich habe zur Zeit nicht viele Möglichkeiten wirklich das zu verwirklichen was ich möchte bin noch am Lernen...
Habe mir extra das Buch "Hack'n'Play - Spiele programmieren" gekauft.

Xeres

Moderator

BeitragMi, Sep 01, 2010 15:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Du wirst hier nicht diskriminiert, sondern kritisiert. Rechtschreibung, Grammatik und Interpunktion ist die Grundlage auf der wir Kommunizieren - wenn du wirklich Hilfe willst, nimm dir auch die Zeit sauber aus zu formulieren was du möchtest.
In Büchern kann viel stehen - es gibt hier kein Anrecht auf Hilfe - nur das freiwillige Angebot. Kann sein, dass du es nicht so meinst, aber es klang etwas fordernd...

Die Antworten die dir schon gegeben wurden, sollten dir eigentlich schon reichen - ich würde dir Raten, einen Type für Textnachrichten an zu legen die du eine bestimmte Zeit lang anzeigen lassen kannst und dann löschst du den Type-Eintrag wieder.
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)

ZaP

BeitragMi, Sep 01, 2010 15:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Also sowas wie Nachrichten würde ich, in der Annahme, dass mehrere in kurzer Zeit angezeigt werden können, in Types speichern, mit den Fields Nachricht und Einblendzeitpunkt.
Die Nachricht zeigst Du normal per Text an, und wenn Millisecs() - Einblendzeitpunkt >= 5000 ist, dann kannst Du die Nachricht wieder entfernen mit Delete.
Starfare: Worklog, Website (download)
  • Zuletzt bearbeitet von ZaP am Mi, Sep 01, 2010 15:15, insgesamt einmal bearbeitet

Hubsi

BeitragMi, Sep 01, 2010 15:14
Antworten mit Zitat
Benutzer-Profile anzeigen
In diesem Forum wird Dir sicher gerne weitergeholfen und ich sehe auch keine Diskrimierung, nur sollte auch die Frage konkret und korrekt gestellt sein. Das macht es dem Hilfesteller deutlich leichter dem Hilfesuchenden auch konkret und korrekt zu helfen. Zusammengefasst würde ich das mit Eigeninitiative umschreiben Wink Als Tip fürs nächste Mal: Word hat eine Rechtschreib und Grammatikprüfung. Da ist Copy & Paste gar nicht so verkehrt Mr. Green
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Raiden93

BeitragMi, Sep 01, 2010 15:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay ich werde es versuchen nur mein Deutsch ist ein wenig schwach.

Ich werde mir die Tipps zu mute nehmen nur ich verstehen das mit den Types und Dim Feldern noch nicht das ist auch wirklich das einzige was mir alles ein wenig Schwierig macht.
Ich habe mir zwar schon viele Tuts durchgelesen und in meinem Buch wird das auch nochmal beschrieben nur Kapiere ich das noch nicht ganz.Für mich sehen Types,Dim Felder aus wie eine liste aber warum sollte ich eine liste machen wenn ich mir einfach eine Funktion machen kann wo ich halt eine liste reinschreiben kann?.

Mein ganzes Spiel(Kongra) ist ohne 1 Types/Dim Feld.

Hubsi

BeitragMi, Sep 01, 2010 18:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Ein Beispiel für Types: Du hast eine unbestimmte Anzahl an Schüssen. Unbestimmt weil Du ja nicht wissen kannst wieviel der Spieler Schüsse im Spiel abgeben wird. Da drängen sich Types geradezu auf.

Ein Beispiel für ein Array (Dim): Eine Karte aus Tiles wie sie sehr oft in Jumpn Runs und dergleichen verwendet wird. Die Größe der Karte ist von vornherein klar und ändert sich nicht. Viele Informationen in einer "einzigen" Variable wenn man so will.

Wenn Du bisweilen Dein Projekt ohne diese beiden Arten der Informationsverwaltung erstellen konntest ist es recht, früher oder später kommst Du aber nicht drumherum Mr. Green
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

Omenaton_2

BeitragMi, Sep 01, 2010 18:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Es tut mir leid, daß du meine berechtigte kritische Anmerkung als "Diskriminierung" aufgefaßt hast. Ich habe es nicht schlecht gemeint. Wenn du solche Probleme mit der deutschen Sprache hast, dann schreib doch zur Not auf Englisch (oder lern Deutsch).

So geht das was du vorhast :

Code: [AUSKLAPPEN]
; Vorne definieren :

Global Meldung$ = ""
Global TMR_ErrorMeldung = MilliSecs()

;
; Wenn der Angriff statfindet und du die Meldung anzeigen willst, dann einmalig die Meldungausgabe initialisieren :
Meldung$ = "Du wirst angegriffen !"
ErrorMeldung =  MilliSecs()


; Dann kannst du in der Hauptschleife (oder von dort aus durch Gosub oder Function aufrufen) die Anzeige erledigen :

If ErrorMeldung$ <> "" Then

   Text 640, 400, ErrorMeldung$, True

   If TMR_ErrorMeldung + 5000 < MilliSecs() Then
        ErrorMeldung$ = ""
        TMR_ErrorMeldung = MilliSecs()
   Endif

Endif

Raiden93

BeitragMi, Sep 01, 2010 18:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich danke dir werde ich gleich mal ausprobieren bin nur gerade mit dem Angriff System beschäftigt^^

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group