-
Notifications
You must be signed in to change notification settings - Fork 143
/
Copy pathREADME_finalisierung
160 lines (106 loc) · 4.95 KB
/
README_finalisierung
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
(6mai17)
letzte Schritte des CoffeemeterGames:
1. Scoring Events
==================
Alle Events koennen gleichzeitig auftreten
* Score Event 1: Coffeemeter schwappt ueber
Minus-Sekunden proportional zu aktuell neu uebergeschwappter Menge
Coffeemeter.excessNew. Richtig uebergeschwappter Kaffee entspr 5
Ruepelpunkten
Definiere excessNew des letzten
Zeitschritts (= lokale excess-Variable von
Coffeemeter.updateSurface) als class member, um
darauf zugreifen und das Event triggern (excessNew>0) zu koennen
* Score Event 2: Hintermann wird stark behindert, accLongLag<-2m/s^2:
5 Ruepelpunkte fuer <-2m/s^2, weitere 5 fuer <-4 m/s^2
* Score Event 3: Verlassen der Fahrbahn:
Trigger: kontinuierlicher Spurlindex v<-0.5, >2.5
10 Ruepelpunkte und automatisch Bremsen mit -2 m/s^2
* Score Event 4: Crash gegen ein anderes Fahrzeug oder gegen
die Baustelle (auch passive Crashs): Game Over ohne Ranking
* Score Event 5: Game Over:
(i) Fahrzeug erreicht Ziel
(ii) Timeout ist erreicht
(iii) Unfall (=Score Event 4)
2. Anzeigetafel des Spielstandes incl Feedback zu Scoring Events
================================================================
* Anzeige Zeit, Ruepelpunkte, aktueller Score =100-Zeit-RuepelpunktePunkte
* nach Verlassen der Strasse (Score Event 3): Weiterlaufen der
Zaehler, darunter Anzeige "Kehren Sie auf die Fahrbahn zurueck!"
* nach erfolgreichem Game-Over-Signal: Simulation und
obige Anzeige stoppt, darunter
"Sie haben erfolgreich das Ziel erreicht!\n Ihr Ergebnis: <Ergebnis>
Punkte", weitere Anzeigen => Highscore-Liste
* nach Timeout-Signal: Simulation und Anzeige stoppt,
darunter "Schneckenwarnung: Sie
waren zu langsam! Versuchen Sie es noch einmal",
weitere Anzeigen => Highscore-Liste
* nach Unfall: Simulation und Anzeige Stoppt,
darunter "Game Over!<br>Sie sind aber unverletzt und koennen es nochmal
versuchen"
=> 1,2: "Scoring.js"
- Datenelemente:
time, bullyPoints, score,
resultsString, messageString,
othersObstructed(boolean) => needed for "honk"
notOnRoad (boolean) => needed to decelerate ego vehicle
timeoutReached => needed for game control
crashHappened => needed for game control
- resultsString: Anzeige Zeit, Ruepelpunkte, aktueller Score
- messageString: das, was unter der Anzeige kommt
("Kehren Sie auf die Fahrbahn zurueck!")
- Konstruktor: Verknuepfung mit DOM-Objekt (html div Element) der
Anzeige
- function update(road, coffeemeter) => updated alle Datenelemente
- function display() => Display auf DOM-Element
3. Highscore-Liste
==================
* Events: Ende des Spiels bzw. Ergebnis in den Top Ten
* Event "Top Ten"=>Ergebnisse eingeben: js-driven modal dialog box
"Gratulation! Sie haben ein Top-Ten Ergebnis erreicht!\nGeben Sie
einen Namen ein"
https://www.w3schools.com/js/js_popup.asp
https://www.w3schools.com/js/tryit.asp?filename=tryjs_prompt
(der button onclick ist nur das Demo-Event, bei mir ist es
erfolgreiches Beenden des Spiels innerhalb der Top-Ten),
nach "OK" Anzeige der Highscores
* Event Jede Art der Spielbeendung=Score Event 5:
=> Button "Zeige Highscores" (automatisch
nur bei Top-Ten gezeigt) und Button "Neues Spiel"
* Ergebnisse holen/speichern: localStorage, in
coffeemeterGame.js => //!!! test localStorage
* Anzeige der Highscores: weitere Popup Box vom Typ Alert
(ohne eigene Eingabe, nur auf OK druecken zum schliessen):
window.alert("sometext");
=> Highscore.js, siehe coffeemeterGame.js => //!!! test localStorage
- Datenelemente:
. Array von scoreRecords (name=..., score=..., time=)
wie in coffeemeterGame.js => !!!testLocalStorage
. die localStorage Elemente (wie Name des localStorage)
- Konstruktor: Verknuepfung mit Name des localStorage und
html DOM-Element der Anzeige, Holen alter Highscores aus localStorage
- function update(scoreRecord) (schliesst auch neues Speichern mit ein)
- function display()
- function deleteAllScores() (v.A. in Testphase)
4. Sound (wenn Zeit):
=====================
../demo_js/README_sound
* Event 1: Beschleunigen a>-0.2 m/s^2: Motorgeraeusch mit variablem
Pitch (realisiert durch recording speed) und Lautstaerke
- Pitch proportional Geschw. mit Saegezahn-Gang:
function recSpeed(v){
var recmax=1.5;
return (v<7) ? recmax*v/7 : (v<14) ? recmax*v/14 : ...
}
- Lautstaerke proportional Leistung a+b*v*acc
* Event 2: starkes Beschl., Bremsen oder Lenken mit
aAbs=|aLong*eu+aLat*ev| > 2 m/s^2: Quietschgeraeusch konst Pitch,
Lautstaerke propto aAbs (kann sich beim Beschl mit Motorgeraeusch
ueberlagern)
* Event 3=Score Event 2: Hintermann wird stark behindert,
accLongLag<-2m/s^2: Hupen
* Event 4=Score Event 3: Verlassen der Fahrbahn: lautes Fahrgeraeusch wie auf
Kies/Holpern, Rumpeln etc
* Event 5=Score Event 4: Crash gegen ein anderes Fahrzeug oder gegen
die Baustelle: Crash-Geraeusch, ggf verschiedene Geraeushce, ggf
Nachscheppern von abgesprungenen Reifenkappen etc.