Dazu hier die Möglichkeit, die aktuellen Daten der Top 10 als JSON abzurufen:
https://fessie.max-reimann.de/?show=json
1 „Gefällt mir“
Geil! Davon habe ich direkt Gebrauch gemacht:
Ich habe dazu die Highscore testweise hartkodiert ins Javascript gepackt. Der Highscore-Link am Ende macht nichts, wenn man ihn normal anklickt. Man muss „speichern unter“.
fileinput = document.getElementsByTagName("input")[0];
resultpre = document.getElementById("result");
highscore = [
{
"rang": 1,
"name": "ja",
"score": 252800
},
{
"rang": 2,
"name": "max",
"score": 125300
},
{
"rang": 3,
"name": "hackerman",
"score": 124600
},
{
"rang": 4,
"name": "Nun",
"score": 100000
},
{
"rang": 5,
"name": "martin",
"score": 93300
},
{
"rang": 6,
"name": "martin",
"score": 92500
},
{
"rang": 7,
"name": "max",
"score": 91200
},
{
"rang": 8,
"name": "martin",
"score": 90000
},
{
"rang": 9,
"name": "leer hier",
"score": 86800
},
{
"rang": 10,
"name": "martin",
"score": 81900
}
];
fileinput.addEventListener('change', function() {
var reader = new FileReader();
reader.onload = function() {
var arrayBuffer = this.result,
array = new Uint8Array(arrayBuffer),
binaryString = String.fromCharCode.apply(null, array),
view = new DataView(arrayBuffer),
offset = 0;
// read
resultpre.append("Geräusche: " + view.getUint32(offset, true) + "\n");
offset += 4;
resultpre.append("Musik: " + view.getUint32(offset, true) + "\n");
offset += 4;
resultpre.append("Stereo: " + view.getUint8(offset, true) + "\n");
offset += 1;
resultpre.append("Auflösung: " + view.getUint8(offset) + "\n");
offset += 1;
resultpre.append("Details: " + view.getUint8(offset) + "\n");
offset += 1;
resultpre.append("Level: " + view.getUint32(offset, true) + "\n");
offset += 4;
while(offset < view.byteLength) {
score = view.getUint32(offset, true);
offset += 4;
strlen = view.getUint32(offset, true);
offset += 4;
username = "";
for(charpos =0; charpos<strlen; charpos++)
{
username += String.fromCharCode(view.getUint8(offset));
offset++;
}
resultpre.append(score + " "+ username +"\n");
}
// write
offset = 15;
highscorebytelength = highscore.map(x => x.name.length + 8).reduce((partial, x) => partial + x, 0);
resultpre.append("highscorebytelenth: " + highscorebytelength);
arrayBuffer = arrayBuffer.transfer(offset + highscorebytelength);
view = new DataView(arrayBuffer);
highscore.forEach(function(entry){
view.setUint32(offset, entry.score, true);
offset += 4;
view.setUint32(offset, entry.name.length, true);
offset += 4;
Array.from(entry.name).forEach(function(x){
view.setUint8(offset, x.charCodeAt());
offset++;
});
});
blob = new Blob([view.buffer], { type: "application/octet-stream"});
link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.innerText = "Highscore"
link.download = "data.fcg";
resultpre.parentElement.appendChild(link);
}
reader.readAsArrayBuffer(this.files[0]);
console.log(fileinput);
}, false);
Man könnte die Daten auch live holen mit:
fetch("https://fessie.max-reimann.de/?show=json").then(x => x.json().then(y => highscore = y));
1 „Gefällt mir“
