Was mache ich falsch?
Übersicht

ZenonBetreff: Was mache ich falsch? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich habe da ein Problem mit meinem Programm. Funktioniert nur manchmal richtig, das ist sehr sonderbar und ich finde auch keinen Fehler.
Das Programm vergleicht immer die Vorgaben mit der Eingabe und gibt rechts aus, ob Position(Lila) oder Farbe(weiß) stimmen. Wenn man beliebige Werte für a,b,c,d usw. eingibt, dann kommt die Ausgabe. Diese stimmt aber nicht immer, ich habe es schon öfter erlebt, dass nach dem 5 oder 7 Schleifendurchlauf die weißen und lilafarbenen Kreise nicht mehr stimmen. Z.B. wurden nur 2 weiße Kreise bei der Eingabe a=1,b=2,c=3,d=4,e=4,f=3,g=2,h=1 dargestellt . Aber es müssen ja eigentlich 4 sein, alle Farben sind ja richtig, nur falsch positioniert. Nachdem ich das Programm geschlossen habe und es erneut aufgerufen habe und die gleichen Zahlen eingegeben habe, ging's wieder. Warum denn??? Ich habe doch nichts am code geändert. Könnt ihr mir helfen??? ![]() Code: Repeat Graphics 800,600,32,2 AppTitle "rot,grün,blau,gelb,cyan,magenta" A=Input ("A= ") B=Input ("B= ") C=Input ("C= ") D=Input ("D= ") ;ERSTE EINGABE ;e f g h Print"" E=Input (" Farbe auf Position Nr. 1: ") F=Input (" Farbe auf Position Nr. 2: ") G=Input (" Farbe auf Position Nr. 3: ") H=Input (" Farbe auf Position Nr. 4: ") Print"" If E=1 Then Color 255,0,0:Oval 350,40,25,25 If E=2 Then Color 0,255,0:Oval 350,40,25,25 If E=3 Then Color 0,0,255:Oval 350,40,25,25 If E=4 Then Color 255,255,0:Oval 350,40,25,25 If E=5 Then Color 0,255,255:Oval 350,40,25,25 If E=6 Then Color 255,0,255:Oval 350,40,25,25 If F=1 Then Color 255,0,0:Oval 380,40,25,25 If F=2 Then Color 0,255,0:Oval 380,40,25,25 If F=3 Then Color 0,0,255:Oval 380,40,25,25 If F=4 Then Color 255,255,0:Oval 380,40,25,25 If F=5 Then Color 0,255,255:Oval 380,40,25,25 If F=6 Then Color 255,0,255:Oval 380,40,25,25 If G=1 Then Color 255,0,0:Oval 410,40,25,25 If G=2 Then Color 0,255,0:Oval 410,40,25,25 If G=3 Then Color 0,0,255:Oval 410,40,25,25 If G=4 Then Color 255,255,0:Oval 410,40,25,25 If G=5 Then Color 0,255,255:Oval 410,40,25,25 If G=6 Then Color 255,0,255:Oval 410,40,25,25 If H=1 Then Color 255,0,0:Oval 440,40,25,25 If H=2 Then Color 0,255,0:Oval 440,40,25,25 If H=3 Then Color 0,0,255:Oval 440,40,25,25 If H=4 Then Color 255,255,0:Oval 440,40,25,25 If H=5 Then Color 0,255,255:Oval 440,40,25,25 If H=6 Then Color 255,0,255:Oval 440,40,25,25 ;--------------------------------------- ;--------------------------------------- ;--------------------------------------- If Not SAPIENS=1735294763 Then Color 255,255,255 ;----- If E=A Then Color 100,0,170 :Oval 600,40,25,25:Goto apfel If E=B And F<>B Then Color 255,255,255:Oval 600,40,25,25:EvB=1:Goto apfel If E=C And G<>C Then Color 255,255,255:Oval 600,40,25,25:EvC=1:Goto apfel If E=D And H<>D Then Color 255,255,255:Oval 600,40,25,25:EvD=1:Goto apfel ;--------------------------- .apfel If F=B Then Color 100,0,170 :Oval 630,10,25,25 : Goto blut If F=A And E<>A Then Color 255,255,255:Oval 630,10,25,25:FvA=1:Goto blut If F=C And G<>C And EvC=0 Then Color 255,255,255:Oval 630,10,25,25:FvC=1:Goto blut If F=D And H<>D And EvD=0 Then Color 255,255,255:Oval 630,10,25,25:FvD=1:Goto blut ;----------------------------------------- .blut If G=C Then Color 100,0,170:Oval 660,40,25,25:Goto mandarine If G=A And E<>A And FvA=0 Then Color 255,255,255:Oval 660,40,25,25:GvA=1:Goto mandarine If G=B And F<>B And EvB=0 Then Color 255,255,255:Oval 660,40,25,25:GvB=1:Goto mandarine If G=D And H<>D And EvD=0 And FvD=0 Then Color 255,255,255:Oval 660,40,25,25:GvD=1:Goto mandarine ;-------------------------------------------------- .mandarine If H=D Then Color 100,0,170 :Oval 630,70,25,25:Goto stabi If H=A And E<>A And FvA=0 And GvA=0 Then Color 255,255,255:Oval 630,70,25,25:HvA=1:Goto stabi If H=B And F<>B And EvB=0 And GvB=0 Then Color 255,255,255:Oval 630,70,25,25:HvB=1:Goto stabi If H=C And G<>C And EvC=0 And FvC=0 Then Color 255,255,255:Oval 630,70,25,25:HvC=1:Goto stabi .stabi ;-------------------------------------------------------------------- If Not HABILIGENSIS=1735294763 Then Color 255,255,255 WaitKey If E=A And F=B And G=C And H=D Then Print "GESCHAFFT!!!" Print A Print B Print C Print D Text 190,510,"LOESUNG" If Not ZC=1735294763 Then Color 255,255,255 ;--- If A=1 Then Color 255,0,0:Oval 260,500,25,25 If A=2 Then Color 0,255,0:Oval 260,500,25,25 If A=3 Then Color 0,0,255:Oval 260,500,25,25 If A=4 Then Color 255,255,0:Oval 260,500,25,25 If A=5 Then Color 0,255,255:Oval 260,500,25,25 If A=6 Then Color 255,0,255:Oval 260,500,25,25 If B=1 Then Color 255,0,0:Oval 290,500,25,25 If B=2 Then Color 0,255,0:Oval 290,500,25,25 If B=3 Then Color 0,0,255:Oval 290,500,25,25 If B=4 Then Color 255,255,0:Oval 290,500,25,25 If B=5 Then Color 0,255,255:Oval 290,500,25,25 If B=6 Then Color 255,0,255:Oval 290,500,25,25 If C=1 Then Color 255,0,0:Oval 320,500,25,25 If C=2 Then Color 0,255,0:Oval 320,500,25,25 If C=3 Then Color 0,0,255:Oval 320,500,25,25 If C=4 Then Color 255,255,0:Oval 320,500,25,25 If C=5 Then Color 0,255,255:Oval 320,500,25,25 If C=6 Then Color 255,0,255:Oval 320,500,25,25 If D=1 Then Color 255,0,0:Oval 350,500,25,25 If D=2 Then Color 0,255,0:Oval 350,500,25,25 If D=3 Then Color 0,0,255:Oval 350,500,25,25 If D=4 Then Color 255,255,0:Oval 350,500,25,25 If D=5 Then Color 0,255,255:Oval 350,500,25,25 If D=6 Then Color 255,0,255:Oval 350,500,25,25 ;--- If Not ZC=1735294763 Then Color 255,255,255 WaitKey Until (A=E And B=F And C=G And D=H) |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Grundlegende Anmerkung:
Code: Graphics 800,600,32,2 AppTitle "rot,grün,blau,gelb,cyan,magenta" Müssen DRINGEND vor die Schleife. Sie gehören zum Initialisierungsteil und nicht zur Hauptschleife, genausowenig wie zb Laden von Grafik und Sound nie in der Hauptschleife sein darf. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Florian |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Warum benutzt du kein Array?
In einen guten Code gehört kein goto hinein. |
||
Der Programierer |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also bei mir hat's geklappt. Aber mal was anderes: sollte man das Prigramm nicht ein bisschen übersichtlicher mach, vielleicht in dem man eine oder mehrere Include-Dateien anlegt? | ||
![]() |
tyty |
![]() Antworten mit Zitat ![]() |
---|---|---|
...und den Variablen verständliche Namen gibt.
z.B.: Blau, Grün, Rot... |
||
User posted image
Kaikille suomea puhuville ihmisille: tyty = tyty the technical youngster!!! |
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
UFF! man man man was ein code! Ich empfehle dir dringend funktionen und schleifen! was denkst du was man aus deinem code machen könnte wenn man eine for-schleife benutzt und das dann per Formel berechnen lässt?ich glaub echt da kann man einiges an code sparen...ausserdem schließ ich mich der anderen an VARIABLEN NAMEN!!!! | ||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
Der Programierer |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich hab's jetzt mal ein bisschen umgeschrieben:
[syntax="bb"]AppTitle "rot,grün,blau,gelb,cyan,magenta" Graphics 800,600,32,2 Include ".\data1.bb" Global A Global B Global C Global D Global E Global F Global G Global H A=Input ("A= ") B=Input ("B= ") C=Input ("C= ") D=Input ("D= ") ;ERSTE EINGABE ;e f g h Print"" E=Input (" Farbe auf Position Nr. 1: ") F=Input (" Farbe auf Position Nr. 2: ") G=Input (" Farbe auf Position Nr. 3: ") H=Input (" Farbe auf Position Nr. 4: ") Print"" Repeat If Not SAPIENS=1735294763 Then Color 255,255,255 If E=A Then Color 100,0,170 :Oval 600,40,25,25:apfel If E=B And F<>B Then Color 255,255,255:Oval 600,40,25,25:EvB=1: apfel If E=C And G<>C Then Color 255,255,255:Oval 600,40,25,25:EvC=1:apfel If E=D And H<>D Then Color 255,255,255:Oval 600,40,25,25:EvD=1:apfel ;-------------------------------------------------------------------- If Not HABILIGENSIS=1735294763 Then Color 255,255,255 WaitKey FA Farbe2 ;--- If Not ZC=1735294763 Then Color 255,255,255 WaitKey Until (A=E And B=F And C=G And D=H)[/syntax] Und als Include-Datei dann: [syntax="bb"]Function Farbe() If E=1 Then Color 255,0,0:Oval 350,40,25,25 If E=2 Then Color 0,255,0:Oval 350,40,25,25 If E=3 Then Color 0,0,255:Oval 350,40,25,25 If E=4 Then Color 255,255,0:Oval 350,40,25,25 If E=5 Then Color 0,255,255:Oval 350,40,25,25 If E=6 Then Color 255,0,255:Oval 350,40,25,25 If F=1 Then Color 255,0,0:Oval 380,40,25,25 If F=2 Then Color 0,255,0:Oval 380,40,25,25 If F=3 Then Color 0,0,255:Oval 380,40,25,25 If F=4 Then Color 255,255,0:Oval 380,40,25,25 If F=5 Then Color 0,255,255:Oval 380,40,25,25 If F=6 Then Color 255,0,255:Oval 380,40,25,25 If G=1 Then Color 255,0,0:Oval 410,40,25,25 If G=2 Then Color 0,255,0:Oval 410,40,25,25 If G=3 Then Color 0,0,255:Oval 410,40,25,25 If G=4 Then Color 255,255,0:Oval 410,40,25,25 If G=5 Then Color 0,255,255:Oval 410,40,25,25 If G=6 Then Color 255,0,255:Oval 410,40,25,25 If H=1 Then Color 255,0,0:Oval 440,40,25,25 If H=2 Then Color 0,255,0:Oval 440,40,25,25 If H=3 Then Color 0,0,255:Oval 440,40,25,25 If H=4 Then Color 255,255,0:Oval 440,40,25,25 If H=5 Then Color 0,255,255:Oval 440,40,25,25 If H=6 Then Color 255,0,255:Oval 440,40,25,25 End Function Function apfel () If F=B Then Color 100,0,170 :Oval 630,10,25,25 : blut If F=A And E<>A Then Color 255,255,255:Oval 630,10,25,25:FvA=1:blut If F=C And G<>C And EvC=0 Then Color 255,255,255:Oval 630,10,25,25:FvC=1:blut If F=D And H<>D And EvD=0 Then Color 255,255,255:Oval 630,10,25,25:FvD=1:blut End Function Function blut () If G=C Then Color 100,0,170:Oval 660,40,25,25:mandarine If G=A And E<>A And FvA=0 Then Color 255,255,255:Oval 660,40,25,25:GvA=1:mandarine If G=B And F<>B And EvB=0 Then Color 255,255,255:Oval 660,40,25,25:GvB=1:mandarine If G=D And H<>D And EvD=0 And FvD=0 Then Color 255,255,255:Oval 660,40,25,25:GvD=1:mandarine End Function Function mandarine () If H=D Then Color 100,0,170 :Oval 630,70,25,25:Goto stabi If H=A And E<>A And FvA=0 And GvA=0 Then Color 255,255,255:Oval 630,70,25,25:HvA=1:Goto stabi If H=B And F<>B And EvB=0 And GvB=0 Then Color 255,255,255:Oval 630,70,25,25:HvB=1:Goto stabi If H=C And G<>C And EvC=0 And FvC=0 Then Color 255,255,255:Oval 630,70,25,25:HvC=1:Goto stabi .stabi End Function Function FA() If E=A And F=B And G=C And H=D Then Print "GESCHAFFT!!!" Print A Print B Print C Print D Text 190,510,"LOESUNG" If Not ZC=1735294763 Then Color 255,255,255 End Function Function Farbe2 () If A=1 Then Color 255,0,0:Oval 260,500,25,25 If A=2 Then Color 0,255,0:Oval 260,500,25,25 If A=3 Then Color 0,0,255:Oval 260,500,25,25 If A=4 Then Color 255,255,0:Oval 260,500,25,25 If A=5 Then Color 0,255,255:Oval 260,500,25,25 If A=6 Then Color 255,0,255:Oval 260,500,25,25 If B=1 Then Color 255,0,0:Oval 290,500,25,25 If B=2 Then Color 0,255,0:Oval 290,500,25,25 If B=3 Then Color 0,0,255:Oval 290,500,25,25 If B=4 Then Color 255,255,0:Oval 290,500,25,25 If B=5 Then Color 0,255,255:Oval 290,500,25,25 If B=6 Then Color 255,0,255:Oval 290,500,25,25 If C=1 Then Color 255,0,0:Oval 320,500,25,25 If C=2 Then Color 0,255,0:Oval 320,500,25,25 If C=3 Then Color 0,0,255:Oval 320,500,25,25 If C=4 Then Color 255,255,0:Oval 320,500,25,25 If C=5 Then Color 0,255,255:Oval 320,500,25,25 If C=6 Then Color 255,0,255:Oval 320,500,25,25 If D=1 Then Color 255,0,0:Oval 350,500,25,25 If D=2 Then Color 0,255,0:Oval 350,500,25,25 If D=3 Then Color 0,0,255:Oval 350,500,25,25 If D=4 Then Color 255,255,0:Oval 350,500,25,25 If D=5 Then Color 0,255,255:Oval 350,500,25,25 If D=6 Then Color 255,0,255:Oval 350,500,25,25 End Function[/syntax] So ist es doch schon mal übersichtlicher. |
||
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
BITTE TU DIR DEN GEFALLEN UND NENN ALLE VARIABLEN UM...es lohnt sich wirklich! nenn sie doch magenta und blau und grün und so...oder farbe_magenta oder so machs so verständlich wie möglcih dann noch ein paar kommentare und schleifen...was mir grad so auffällt...du könntest es so machen:
Code: Function color(wert) if wert=1 then color 255,0,0 if wert=2 then color 0,255,0 ;usw... end function dann kannst du einfach immer schreiben: Code: if e>0 then color(e) oval 350,40,25,25 endif hat den gleichen effekt wie: Code: If E=1 Then Color 255,0,0:Oval 350,40,25,25 If E=2 Then Color 0,255,0:Oval 350,40,25,25 If E=3 Then Color 0,0,255:Oval 350,40,25,25 If E=4 Then Color 255,255,0:Oval 350,40,25,25 If E=5 Then Color 0,255,255:Oval 350,40,25,25 If E=6 Then Color 255,0,255:Oval 350,40,25,25 denkt mal drüber nach ![]() |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
Zenon |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja, das mögen Verbesserung der Darstellung sein, aber mein eigentliches Problem ist nicht behoben. Die Eingaben werden mit A, B, C und D verglichen. Wenn E=A ist, dann stimmt die Position und F, G und H müssen also nicht mehr mit A verglichen werden. Wenn aber E=B ist, dann stimmt die Farbe(nicht Position) nur dann, wenn F<>B ist, denn sonst wäre es ja ne richtige Position einer Farbe auf Position Nummer 2. Diese Überlegungen brachten mich auf diesen Code und wenn man ihn anschaut, dann sieht man was ich meine. Ich finde keinen Fehler der das Ergebnis falsch beeinflussen könnte. Es geht ja auch prima, aber manchmal stimmen die Antwortkreise rechts eben doch nicht, nach Neustart des Programms geht's dann aber wieder obwohl ich GENAU das gleiche eingebe. Könnt Ihr mir bitte helfen??? Ich habe keine Ahnung, warum es nicht geht und ich finde auch keinen Fehler in meinen Überlegungen und im Code. NEED YOUR SUPPORT!!!
![]() ![]() ![]() Wie kann bitte sowas entstehen??? ![]() |
||
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi!
Ich würde (wie wahrscheinlicht viele andere auch) dir ja gerne helfen aber sooo ein langer Code schreckt echt verdammt ab...wäre cool wenn du ihn nochmal mit meinen ansätzen überarbeiten würdest und dann nochmal posten könnest... |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
Gerhard |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Was ist denn eigentlich falsch?
Der weisse Kreis besagt doch, dass eine Farbe stimmt (grün). Und keine sitzt am richtigen Platz. Besser wäre m.E. nur 5 verschiedene Farben zuzulassen. Ich habe (in einem unveröffentlichten Werk von 2003 ![]() Block(1) bis Block(5) sind die Vorgaben, Gewinn(1) bis Gewinn(5) die Eingaben des Spielers. Code: ; 5 verschiedene Farben: bereits geprüft Treffer = 0 ; richtige Farbe Stellen = 0 ; richtige Farbe an der richtigen Stelle ; stimmen Farben und Stellen?----------------------- For i = 1 To 5 For j = 1 To 5 If Block(i) = Gewinn(j) Then Treffer = Treffer + 1 Next If Block(i) = Gewinn(i) Then Stellen = Stellen + 1 Next ; Ergebnis zeigen-------------------------------------- For i = 1 To 5 If Stellen >= i Then EntityColor kugel(aktZeile,i),250,0,0 ; rot geht vor gruen (Farbe + Stelle ok) Else If Treffer >= i Then EntityColor kugel(aktZeile,i),0,180,0 ; nur Farbe ok EndIf Next ; gewonnen?-------------------------------------------- If Stellen = 5 Then ; gewonnen ! ... Anzahl der roten Kugeln = Zahl der (richtigen) Farben an der richtigen Stelle. Anzahl der grünen Kugeln = Zahl der (richtigen) Farben an der falschen Stelle. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group