Open tbleher opened 3 years ago
Nachdem ich eine Nacht darüber geschlafen habe: der Grund für #238 war, dass ich ein Skript über mehrere Codes aufteilen musste, um das Limit mit 8 Kommandos zu umgehen. Der naive Ansatz mit "P(datei) J(nextOid)" führte aber zu den problematischen 2s-Pausen nach dem J()-Kommando. Entsprechend dem Vorschlag im TipToi-Buch habe ich auf "J(nextOid) P(datei)" umgestellt, was auf dem TipToi gut funktioniert, nur mit tttool play
nicht. Daher #238.
Hier zeigt sich nun, dass der oben genannte Trick anscheinend in TipToi-Büchern von Ravensburger nicht verwendet wird. Man muss also wohl nochmal nachschauen, wie sie das 2s-Pausen-Problem lösen.
Hier zeigt sich nun, dass der oben genannte Trick anscheinend in TipToi-Büchern von Ravensburger nicht verwendet wird. Man muss also wohl nochmal nachschauen, wie sie das 2s-Pausen-Problem lösen.
Das wäre interessant herauszufinden. Kann es sein dass die Ravensburger GMEs vielleicht entweder J
oder P
Befehle in einer Zeile haben?
Hier zeigt sich nun, dass der oben genannte Trick anscheinend in TipToi-Büchern von Ravensburger nicht verwendet wird. Man muss also wohl nochmal nachschauen, wie sie das 2s-Pausen-Problem lösen.
Das wäre interessant herauszufinden. Kann es sein dass die Ravensburger GMEs vielleicht entweder
J
oderP
Befehle in einer Zeile haben?
Interessante Idee. Tatsächlich scheint nur Abenteuer_Supermarkt.gme
P
und J
gleichzeitig zu haben:
$ grep J\( *.yaml | grep P\(
Abenteuer_Supermarkt.yaml: - $0==1? $7==1? $13==0? $8+=1 $13:=1 P(591) J(10360)
Abenteuer_Supermarkt.yaml: - $0==1? $7==1? $16==0? $8+=1 $16:=1 P(591) J(10360)
Abenteuer_Supermarkt.yaml: - $0==1? $7==1? $17==0? $8+=1 $17:=1 P(591) J(10360)
Abenteuer_Supermarkt.yaml: - $0==1? $7==1? $10==0? $8+=1 $10:=1 P(591) J(10360)
Abenteuer_Supermarkt.yaml: - $0==1? $8==10? $7:=0 $8:=0 P(589) J(10361)
Abenteuer_Supermarkt.yaml: - $0==1? $7==1? $18==0? $8+=1 $18:=1 P(591) J(10360)
Abenteuer_Supermarkt.yaml: - $0==1? $7==1? $11==0? $8+=1 $11:=1 P(591) J(10360)
Abenteuer_Supermarkt.yaml: - $0==1? $7==1? $14==0? $8+=1 $14:=1 P(591) J(10360)
Abenteuer_Supermarkt.yaml: - $0==1? $7==1? $9==0? $8+=1 $9:=1 P(591) J(10360)
Abenteuer_Supermarkt.yaml: - $0==1? $7==1? $12==0? $8+=1 $12:=1 P(591) J(10360)
Abenteuer_Supermarkt.yaml: - $0==1? $7==1? $15==0? $8+=1 $15:=1 P(591) J(10360)
Schön! Ich hab ein paar kleine Vorschläge, mehr um dein Haskell zu verfeinern :)
Vielen Dank Dir! Das hilft mir :) Falls Du lieber saubere Commits haben möchtest, kann ich die Änderungen auch noch in die beiden Commits einpflegen.
Ich mach eh Squash commits, also brauchst du nicht Aufräumen.
Wäre spannend zu sehen ob der Supermarkt auch den 2s-Bug hat. Wenn du motiviert bist, dann drucke doch die entsprechenden Codes aus und probiere es (das Problem hängt glaub von der Stift-Version ab).
Wäre spannend zu sehen ob der Supermarkt auch den 2s-Bug hat. Wenn du motiviert bist, dann drucke doch die entsprechenden Codes aus und probiere es (das Problem hängt glaub von der Stift-Version ab).
Werde ich die nächsten Tage mal machen. Ich weiß nur noch nicht genau, wann ich dazu komme.
OK, "nächste Tage" hat leider länger gedauert, aber jetzt kam ich endlich dazu. Ich konnte bei _AbenteuerSupermarkt.gme kein 2s-Problem feststellen (weder mit einem Stift mit Player, noch mit einem neueren mit Aufnahmefunktion).
Der Code ist interessant strukturiert (hier nur die Cases, die von den Variablen-Inhalten her matchen):
'10087':
- $0==1? $7==0? $7:=1 P(587) P(588)
Das startet ein Spiel, wo man insgesamt 10 Dinge finden muss.
Hier der Code der Items, immer nur für den Fall, dass man das erste Mal draufdrückt:
'10093':
- $0==1? $7==1? $9==0? $8+=1 $9:=1 P(591) J(10360)
'10094':
- $0==1? $7==1? $10==0? $8+=1 $10:=1 P(591) J(10360)
'10095':
- $0==1? $7==1? $11==0? $8+=1 $11:=1 P(591) J(10360)
'10096':
- $0==1? $7==1? $12==0? $8+=1 $12:=1 P(591) J(10360)
'10097':
- $0==1? $7==1? $13==0? $8+=1 $13:=1 P(591) J(10360)
'10098':
- $0==1? $7==1? $14==0? $8+=1 $14:=1 P(591) J(10360)
'10099':
- $0==1? $7==1? $15==0? $8+=1 $15:=1 P(591) J(10360)
'10100':
- $0==1? $7==1? $16==0? $8+=1 $16:=1 P(591) J(10360)
'10101':
- $0==1? $7==1? $17==0? $8+=1 $17:=1 P(591) J(10360)
'10102':
- $0==1? $7==1? $18==0? $8+=1 $18:=1 P(591) J(10360)
D.h. pro Item gibt es eine Variable, wo er sich merkt, ob man es schon gefunden hat. Dazu einen Zähler in $8
.
Hier der Code für 10360 und folgende:
'10360':
- $0==1? $8==10? $7:=0 $8:=0 P(589) J(10361)
'10361':
- $0==1? $9:=0 $10:=0 $11:=0 J(10362)
'10362':
- $0==1? $12:=0 $13:=0 $14:=0 J(10363)
'10363':
- $0==1? $15:=0 $16:=0 $17:=0 J(10364)
'10364':
- $0==1? $18:=0
Hier wird also noch eine Text ausgegeben, und dann (über mehrere OIDs verteilt) alle Variablen wieder zurückgesetzt.
Ich denke man braucht noch weitere Experimente mit eigenen Dateien, um herauszufinden, warum es hier keine 2s Pause gibt. Liegt es an den Zuweisungen, die dazwischen sind? Oder daran, dass danach noch weitere Jumps kommen?
Entsprechend der Diskussion in #238 habe ich mich mal an einem lint-Check für J() versucht. Tatsächlich scheint es bei allen TipToi-Files von Ravensburger nur maximal einen J()-Befehl pro Zeile zu geben, immer am Ende. Beim Testen habe ich mir gewünscht, dass
tttool lint
sich bei Fehlern mit einem passenden Exit-Code beendet. Das war eine gute Ausrede, um die IO-Monad etwas besser kennenzulernen :) Kommentare wie immer herzlich willkommen.