hilfe bei einer Programmierung
Übersicht

![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Beispiel:
Code: [AUSKLAPPEN] Repeat
Gosub test Gosub test2 Delay(100) Until KeyHit (1) .test Print "ich bin die uhr und mache was ne uhr so macht.... tick tack" Return .test2 x=x+1 Print "ich Bin ne schleife und schon "+x+" mal durchlaufen" Return test und test 2 sind getrennt voneinander, werden aber beide in der Hauptschleife aufgerufen und daher beide bearbeitet. Damit also Codes "scheinbar" simultan laufen musst du sie so aufbauen dass die schleife in der sie laufen die Hauptschleife ist. Dazu würde ich persönlich jedoch zu ql:function raten. Gosub geht, aber Funktionen sind besser gekapselt (das heisst sie haben ihren eigenen Variablenraum, was oft sehr sinnig ist). |
||
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 |
SNIPER |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
gut des hab ich jetzt eingesetzt aber jetzt wegselt des die ganze zeit und die uhr taucht nur auf aber zählt nicht die tore fallen wenn ich die tastn drücke aber sie bleiben nicht stehn
Code: [AUSKLAPPEN] Repeat
Gosub test Gosub test2 Delay(100) Until KeyHit (1) .test Graphics 1420,300 ClsColor 0,0,0 Color 23,26,87 schrift = LoadFont("calibri",120,1) SetFont schrift start = MilliSecs() SetBuffer BackBuffer() Repeat Cls time = MilliSecs()-start sec = time / 1000 min = time / 60000 sec=sec-(minuten*60) If sec<10 Then sec3$="0"+sec Else sec3$=sec EndIf If min<10 Then min2$="0"+min Else min2$=min EndIf Text 20,35,"Zeit: " + min2+ ":" + sec3+ ":" + Mid(time,(Len(sec)+1),2) Flip Return Until KeyHit(1) End .test2 Graphics 1420,300 ClsColor 0,0,0 Color 23,26,87 font1=LoadFont("calibri",120,0,0,0) font2=LoadFont("calibri",50,0,0,1) For t = 1 To 5400 A=GetKey() tor = LoadSound("tooor.wav") SetFont font2 If A=103 Then Rect 70,210,130,20 Rect 70,90,130,20 Rect 70,120,20,80 Rect 180,120,20,80 Rect 1000,60,10,45 Rect 1110,60,10,45 Rect 1000,50,120,10 Oval 1120,200,30,30 Oval 1120,200,30,30 Oval 1118,198,30,30 Oval 1000,100,30,30 PlaySound tor Text 100,250, "Die Gastmannschaft hat ein Tor geschossen" EndIf If A=104 Then Rect 570,210,130,20 Rect 570,90,130,20 Rect 570,120,20,80 Rect 680,120,20,80 PlaySound tor Text 100,250, "Die Heimmannschaft hat ein Tor geschossen" EndIf SetFont font1 falsch = LoadSound ("tooor.wav") If A=103 Then x=x+1;G If A=104 Then y=y+1;H If A=116 Then x=x-1;T If A=116 Then PlaySound falsch If A=122 Then y=Y-1;Z If A=122 Then PlaySound falsch SetFont font1 ; der geladene Font kommt zum Einsatz Text 100,100,x Text 350,100,":" ; Text funktioniert wie Print+Locate Text 600,100,y Delay 1000 Cls Return Next |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Weil Test und Test2 bei dir immer noch komplette Schleifen sind und du das ganze ganz offensichtlich nicht verstanden hast. | ||
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 |
SNIPER |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
leider bin ich da nicht sehr gut drin und vllt kannst du mir ja auch einfach in meiner programmierung zeigen wie und wo ich das hin schreiben muss | ||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sorry, aber nein, denn wenn ich Dir den ganzen Code schreibe ist der Lerneffekt für dich gleich Null. Du hast ja einfach meinen Code kopiert (selbst das delay welches ich nur für den Vorführeffekt drinhatte) und ihn blind versucht. So klappt das einfach nicht.
Wenn Du sie noch nicht hast, besorg dir die deutsche Onlinehilfe, dort sind alle Befehle drin und reichlich Beispiele dazu. Das adaptieren an deine Wünsche musst du selbst erledigen, sonst programmierst du nämlich nicht, sondern die die Dir die Lösungen fabrizieren. Als Tip zu deinem Problem: Code: [AUSKLAPPEN] .test
repeat print "test" until keyhit(1) return .test2 repeat print"noch ein test" until keyhit(1) return Diese beiden Subfunktionen werden in der Hauptschleife NICHT funktionieren, denn es sind selbst Schleifen. Bau sie mal ein und Starte sie, dann siehst Du vielleicht was ich meine. Der Rechner arbeitet eben stur ab was als nächstes da steht, und wenn da steht er soll was wiederholen dann tut er das auch. |
||
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 |
SNIPER |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
gut ok also muss ich die zeit und die torstände eigenlcih aus der hauptschleife nehmen das ich se gleichzeitig leufen lassen kann aber dann gehn sie warscheinlich nicht mehr gibt da irgend welche besonderen befehle die so was können
und es ist doch bestimmt so da irgen wie des geht das man beides gleichzeit laufen lassen soll. und zu dem lernen ich versuche es ja zu lernen aber da es mir keiner beibringen will oder kann und selber erlenen sehr viel zeit bracht und die ich aber net habe muss ichs irgen wie andes hin bekommen |
||
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
So ist es nun mal, programmieren lernen braucht Zeit, das geht nicht von heute auf morgen.
Falls du es noch nicht gemerkt haben solltest, wir versuchen dir ja zu helfen, aber entweder kannst oder willst du uns nicht verstehen, wir haben dir hier einiges an Möglichkeiten aufgezeigt, wie du es realiseren kannst und was du in deinem Programm falsch machst. Für die Umsetzung bist du alleine Verantwortlich, wenn wir dir das ganze Programm vorschreiben lernst du nichts, wie BladeRunner schon versucht hat dir zu erklären. Außerdem ist dein Ausdruck sehr schlecht zu verstehen, dass man manchmal nicht weiß, was du überhaupt von uns willst. Wenn du zuerst daran arbeiten würdest, tätest du uns einen riesen Gefallen. Besondere Befehle gibt es ganz viele, die stehen alle unter www.blitzbase.de |
||
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz BAC#57: 2. Platz |
SNIPER |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
aber genau bei der umsetzung hab ich mein proplem
ich kann eure bsp. nicht in meine programmierung umsetzten |
||
![]() |
kriD |
![]() Antworten mit Zitat ![]() |
---|---|---|
dann hast dus scheinbar nicht richtig verstanden.
guck dir die tuts nochmal an, und nochmal, bis dus kapiert hast.. der rest kommt von allein.. MfG kriD |
||
Wenn ich du wäre, wäre ich lieber ich! |
![]() |
biggicekey |
![]() Antworten mit Zitat ![]() |
---|---|---|
um es nochmalauf den punkt zu bringen, du kannst nix gleichzeitig ablaufen lassen.
es läuft alles nacheinander ab. die hauptschleife beginnt bei bladerunner mit "repeat" und endet mit "until keyhit" in dieser schleife muss sich alles abspielen und wird nacheinander abgearbeitet. dabei springt das programm mithilfe von "gosub" aus der offensichtilichen hauptschleife und kehrt in diese mit "return" zurück. prinzipiel könnte auch alles ohne diese sprünge in der hauptschleife stehen. vor die hauptschleife gehören dinge wie "graphics ...", "setbuffer...", bilder laden etc. in die hauptschleife gehört nur was wiederholt werden soll: bilder zeichnen, text anzeigen, tasten abfragen. du hast den fehler gemacht in deine "gosub" unterfunktion eine weitere hauptschleife packen zu wollen, und in dieser auch noch grundlegende fehler gemacht, wie graphicmodus setzen, bilder laden etc... |
||
#45 www.icekeyunlimited.de www.starcrusade.de
Gewinner BCC#17 !!! mit dotkiller Nothing more to register - you've cleaned us out![/size] |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ganz nebenbei: Da diese Hauptschleife im Regelfall mindestens 60 mal in der Sekunde durchlaufen wird wirken die in einem Durchlauf gemachten Operationen als ob sie gleichzeitig ablaufen würden ![]() |
||
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 |
SNIPER |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich habe die digitaluhr und den torstand gleichzeitig auf einem bildschirm aber man sieht nix davon nur wenn man esc drückt sieht man das etwas abgelaufen ist. Ausserdem überschreibt es die ziffern was es vorher nicht gemacht hatte wenn man das "flip" jetzt über das "Until KeyHit(1)" setzt geht die uhr wieder normal aber der torstand ist nicht mehr dabei.
Code: [AUSKLAPPEN] Graphics 1420,300 ClsColor 0,0,0 Color 23,26,87 schrift = LoadFont("calibri",120,1) SetFont schrift start = MilliSecs() SetBuffer BackBuffer() Repeat Cls time = MilliSecs()-start sec = time / 1000 min = time / 60000 sec=sec-(minuten*60) If sec<10 Then sec3$="0"+sec Else sec3$=sec EndIf If min<10 Then min2$="0"+min Else min2$=min EndIf Text 20,35,"Zeit: " + min2+ ":" + sec3+ ":" + Mid(time,(Len(sec)+1),2) Until KeyHit(1) font1=LoadFont("calibri",120,0,0,0) font2=LoadFont("calibri",50,0,0,1) For t = 1 To 5400 A=GetKey() tor = LoadSound("tooor.wav") SetFont font2 If A=103 Then Rect 70,210,130,20 Rect 70,90,130,20 Rect 70,120,20,80 Rect 180,120,20,80 Rect 1000,60,10,45 Rect 1110,60,10,45 Rect 1000,50,120,10 Oval 1120,200,30,30 Oval 1120,200,30,30 Oval 1118,198,30,30 Oval 1000,100,30,30 PlaySound tor Text 100,250, "Die Gastmannschaft hat ein Tor geschossen" EndIf If A=104 Then Rect 570,210,130,20 Rect 570,90,130,20 Rect 570,120,20,80 Rect 680,120,20,80 PlaySound tor Text 100,250, "Die Heimmannschaft hat ein Tor geschossen" EndIf SetFont font1 falsch = LoadSound ("tooor.wav") If A=103 Then x=x+1;G If A=104 Then y=y+1;H If A=116 Then x=x-1;T If A=116 Then PlaySound falsch If A=122 Then y=Y-1;Z If A=122 Then PlaySound falsch SetFont font1 ; der geladene Font kommt zum Einsatz Text 100,100,x Text 350,100,":" ; Text funktioniert wie Print+Locate Text 600,100,y Flip Delay 1000 Cls Repeat Return Forever Next |
||
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wen ich etwas bemerken darf.
Vergiss diesen Code lies ein Tutorial durch http://www.robsite.de/bbkurs2/index.htm Und dan versuch es von neuem, sei jetz einfach ned entäuscht das kommt schon noch ![]() |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
SNIPER |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hmm des geht aber net weil ich dieses thma in der schule habe
könnt ihr mir vllt sagen was an dem code falsch ist bitte. thx |
||
![]() |
ShadowJumper |
![]() Antworten mit Zitat ![]() |
---|---|---|
was ich bisher vermisse: ein Hinweis auf Funktionen...
nach wenigem Suchen: http://www.robsite.de/bbkurs2/...ruktur.htm da steht neben Goto und Gosub etwas über Funktionen (Functions) du solltest diese bevorzugt nehmen und auf Goto und Gosub gänzlch verzichten wie schon gesagt ist es nicht möglich etwas gleichzeitig laufen zu lassen selbst wenn man eine Sprache nutzt, die Threads unterstützt muss man das Programm unter einem PC mit min. 2-Kern-Prozessor ausführen (solche können nunmal mehrere Dinge gleichzeitig machen, wie viele ist von der Anzahl der Kerne abhängig), weil es sonst (genaugenommen) nicht gleichzeitig ist das, was euer Lehrer eher will, ist, dass ihr ihm etwas liefert, wo man meinen kann, dass es zeitgleich abläuft (was aber in wirklichkeit nur nacheinander läuft) Edit: auf was für einer Schule bist du eigentlich? Edit2: ui, BladeRunner hats schonma angesprochen... ^^ |
||
Bilder kostenlos hosten
lest und weint: RAM - 512 MB; GrafikRAM - 32 MB; CPU - 800 MHz Ps: ... und weint (vor lachen) |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: was ich bisher vermisse: ein Hinweis auf Funktionen...
*hust* https://www.blitzforum.de/foru...904#287904 *hust* Wenn euer Lehrer nicht mehr Grundlagen vermittelt darf er sich nicht wundern wenn es nicht funktioniert. Und ich kann nur zustimmen: ihr solltet ganz von vorne beginnen, der Code ist so nicht wirklich zu gebrauchen. Euch mangelt es massiv an Grundwissen. |
||
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 |
![]() |
ShadowJumper |
![]() Antworten mit Zitat ![]() |
---|---|---|
ShadowJumper hat Folgendes geschrieben: Edit2:
ui, BladeRunner hats schonma angesprochen... ^^ xP oder sag deinem Lehrer mal, dass er unter folgender Telefonnummer anrufen soll, um sich n Ohr abkauen zu lassen Nummer: +49 xxxxx/xxxxx (ausgeblendet, dahe Sessionid abgelaufen^^) |
||
Bilder kostenlos hosten
lest und weint: RAM - 512 MB; GrafikRAM - 32 MB; CPU - 800 MHz Ps: ... und weint (vor lachen) |
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
SNIPER hat Folgendes geschrieben: hmm des geht aber net weil ich dieses thma in der schule habe
könnt ihr mir vllt sagen was an dem code falsch ist bitte. thx Und weil du das Thema in der Schule hast darfst du kein Robsite lesen? ouch. |
||
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
Eigentlich wollte ich hier nichts mehr schreiben, da ich denke, dass es sowieso alles nur Zeitverschwendung ist, aber gut, ein letztes mal erbarme ich mich noch.
Dein Lernerfolg seit deinem ersten Post scheint gleich Null zu sein. du rufst die Zeit ab und startest dann die schleife, wo du auch wieder die Zeit abfragst und mit der Startzeit vergleichst. Soweit ist es alles gut. Bis auf die Tatsache, dass die Fensterauflösung total fürn Arsch ist. nimm ne maximale breite von 1280, das sollten heutzutage min. 80% aller hier aktiven User darstellen können. Die Höhe kannst du ja dann anpassen, wie du es brauchst, aber nicht höher als 1024. In der schleife willst du einen Text darstellen, da du Setbuffer Backbuffer eingestellt hast, schreibt er diesen auch auf den Backbuffer(welcher ohne weiteres ja nicht zu sehen ist, da er auf der Rückseite von dem Blatt gezeichnet wird). Wo ist das Flip in der Schleife, um den Backbuffer zum Frontbuffer(sichtbar auf dem Bildschirm) zu machen? Danach folgen noch irgendwelche anweisungen, die aber erst nach beendigung der Schleife aufgerufen werden, entweder musts du Sie in der schleife mit gosub oder Function aufrufen, damit diese in der Schleife abgearbeitet werden. Und was ist das bitte für ein Konstrukt am Ende des Codes Code: [AUSKLAPPEN] Flip Delay 1000 Cls Repeat Return Forever Next Du Flipst die Buffer, ok, du hast irgendwo vorher eine For/Next schleife angefangen, die von 1 bis 5400 zählt, dazu habe ich dir schon zig mal abgeraten, da es so nicht funktionieren wird. Was soll Repeat/Return/Forever dort, das hat in der Schleife nichts zu suchen und macht garnnichts. Fange nochmal ganz von vorne an, mit den ganzen Tipps die du hier schon bekommen hast. ansonsten kannst du von mir keine Hilfe mehr erwarten, da du sie konsequent ignorierst. Wir wollen dir ja nichts böses, aber irgendwann ist unsere Gedult auch mal am Ende |
||
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz BAC#57: 2. Platz |
![]() |
nils2771989 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Naja...dann versuch ich´s mal ![]() Vlt wird Dein Lernerfolg nicht allzu groß sein, aber von dem, was man bisher so gesehen hat, wirst Du danach wohl eh nicht viel programmieren....(sry, wenn das jetzt ein bisschen zu direkt ist) Also: Zuerst zum Beginn: Code: [AUSKLAPPEN] Graphics 1420,300 ClsColor 0,0,0 Color 23,26,87 schrift = LoadFont("calibri",120,1) SetFont schrift start = MilliSecs() SetBuffer BackBuffer() an sich ist das schon mal richtig, bis auf die Auflösung(die wie schon erwähnt recht abnormal ist, guck einfach nur mal im I-net, was die Standartauflösungen sind)... Die For/Next Schleife ist total falsch....besonders das loadsound...d.h der sound "tooooor" wird 5400 mal geladen...-> overkill für den Arbeitsspeicher...das muss auch vor die Schleife NICHT in die Schleife...und loadsound bedeutet nicht gleich, dass der sound abgespielt wird, da musst du den Befehl herraussuchen, mit dem ein Sound abgespielt wird, der vorher >>>1<<<mal geladen wurde Die "Repeat"..."Until" kann so nicht gehen, zumindest nicht so, wie Du das willst. Also erstens, du benutzt einen Backbuffer, dass heißt, dass alles, was auf dem Bildschirm geschrieben wird, erst (sozusagen) auf der Rückseite des Monitors geschrieben wird, erst mir dem dem Befehl "Flip" wird es dann für einen sichtbar. Den Befehl benutzt du zwar, aber nicht an der richtigen Stelle. Er muss am Ende der "Repeat"/"Until" Schleife stehe, nicht am Ende des ganzen Programms, das bringt nichts. Die "Repeat"/"Until" Schleife bedeutet, dass der PC solange von "Until" zu "Repeat" springt und die Befehle, die dazwischenstehen aufführt, bis die Bedingung von "Until" erfüllt ist, in diesem Fall der Druck der Esc-Taste. Da das "Flip" bei dir nach der Schleife steht, kannst du nichts sehen, da der PC nicht den Befehl ausführt. Alle Befehle, die nach der "Repeat"/"Until" -Schleife stehen, werden also defacto erst ausgeführt, nachdem der PC nich mehr in der Schleife ist. Übrigens die beiden Loadfont Befehle für Font1 und Font2 müssen auch vor der "Repeat"/"Until" Schleife gesetzt werden. Dafür hat man die "Function","Goto" und "Gosub" Befehle, wenn einer dieser Befehle in der Schleife ausgeführt wird, dann springt der PC aus der Schleife raus zu der angegebenen Marke...z.b ".Ablauf1" und kehrt dann , wenn er zu return gelangt wieder in die Schleife zurück einfacher ist da aber "Function" geht eigentlich fast wie "if" und "endif". Am Anfang setzt Du Code: [AUSKLAPPEN] Function irgenteinfunctionsname() mache dies mache das mache jenes end function wenn du das hast, dann kannst Du diese einfach mit dem namen der Funtion in der Schleife aufrufen...hier währe das dann "irgenteinfunctionsname()" dass sähe dann im code so aus: Code: [AUSKLAPPEN] repeat dingsda() until keyhit(1) function dingsda() mache ein paar Sachen end function Den rest mit: Flip Delay 1000 Cls Repeat Return Forever Next kannst du, wie schon gesagt wurde weglassen, da sie absolut sinnfrei sind und im Endeffekt Nichts machen. Die Zeitanzeige ist auch nicht richtig, erstens werden die Millisekunden in der ersten Sekunde falsch angezeigt und der Sekundenzähler geht bei 60 Sec nicht wieder auf Null zurück. Da musst Du noch mit einfügen dass die Anzahl der Min*60 von der Sekundenzahl abgezogen wird. |
||
Schummle nicht, aber spiele nach eigenen Regeln.
Sei nicht verrückt, sondern einfach nur wahnsinnig. Sei nicht böse, führ nur nichts Gutes im Schilde. Verändere dich nicht, bleib immer anders. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group