Schlag Combos
Übersicht

![]() |
BB-FreakBetreff: Schlag Combos |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo liebes Forum,
Ich will, dass in meinem Spiel, sobald ich die Taste zum schlag drücke ein timer abläuft. Drückt man die Taste erneut inerhalb des timer kommt der nächste Schlag und es wird erneut ein timer gestartet ... Wie könnte das gehen ![]() Hat vlt. irgend jemand ne idee ![]() ![]() Freue mich sehr auf eure Antworten ![]() Euer BB-Freak ![]() |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
millisecs![]() |
||
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 |
![]() |
BB-Freak |
![]() Antworten mit Zitat ![]() |
---|---|---|
*sry funzt doch ![]() ![]() liegt irgendwie daran, dass das Bild nicht gemalt wird(Schlag 2) Hir der complette Code: Code: [AUSKLAPPEN] .Spieler_attackiert
If KeyHit(56) Then KeyHited=KeyHited+1 EndIf If keyHited=1 Then If MilliSecs() < Schlag_Timer + 3000 Then ; Else keyHited=0 Schlag_Timer=MilliSecs() EndIf EndIf Text 10,50,KeyHited If KeyHited=3 Then KeyHited=0 EndIf If KeyHited=2 Then If MilliSecs() < Schlag_Timer + 3000 Then ; Else keyHited=0 Schlag_Timer=MilliSecs() EndIf If Spieler_Attacke2_links=1 Or Spieler_Attacke2=1 Then Schlag2=1 EndIf Text 10,80,"Schlag2!" Spieler_Attacke2_links=0 Spieler_Attacke2=0 If Spielersteht=2 Then Spieler_Attacke_links=1 Else Spieler_Attacke=1 EndIf EndIf If KeyHited=1 Then Text 10,65,"Schlag1!" If Spielersteht=2 Then Spieler_Attacke2_links=1 Else Spieler_Attacke2=1 EndIf EndIf If Schlag2=1 Then If Spieler_Attacke2_links=0 Or Spieler_Attacke2=0 Then If Spielersteht=2 Then Spieler_Attacke_links=1 Else Spieler_Attacke=1 EndIf Schlag2=0 EndIf EndIf If Spieler_Attacke2_links Then Spieler_Attacke2=False Spieler_Attacke1=False Spieler_Attacke1_links=False SpielerSpringt=False Spielergehtrechts=False Spielergehtlinks=False Spielersteht=False If MilliSecs() > tmrSp_attacke2_links + 150 Then tmrSp_attacke2_links = MilliSecs() frmSp_attacke2_links = (frmSp_attacke2_links + 2) Mod 7 EndIf If frmSp_attacke2_links=6 Then Spieler_Schlag=Spieler_Schlag+1 Timer=True Spieler_Attacke2_links=False Spielersteht=2 EndIf If ItemId_Waffen_Schwert=1 Then DrawImage Spieler_attackiert2_nurUebungsKatana_links,Sp_X#-45,Sp_Y#-3,frmSp_attacke2_links If Inventargeoffnet Then UebungsKatana_Ausgeruestet=True Else UebungsKatana_Ausgeruestet=False EndIf EndIf If ItemId_AusruestungBeine=0 Then DrawImage Spieler_attackiert2_nurBeine_links,Sp_X#-45,Sp_Y#-3,frmSp_attacke2_links EndIf If ItemId_AusruestungBeine=1 Then ; EndIf If ItemId_AusruestungGuertel=0 Then DrawImage Spieler_attackiert2_nurGuertel_links,Sp_X#-45,Sp_Y#-3,frmSp_attacke2_links EndIf If ItemId_AusruestungOberkoerper=0 Then DrawImage Spieler_attackiert2_nurOberkoerper_links,Sp_X#-45,Sp_Y#-3,frmSp_attacke2_links EndIf If ItemId_AusruestungKopf=0 Then DrawImage Spieler_attackiert2_nurKopf_links,Sp_X#-45,Sp_Y#-3,frmSp_attacke2_links EndIf EndIf If Spieler_Attacke2 Then Spieler_Attacke2_links=False Spieler_Attacke1=False Spieler_Attacke1_links=False SpielerSpringt=False Spielergehtrechts=False Spielergehtlinks=False Spielersteht=False If MilliSecs() > tmrSp_attacke2 + 150 Then tmrSp_attacke2 = MilliSecs() frmSp_attacke2 = (frmSp_attacke2 + 2) Mod 7 EndIf If frmSp_attacke2=6 Then Spieler_Schlag=Spieler_Schlag+1 Timer=True Spieler_Attacke2=False Spielersteht=3 EndIf If ItemId_Waffen_Schwert=1 Then DrawImage Spieler_attackiert2_nurUebungsKatana,Sp_X#,Sp_Y#-3,frmSp_attacke2 If Inventargeoffnet Then UebungsKatana_Ausgeruestet=True Else UebungsKatana_Ausgeruestet=False EndIf EndIf If ItemId_AusruestungBeine=0 Then DrawImage Spieler_attackiert2_nurBeine,Sp_X#,Sp_Y#-3,frmSp_attacke2 EndIf If ItemId_AusruestungBeine=1 Then ; EndIf If ItemId_AusruestungGuertel=0 Then DrawImage Spieler_attackiert2_nurGuertel,Sp_X#,Sp_Y#-3,frmSp_attacke2 EndIf If ItemId_AusruestungOberkoerper=0 Then DrawImage Spieler_attackiert2_nurOberkoerper,Sp_X#,Sp_Y#-3,frmSp_attacke2 EndIf If ItemId_AusruestungKopf=0 Then DrawImage Spieler_attackiert2_nurKopf,Sp_X#,Sp_Y#-3,frmSp_attacke2 EndIf EndIf If Spieler_Attacke1 Then Spieler_Attacke1_links=False SpielerSpringt=False Spielergehtrechts=False Spielergehtlinks=False Spielersteht=False If MilliSecs() > tmrSp_attacke + 200 Then tmrSp_attacke = MilliSecs() frmSp_attacke = (frmSp_attacke + 1) Mod 7 EndIf If frmSp_attacke=6 Then Spieler_Attacke1=False Spielersteht=3 EndIf If ItemId_Waffen_Schwert=1 Then DrawImage Spieler_attackiert1_nurUebungsKatana,Sp_X#,Sp_Y#,frmSp_attacke If Inventargeoffnet Then UebungsKatana_Ausgeruestet=True Else UebungsKatana_Ausgeruestet=False EndIf EndIf If ItemId_AusruestungBeine=0 Then DrawImage Spieler_attackiert1_nurBeine,Sp_X#,Sp_Y#,frmSp_attacke EndIf If ItemId_AusruestungBeine=1 Then ; EndIf If ItemId_AusruestungGuertel=0 Then If frmSp_attacke=3 Then DrawImage Spieler_nurGuertel,Sp_X#+2,Sp_Y# ElseIf frmSp_attacke=4 Then DrawImage Spieler_nurGuertel,Sp_X#+5,Sp_Y#+1 Else DrawImage Spieler_nurGuertel,Sp_X#,Sp_Y# EndIf EndIf If ItemId_AusruestungOberkoerper=0 Then DrawImage Spieler_attackiert1_nurOberkoerper,Sp_X#,Sp_Y#,frmSp_attacke EndIf If ItemId_AusruestungKopf=0 Then If frmSp_attacke=2 Or frmSp_attacke=4 Then DrawImage Spieler_nurKopf,Sp_X#+2,Sp_Y#+1 ElseIf frmSp_attacke=3 Then DrawImage Spieler_nurKopf,Sp_X#+5,Sp_Y#+1 Else DrawImage Spieler_nurKopf,Sp_X#,Sp_Y# EndIf EndIf EndIf If Spieler_Attacke1_links Then Spieler_Attacke1=False SpielerSpringt=False Spielergehtrechts=False Spielergehtlinks=False Spielersteht=False If MilliSecs() > tmrSp_attacke_links + 200 Then tmrSp_attacke_links = MilliSecs() frmSp_attacke_links = (frmSp_attacke_links + 1) Mod 7 EndIf If frmSp_attacke_links=6 Then Spieler_Attacke1_links=False Spielersteht=2 EndIf If ItemId_Waffen_Schwert=1 Then DrawImage Spieler_attackiert1_nurUebungsKatana_links,Sp_X#-45,Sp_Y#,frmSp_attacke_links If Inventargeoffnet Then UebungsKatana_Ausgeruestet=True Else UebungsKatana_Ausgeruestet=False EndIf EndIf If ItemId_AusruestungBeine=0 Then DrawImage Spieler_attackiert1_nurBeine_links,Sp_X#-45,Sp_Y#,frmSp_attacke_links EndIf If ItemId_AusruestungBeine=1 Then ; EndIf If ItemId_AusruestungGuertel=0 Then DrawImage Spieler_attackiert1_nurGuertel_links,Sp_X#-45,Sp_Y#,frmSp_attacke_links EndIf If ItemId_AusruestungOberkoerper=0 Then DrawImage Spieler_attackiert1_nurOberkoerper_links,Sp_X#-45,Sp_Y#,frmSp_attacke_links EndIf If ItemId_AusruestungKopf=0 Then DrawImage Spieler_attackiert1_nurKopf_links,Sp_X#-45,Sp_Y#,frmSp_attacke_links EndIf EndIf |
||
![]() |
Blitzprogger |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sieht aus als ob du ein GoTo benützen würdest. Mache das in Zukunft am besten nicht mehr. GoTo ist böse und schadet der Übersichtlichkeit des Programms.
mfg, Blitzprogger |
||
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/
Unfreiwilliger Gewinner des BAC# 115. ![]() |
![]() |
BB-Freak |
![]() Antworten mit Zitat ![]() |
---|---|---|
![]() Wenn dass mit BB wirklich nicht funzt, gibt es dann Alternativen(ich find den Befehl nähmlich ganz geschickt ![]() |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Goto neigt dazu den Code zu einem wüsten Haufen Spagetti verkommen zu lassen. Deswegen sollte man es vermeiden. function![]() Im Prinzip sind fast alle Befehle von Blitzbasic Funktionen. |
||
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 |
![]() |
BB-Freak |
![]() Antworten mit Zitat ![]() |
---|---|---|
gibt es trotzdem einen Grund warum das Bild von Schlag2 nicht gezeigt wird oder hängt das mit GoTo zusammen. | ||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Gewöhne dir Funktionen an ![]() ![]() Das hat zum einen den Vorteil, dass der Gültigkeitsraum vom Rest getrennt ist, macht den Code wiederverwendbar und mit GoTo kannst du kein Projekt so strukturieren, dass du weißt, wann was passiert. Und wir hier schon gar nicht. Soll heißen: Zu Code mit GoTo kannst du keine große Hilfe erwarten. Mehr zum Problem: Die ganzen Einzel-Variablen halte ich für irrsinn, dass lässt sich weder einfach durchschauen, noch erweitern. Ich würde jedem Spieler einen Queque für Tastendrücke geben, ältere löschen, neue hinzufügen, und bei bestimmten Mustern Spezial-Attacken starten. |
||
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
BB-Freak |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja ähm ![]() also ich blicke in meinem Prog. ganz gut durch ![]() Naja wenn mein code zu komplex und unstruckturiert ist muss ich mich wohl alleine an die stundenlange Fehlersuche machen. Außerdem wie kann ich GoTo(also das springen von einer Schleife in die andere) mit einer Funktion beschreiben ? |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
A) Exit![]() B) Function ![]() ![]() Ich hab' keinen kritischen Wert Code/GoTo parat, bei dem man nicht mehr durchschaut - aber mach mal eine Zeit Pause am Projekt und versuch dann weiter zu arbeiten ![]() |
||
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
BB-Freak |
![]() Antworten mit Zitat ![]() |
---|---|---|
äh also grade sprüh ich leider nur so vor Arbeitslust und ich habe schon 2Wochen Pause hinder mir ![]() Ich finde den Fehler nur einfach nicht ![]() ![]() |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich schaff es z.B. schon mal nicht Schlag2 mit dem dazu gehörigen Bild zu finden. Variablen wie..
Code: [AUSKLAPPEN] ItemId_AusruestungOberkoerper
Spieler_attackiert2_nurOberkoerper ...schreien geradezu danach, in einem Type ![]() Hilfsvariablen wie Code: [AUSKLAPPEN] Spielergehtrechts=False
Spielergehtlinks=False Spielersteht=False könnte man in eine Variable zusammenschmelzen. Und wenn dann alles hübsch kurz & geordnet ist, kann man auch leichter durchsehen, was denn da eigentlich passiert. |
||
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
BB-Freak |
![]() Antworten mit Zitat ![]() |
---|---|---|
![]() jope die Variablen Oberkörper.. usw. sind die bezeichnung dafür, welches Item der Spieler gerade anhatt ![]() ![]() Nur leider muss ich ins Bett hab Morgen Schule ![]() Und außerdem weiß ich nicht wie ![]() ![]() |
||
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Gut gemeinter Ratschlag,
Lerne zuerst Programmieren, also auch wie man mit Types&Funktionen umgeht, wie man sauber Programmiert usw. Und dann wage dich an ein Spiel, du wirst sehen du wirst viel weniger fustriert sein ![]() grüsse |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Aus deiner Anfrage werde ich nicht schlau. Wo ist in deinem Code das von dir genannte Bild "Schalg2". Ich sehe auch das GOTO nicht, von dem die anderen sprechen. Ist das wirklich der gesamte Code? Wo ist die Hauptschleife, wo das FLIP?
mein Ratschlag wäre, die Kapitel I bis IV meines "Programm-Ablauf-Tutorial" mal durchzulesen https://www.blitzforum.de/foru...hp?t=33584 das ist genau, was du jetzt brauchst! Du scheinst mit viel Engagement an die Sache ran zu gehen und baust das Ganze auch schon sehr komplex auf. Allerdings wird der Code damit immer sehr schnell unbeherschbar. Vor allem dann, wenn es um die Fehlersuche geht. Das ist der Hauptfehler bei den ersten Spielen, die man schreibt: Man überläd sie mit zu vielen Zusatz-Features und bringt dabei das eigentliche Programm noch gar nicht zum Laufen. Dabei gilt eigentlich: Wer es schafft die Figur mit einem Feature auszurüsten, der kann später endlos weitere Feature hinzufügen. Erstes und wesentliches Ziel deines ersten Programms sollte es sein, die Figur so auf den Bildschirm zu bringen, dass sie schon mal vor dir steht. Zweiter Schritt ist, das sie auf erst mal einen (EINEN) Tastendruck mit irgendwas reagiert. z.b. auf die RETURN-Taste ein Ausrüstungsgegenstand dazukommt und beim nächsten Druck wieder wegkommt. Dafür benötigst Du schon eine REPEAT-Schleife. 1.Schritt für dich ist es jetzt zu überlegen: Was gehört |
||
![]() |
BB-Freak |
![]() Antworten mit Zitat ![]() |
---|---|---|
![]() ![]() sry Firefox stürtzt ab wenn ich code rein kopiere ![]() Tja so ist das Leben und... ![]() ![]() ![]() ![]() ![]() äh ihr denk also das die .Irgendwas was mit GoTo zu tun haben ? ![]() hab nur sehr wenige und unkomplizierte GoTo's verwendet um zB zum Menü zurück zu gelangen ![]() ![]() ![]() ![]() |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
danke für den Gesamtcode, jetzt kann ich mir besser ein Eindruck verschaffen.
Also "Lesen des Tutorials" alleine reicht leider nicht. Man soll es auch verstanden haben... und umsetzen! Jetzt zunächst ein vernichtendes Urteil über deinen Code: Da ist zu wenig Struktur drin. Vieles was sich in 5 Zeilen schreiben liese, benötig bei Dir 50 Zeilen! So wirst Du NIEMALS an dein Ziel "lauffähiges Spiel" kommen. Ich werde mal den Code die nächsten 10 Minuten durchchecken und Dich auf einige Möglichkeiten der Strukturierung aufmerksam machen. Bitte nutze diese Chance und gestalte dann den Code um und schreibe in Zukunft nur noch strukturierter. Bis gleich.... |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
also das Bilderladen kommt mal gleich in ein zweites BB, ebenso wie die bereits 100% getesteten Funktionen:
BlitzBasic: [AUSKLAPPEN] Graphics 640,480,0,2 anschließend folgen alle Startup-Variablen, die TYPE-Deklarationen an einer gemeinsamen Stelle. Variablen, die Du mehr als 5x brauchst, werden ein ARRAY: BlitzBasic: [AUSKLAPPEN] Dim Bx#(20) Der Vorteil liegt im Kürzen des Codes, wenn sie alle mit Werten bestückt oder einmal abgefragt werden müssen. Das spart hier 15 fast gleiche Zeilen und dann natürlich auch bei den vielen WriteInt und ReadInt-Stellen ebenso. Gleich mal zu deinen Datei-Zugriffen: da machst Du an mehreren Stellen im code immer wieder fast das gleiche. So was löst Du mit einer Funktion. 1x schreiben und dann nur noch immer wieder aufrufen: BlitzBasic: [AUSKLAPPEN] JetzSaven Sp\Name$ Das spart dir mind 300 Zeilen Code! Dann hast du sehr viele Mal-Stellen im Programm-Code. Glieder auch die aus in eine Funktion, verlege diese auf die "Funktionen.BB" und ruf dann an der alten Stelle nur die Funktion auf: BlitzBasic: [AUSKLAPPEN]
Jetzt mal zu den KeyHit[]s. So wird es kürzer und an mehreren Stellen nutzbar: BlitzBasic: [AUSKLAPPEN]
So jetzt mal was zu den ewig vielen fast gleichen Zeilen mit DrawImage, ähnlich dieser hier: Code: [AUSKLAPPEN] If slotInventar\ItemId=1 Then
DrawImage TP_Trank_klein,SlotInventar\x,SlotInventar\y EndIf If SlotInventar\ItemId=2 Then DrawImage MP_Trank_klein,SlotInventar\x,SlotInventar\y EndIf If slotInventar\ItemId=3 Then DrawImage TP_Trank_Mittel,SlotInventar\x,SlotInventar\y EndIf If SlotInventar\ItemId=4 Then DrawImage MP_Trank_Mittel,SlotInventar\x,SlotInventar\y EndIf If slotInventar\ItemId=5 Then DrawImage TP_Trank_Gross,SlotInventar\x,SlotInventar\y EndIf If SlotInventar\ItemId=6 Then DrawImage MP_Trank_Gross,SlotInventar\x,SlotInventar\y EndIf If SlotInventar\ItemId=7 Then DrawImage Geschwindigkeits_Trank_Klein,SlotInventar\x,SlotInventar\y EndIf If SlotInventar\ItemId=8 Then DrawImage Geschwindigkeits_Trank_Mittel,SlotInventar\x,SlotInventar\y EndIf Das änderst Du am besten so ab: BlitzBasic: [AUSKLAPPEN] Select slotInventar\ItemId So, das sind jetzt eine Menge Anregungen für das Umbauen Deines Codes. Wenn Du das jetzt umsetzt, zeige ich Dir wie zu es auf eine REPEAT/UNTIL-Schleife zusammenstauchst. Erst damit wird es zum Spiel. Hier noch eine Zugabe für deine Itembeschreibung, die ebenfalls mehrmals vorkommt: BlitzBasic: [AUSKLAPPEN] ItemBeschreibung() |
||
![]() |
BB-Freak |
![]() Antworten mit Zitat ![]() |
---|---|---|
![]() ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group