
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
Hallo Danke für die Tipps. Ich habe es jetzt dahingehend verändert. Problem ist jetzt nur das er beim Rekord einen Wert von 12.800 Punkte hat was aber gar nicht zu erreichen ist. Ich wollte jetzt einbauen das man die Rekorde zurücksetzten kann. Jedoch funktioniert dies nicht. PS: Bitte entschuldigt meine Fehler die ich im Programm evtl. gemacht habe. Dies ist mein erster Ausflug in die Welt des Programmierens. Alles was ich bis jetzt so geschrieben habe, habe ich in den letzten 2 Wochen erlernt mittels eines Buches. define Light port[16] define musik port[1] define Trommelwirbel port[2] define aufnull as AD[1] define ADEingang as AD[2] define display as DA[1] define Rekord as word[1] define schlag as word[2] define i as word[3] define schlag2 as word[4] define gemma as word[5] define spannung as word[6] define balken as word[7] define e as word[8] define rekord2 as word[9] define rekord3 as word[10] define zaehler as Byte[1] define reset as Byte[2] import "SHOW_BAR.blib" #INIT INITBAR() Light=off musik=on Trommelwirbel = off open for read input# Rekord input# rekord2 input# rekord3 close do #pausenrek3 'Standard Display mit der Aufforderung zum Schlag und einer anzeige LCD.INIT 'des momentanen Rekords LCD.CLEAR Light=off LCD.Pos 1,2 LCD.Print "Hau den Lukas" LCD.Pos 2,2 LCD.Print "Bitte Schlagen" pause 50 goto pausehdl #pausenhdl LCD.CLR LCD.Pos 1,2 LCD.Print "1. Platz" LCD.Pos 2,4 LCD.Print Rekord LCD.Print "Pkte." goto pauserek #pausenrek LCD.CLR LCD.Pos 1,2 LCD.Print "2. Platz" LCD.Pos 2,4 LCD.Print rekord2 LCD.Print "Pkte." goto pauserek2 #pausenrek2 LCD.CLR LCD.Pos 1,2 LCD.Print "3. Platz" LCD.Pos 2,4 LCD.Print rekord3 LCD.Print "Pkte." goto pauserek3 loop 'dieser Standard Display wird angezeigt bis sich am Eingang etwas ändert 'diese Änderung muss jedoch größer als der Wert 10 sein #geschlagen musik=off Trommelwirbel = on gemma = 1000 - (schlag*4) ' Analogwert in Punkte umrechnen Schlag2=(gemma/3)*2 spannung = gemma - 15 i = 0 e = 0 LCD.CLR DO LCD.CLR i=i+1 e=i/4 balken = e*80/255 SHOW_BAR(balken) display = e 'rauf zählen bis zum halben erreichten Wert(schnell) LCD.POS 2,7 LCD.PRINT i Loop until i=schlag2 LCD.CLR DO LCD.CLR i=i+1 e=i/4 balken = e*80/255 SHOW_BAR(balken) display = e 'rauf zählen bis zum erreichten Wert (langsamer) LCD.POS 2,7 LCD.PRINT i pause 2 Loop until i=spannung LCD.CLR do LCD.CLR i=i+1 e=i/4 balken = e*80/255 SHOW_BAR(balken) display = e LCD.Pos 2,7 LCD.Print i pause 15 loop until i=gemma LCD.CLR e=i/4 balken = e*80/255 SHOW_BAR(balken) LCD.Pos 2,7 LCD.Print gemma Light = on pause 10 Light = off pause 10 Light = on pause 10 Light = off pause 10 Light = on pause 10 Light = off pause 50 LCD.CLR if gemma < rekord3 then goto tobad if gemma < rekord2 then goto dritter 'zuordnen ob der erreichte Wert höher als der momentane Rekord ist if gemma < Rekord then goto zweiter if gemma > Rekord then goto newrek #newrek ' Neuer Bestwert erreicht rekord3 = rekord2 rekord2 = Rekord Rekord = gemma open for write print# Rekord print# rekord2 print# rekord3 close LCD.POS 1, 2 LCD.print Rekord LCD.Print " Punkte" LCD.POS 2, 2 LCD.Print "reichen fuer" pause 150 LCD.CLR LCD.Pos 1,2 LCD.Print "Den neuen" LCD.Pos 2,4 LCD.Print "Rekord!" pause 150 LCD.CLR LCD.POS 1, 2 LCD.Print "Herrzlichen" LCD.Pos 2, 3 LCD.Print "Glueckwunsch" pause 200 goto INIT #tobad LCD.CLR ' Unter Bestwert LCD.Pos 1,2 LCD.Print "Leider keine" LCD.Pos 2,5 LCD.Print "Platzierung" pause 200 goto INIT #zweiter rekord3 = rekord2 'neuer 2.Platz rekord2 = gemma open for write print# Rekord print# rekord2 print# rekord3 close LCD.Pos 1,2 LCD.Print rekord2 LCD.Print " Punkte" LCD.Pos 2,2 LCD.Print "reichen fuer" pause 150 LCD.CLR LCD.Pos 1,2 LCD.Print "Den neuen" LCD.Pos 2,4 LCD.Print "2.Platz!" pause 150 LCD.CLR LCD.POS 1, 2 LCD.Print "Herrzlichen" LCD.Pos 2, 3 LCD.Print "Glueckwunsch" pause 200 goto INIT #dritter rekord3 = gemma open for write print# Rekord print# rekord2 print# rekord3 close LCD.Pos 1,2 LCD.Print rekord3 LCD.Print " Punkte" LCD.Pos 2,2 LCD.Print "reichen fuer" pause 150 LCD.CLR LCD.Pos 1,2 LCD.Print "Den neuen" LCD.Pos 2,4 LCD.Print "3.Platz!" pause 150 LCD.CLR LCD.POS 1, 2 LCD.Print "Herrzlichen" LCD.Pos 2, 3 LCD.Print "Glueckwunsch" pause 200 goto INIT #rekordaufnull zaehler = 0 do LCD.CLR LCD.Print " Reset " zaehler = zaehler + 1 reset = aufnull if aufnull < 20 then goto INIT pause 3 loop until zaehler = 50 Rekord = 0 rekord2 = 0 rekord3 = 0 open for write print# Rekord print# rekord2 print# rekord3 close LCD.CLR LCD.Print "Reset durchgeführt" pause 50 goto INIT #pausehdl zaehler = 0 do zaehler = zaehler +1 reset = aufnull if reset > 20 then goto rekordaufnull schlag = ADEingang 'abfragen ob geschlagen wurde und wenn ja sofort zur anzeige des if schlag < 245 then goto geschlagen 'Schlages wechseln pause 3 loop until zaehler = 50 goto pausenhdl #pauserek zaehler = 0 do zaehler = zaehler +1 schlag = ADEingang 'abfragen ob geschlagen wurde und wenn ja sofort zur anzeige des if schlag < 245 then goto geschlagen 'Schlages wechseln pause 3 loop until zaehler = 50 goto pausenrek #pauserek2 zaehler = 0 do zaehler = zaehler +1 schlag = ADEingang 'abfragen ob geschlagen wurde und wenn ja sofort zur anzeige des if schlag < 245 then goto geschlagen 'Schlages wechseln pause 3 loop until zaehler = 50 goto pausenrek2 #pauserek3 zaehler = 0 do zaehler = zaehler +1 schlag = ADEingang 'abfragen ob geschlagen wurde und wenn ja sofort zur anzeige des if schlag < 245 then goto geschlagen 'Schlages wechseln pause 3 loop until zaehler = 50 goto pausenrek3 > Unser Tipp: Die Schreib- und Leseroutine zueinander komplementär gestalten. > > Erklärung: > Die programmierte Funktion der Ausleseroutine (ab Zeile 28 bis Zeile 32) setzt voraus dass die ersten 3 Elemente der Datendatei die Werte für "Rekord", "rekord2", "rekord3" enthalten. > > Jedoch werden nur durch "#newrek" diese 3 Werte in der benötigten Reihenfolge in die Datendatei geschrieben. Die resultierenden Inhalte der Speicherelemente der Datendatei kann man sich danach wie folgt vorstellen: > > > [Element1] [Element2] [Element3] [Element4] ..... [Element n] > > Inhalt: Inhalt: Inhalt: Inhalt: Inhalt: > > [Rekord] [rekord2] [rekord3] [unbekannt] .... [unbekannt] > > > > Die Unterroutine "#zweiter" hingegen schreibt nur 2 Werte in die Datendatei. > > An dieser Stelle arbeiten Schreib- und Leseroutine nicht mehr komplementär - dies führt zur fehlerhaften Interpretation der Daten durch die Leseroutine: > > > [rekord2] [rekord3] [nicht verändert] > > > Die Unterroutine "#dritter" schreibt nur 1 Wert in die Datendatei: > > > [rekord2] [nicht verändert] [nicht verändert] > > > > > Lösungsansatz: > > Versuch doch mal "#zweiter" und "#dritter" entsprechend abzuändern. > > > Tipp: > > Mittels Zählschleife könnte man z.B. "#pauserek" kompakter gestalten: > > > > DEFINE zaehler WORD > > FOR zaehler = 1 TO 24 > schlag = ADEingang > IF schlag > 10 THEN GOTO geschlagen > PAUSE 6 > NEXT > > > > PS Hast du einen Link zu deinem Projekt? > > > > > > Hallo > > > > erstmal danke für die schnelle Antwort. > > Ich habe es nun mit open for write und open for read gemacht. > > Problem ist nur das er wenn das programm länger läuft die rekorde auf einmal vertauscht bzw. sogar löscht. > > Hier ist mein Programm . . . Fällt ein fehler ins Auge ? > > Danke vielmals > > > > > > > > define Light port[16] > > define musik port[1] > > define Trommelwirbel port[2] > > > > define ADEingang as AD[2] > > define Rekord as word[1] > > define schlag as word[2] > > define i as word[3] > > define schlag2 as word[4] > > define gemma as word[5] > > define spannung as word[6] > > define balken as word[7] > > define e as word[8] > > define rekord2 as word[9] > > define rekord3 as word[10] > > > > > > > > > > import "SHOW_BAR.blib" > > > > #INIT > > INITBAR() > > Light=off > > musik=on > > Trommelwirbel = off > > > > open for read > > input# Rekord > > input# rekord2 > > input# rekord3 > > close > > > > do > > #pausenrek3 'Standard Display mit der Aufforderung zum Schlag und einer anzeige > > LCD.INIT 'des momentanen Rekords > > LCD.CLEAR > > Light=off > > LCD.Pos 1,2 > > LCD.Print "Hau den Lukas" > > LCD.Pos 2,2 > > LCD.Print "Bitte Schlagen" > > pause 50 > > goto pausehdl > > > > #pausenhdl > > LCD.CLR > > LCD.Pos 1,2 > > LCD.Print "1. Platz" > > LCD.Pos 2,4 > > LCD.Print Rekord > > LCD.Print "Pkte." > > goto pauserek > > > > #pausenrek > > LCD.CLR > > LCD.Pos 1,2 > > LCD.Print "2. Platz" > > LCD.Pos 2,4 > > LCD.Print rekord2 > > LCD.Print "Pkte." > > goto pauserek2 > > > > #pausenrek2 > > LCD.CLR > > LCD.Pos 1,2 > > LCD.Print "3. Platz" > > LCD.Pos 2,4 > > LCD.Print rekord3 > > LCD.Print "Pkte." > > goto pauserek3 > > loop 'dieser Standard Display wird angezeigt bis sich am Eingang etwas ändert > > 'diese Änderung muss jedoch größer als der Wert 10 sein > > > > #geschlagen > > musik=off > > Trommelwirbel = on > > gemma = schlag*4 > > Schlag2=(gemma/3)*2 > > spannung = gemma - 15 > > i = 0 > > e = 0 > > LCD.CLR > > DO > > LCD.CLR > > i=i+1 > > e=i/4 > > balken = e*80/255 > > SHOW_BAR(balken) 'rauf zählen bis zum halben erreichten Wert(schnell) > > LCD.POS 2,7 > > LCD.PRINT i > > Loop until i=schlag2 > > LCD.CLR > > DO > > LCD.CLR > > i=i+1 > > e=i/4 > > balken = e*80/255 > > SHOW_BAR(balken) 'rauf zählen bis zum erreichten Wert (langsamer) > > LCD.POS 2,7 > > LCD.PRINT i > > pause 2 > > Loop until i=spannung > > > > LCD.CLR > > > > do > > LCD.CLR > > i=i+1 > > e=i/4 > > balken = e*80/255 > > SHOW_BAR(balken) > > LCD.Pos 2,7 > > LCD.Print i > > pause 15 > > loop until i=gemma > > > > LCD.CLR > > e=i/4 > > balken = e*80/255 > > SHOW_BAR(balken) > > LCD.Pos 2,7 > > LCD.Print gemma > > Light = on > > pause 10 > > Light = off > > pause 10 > > Light = on > > pause 10 > > Light = off > > pause 10 > > Light = on > > pause 10 > > Light = off > > pause 50 > > LCD.CLR > > > > if gemma < rekord3 then goto tobad > > if gemma < rekord2 then goto dritter 'zuordnen ob der erreichte Wert höher als der momentane Rekord ist > > if gemma < Rekord then goto zweiter > > if gemma > Rekord then goto newrek > > > > #newrek ' Neuer Bestwert erreicht > > rekord3 = rekord2 > > rekord2 = Rekord > > Rekord = gemma > > > > open for write > > print# Rekord > > print# rekord2 > > print# rekord3 > > close > > > > > > LCD.POS 1, 2 > > LCD.print Rekord > > LCD.Print " Punkte" > > LCD.POS 2, 2 > > LCD.Print "reichen fuer" > > pause 150 > > LCD.CLR > > LCD.Pos 1,2 > > LCD.Print "Den neuen" > > LCD.Pos 2,4 > > LCD.Print "Rekord!" > > pause 150 > > LCD.CLR > > LCD.POS 1, 2 > > LCD.Print "Herrzlichen" > > LCD.Pos 2, 3 > > LCD.Print "Glueckwunsch" > > pause 200 > > goto INIT > > > > #tobad > > LCD.CLR ' Unter Bestwert > > LCD.Pos 1,2 > > LCD.Print "Leider keine" > > LCD.Pos 2,5 > > LCD.Print "Platzierung" > > pause 200 > > goto INIT > > > > #zweiter > > > > rekord3 = rekord2 'neuer 2.Platz > > rekord2 = gemma > > > > open for write > > print# rekord2 > > print# rekord3 > > close > > > > LCD.Pos 1,2 > > LCD.Print rekord2 > > LCD.Print " Punkte" > > LCD.Pos 2,2 > > LCD.Print "reichen fuer" > > pause 150 > > LCD.CLR > > LCD.Pos 1,2 > > LCD.Print "Den neuen" > > LCD.Pos 2,4 > > LCD.Print "2.Platz!" > > pause 150 > > LCD.CLR > > LCD.POS 1, 2 > > LCD.Print "Herrzlichen" > > LCD.Pos 2, 3 > > LCD.Print "Glueckwunsch" > > pause 200 > > goto INIT > > > > #dritter > > > > rekord3 = gemma > > > > open for write > > print# rekord3 > > close > > > > LCD.Pos 1,2 > > LCD.Print rekord3 > > LCD.Print " Punkte" > > LCD.Pos 2,2 > > LCD.Print "reichen fuer" > > pause 150 > > LCD.CLR > > LCD.Pos 1,2 > > LCD.Print "Den neuen" > > LCD.Pos 2,4 > > LCD.Print "3.Platz!" > > pause 150 > > LCD.CLR > > LCD.POS 1, 2 > > LCD.Print "Herrzlichen" > > LCD.Pos 2, 3 > > LCD.Print "Glueckwunsch" > > pause 200 > > goto INIT > > > > > > > > > > #pausehdl > > schlag = ADEingang 'abfragen ob geschlagen wurde und wenn ja sofort zur anzeige des > > if schlag > 10 then goto geschlagen 'Schlages wechseln > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > goto pausenhdl > > > > > > #pauserek > > schlag = ADEingang 'abfragen ob geschlagen wurde und wenn ja sofort zur anzeige des > > if schlag > 10 then goto geschlagen 'Schlages wechseln > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > goto pausenrek > > > > > > #pauserek2 > > schlag = ADEingang 'abfragen ob geschlagen wurde und wenn ja sofort zur anzeige des > > if schlag > 10 then goto geschlagen 'Schlages wechseln > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > goto pausenrek2 > > > > #pauserek3 > > schlag = ADEingang 'abfragen ob geschlagen wurde und wenn ja sofort zur anzeige des > > if schlag > 10 then goto geschlagen 'Schlages wechseln > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > schlag = ADEingang > > if schlag > 10 then goto geschlagen > > pause 6 > > goto pausenrek3 |
| Antwort schreiben |