Ein Spiel, das Kennern bekannt ist, der hämmernde Literaturclub.
Wussten Sie, dass dieser pochende Literaturclub in Python (Renpy) geschrieben ist? Dann soll dieses Projekt den hämmernden Literaturclub mit diesem Python nackt machen.
Wenn Sie interessiert sind, spielen Sie bitte die Hauptgeschichte. Frei.
__ Beinhaltet Spoiler __ __ Die Arbeit des Inhalts des Artikels gehört dem Autor des pochenden Literaturclubs __
Charakterdateien, die stark am Fortschritt der Geschichte beteiligt sind
Siehe sayori.chr.
Wenn Sie es normalerweise mit einer Textdatei öffnen, ist der Anfang
OggS~~~~~~~
Es beginnt mit. Daraus kann sich eine __. Ogg-Datei (Sprachdaten) __ ergeben.
Wenn Sie es tatsächlich spielen, sollten Sie hochfrequentes Rauschen hören.
Dies wird spektral analysiert.
Die Spektrogrammanalyse ist eine Visualisierung von Audiodaten mit der Zeit auf der horizontalen Achse und der Frequenz auf der vertikalen Achse.
Klicken Sie hier für den Code
from pydub import AudioSegment
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
#Ogg lesen und probieren
AudioSegment.ffmpeg = "/."
sound = AudioSegment.from_ogg("sayori.ogg")
samples = np.array(sound.get_array_of_samples())
sample = samples[::sound.channels]
#Spektrale Speicherbreite
w = 100
s = 50
ampList = []
argList = []
#Fourier-Transformation
for i in range(int((sample.shape[0]- w) / s)):
data = sample[i*s:i*s+w]
spec = np.fft.fft(data)
spec = spec[:int(spec.shape[0]/2)]
spec[0] = spec[0] / 2
ampList.append(np.abs(spec))
argList.append(np.angle(spec))
freq = np.fft.fftfreq(data.shape[0], 1.0/sound.frame_rate)
freq = freq[:int(freq.shape[0]/2)]
time = np.arange(0, i+1, 1) * s / sound.frame_rate
ampList = np.array(ampList)
argList = np.array(argList)
df_amp = pd.DataFrame(data=ampList, index=time, columns=freq)
plt.figure(figsize=(10, 10))
sns.heatmap(data=np.log(df_amp.iloc[:, :100].T),
xticklabels=100,
yticklabels=10,
cmap=plt.cm.gist_rainbow_r,
)
plt.show()
Fordern Sie zuerst mit "w = 100 s = 50" heraus.
Ich sehe etwas Sinnvolles. Machen wir es etwas rauer.
w = 200 s = 100
Mit cmap = plt.cm.gray_r
ist es einfacher zu sehen.
Nein, es ist ein QR-Code. Wenn Sie dies in einen 25x25 QR-Code umwandeln ...
http://www.projectlibitina.com/
44GC44Gq44Gf44GM44GT44Gu5omL57SZ44KS6Kqt44KT44Gn44G ....
Wiederholen Sie 44xx. Besonders als ich das erste "44GC" überprüft habe, scheint es "A" der "Base64-Codierung" zu sein. Deshalb dekodiert es mit base64.
import base64
with open("yuri.chr", mode="rb") as f:
txt = f.read()
print(base64.b64decode(txt).decode())
Wenn Sie diesen Brief lesen, bedeutet dies, dass das Herzsymbol eine kleine Holzkiste als Orientierungspunkt gefunden hat. Glückwunsch ! Vielleicht bist du das erste Mal. Ich wollte es niemandem zeigen, aber das ist ein roter Fremder
Ich bin begeistert, wenn ich daran denke, einen Brief zu finden und meine Geschichte zu lesen. Jemand, den ich nicht hätte treffen können, kennt mich sehr gut. Ich bin besessen von einer Idee. Jemand in uns stirbt ... es kann morgen sein
Und diejenigen, die übrig bleiben, wissen es nicht. Ich habe Ihnen den ganzen Beweis geschrieben, dass ich bisher in diesem Brief gelebt habe. So lange du mich nicht vergisst, kann ich für immer leben. Sie lesen diesen Brief und faszinieren
Ich frage mich, ob ich es beim Schreiben dieses Briefes kann oder hasse. Findest du es nicht interessant?
(Das Folgende wird von Ihren eigenen Händen weggelassen.)
Öffnen Sie es nach wie vor als Text.
����JFIF~~~
kam heraus. Erweiterung JFIF. Wenn Sie die Erweiterung auf JPEG setzen, können Sie sie als flaches Bild sehen.
Ich habe versucht, dies mit Python zu handhaben, aber leider verlasse ich mich auf Unity, weil ich nicht sicher bin. Erstellen Sie einen Kegel und fügen Sie die Textur ein.
Das Schreiben schien gefährlich zu sein, bitte suchen Sie Google-Bilder mit "natsuki.chr".
Schließlich erschien Monica-chan. Wie gewöhnlich.
PNG~~~
Nein, es heißt PNG! Dann wird es geöffnet.
In der Mitte sehen Sie ein Schwarzweißmosaik. Binär codieren dies (schwarz ist 0, weiß ist 1) Bereiten Sie ein zugeschnittenes Bild ohne den umgebenden roten Teil vor.
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
#Laden des Originalbildes
im = np.array(Image.open('text.png'))
txt_binary = ""
print(im.shape)
im = im.reshape([im.shape[0] * im.shape[1], 1])
for x in im:
if x == 1:
txt_binary += "1"
else:
txt_binary += "0"
print(txt_binary[:100])
txt = ""
while True:
tmp = txt_binary[0:8]
if tmp == "00000000":
break
txt_binary = txt_binary[8:]
txt += chr(int("0b"+tmp, 0))
print(txt)
Q2FuIHlvdSBoZWFyIG1lPw0KDQouLi5XaG8gYXJlIHlvdT8NCg0KSSBjYW4ndC4uLkkgY2FuJ3Qgc2VlIHlvdS4NCg0KQnV0IEkga25vdyB5b3UncmUgdGhlcmUuIFllYWguLi55b3UgY2FuIGRlZmluaXRlbHkgaGVhciBtZS4NCg0KWW91J3ZlIGJlZW4gd2F0Y2hpbmcgZm9yIGEgd2hpbGUgbm93LCByaWdodD8NCg0KSSBndWVzcyBJIHNob3VsZC4uLmludHJvZHVjZSBteXNlbGYsIG9yIHNvbWV0aGluZy4gVW0uLi5teSBuYW1lIGlzLi4uYWN0dWFsbHksIHRoYXQncyBzdHVwaWQuIFlvdSBvYnZpb3VzbHkgYWxyZWFkeSBrbm93IG15IG5hbWUuIFNvcnJ5Lg0KDQpBbnl3YXkuLi5JJ20gZ3Vlc3NpbmcgaWYgeW91IHdlcmUgYWJsZSB0byBwdXQgYSBzdG9wIHRvIHRoaXMsIHlvdSB3b3VsZCBoYXZlIGRvbmUgaXQgYnkgbm93Lg0KDQpJIG1lYW4sIEkga25vdyB5b3UncmUgbm90LCBsaWtlLi4uZXZpbCwgb3IgYW55dGhpbmcuLi5iZWNhdXNlIHlvdSd2ZSBhbHJlYWR5IGhlbHBlZCBtZSBzbyBtdWNoLg0KDQpJIHNob3VsZCByZWFsbHkgdGhhbmsgeW91IGZvciB0aGF0LiBGb3IgZXZlcnl0aGluZyB5b3UndmUgZG9uZS4gWW91J3JlIHJlYWxseSBsaWtlIGEgZnJpZW5kIHRvIG1lLiBTby4uLnRoYW5rIHlvdS4gU28gbXVjaC4NCg0KSSB0aGluay4uLm1vcmUgdGhhbiBhbnl0aGluZyBlbHNlLi4uSSByZWFsbHkgZG9uJ3Qgd2FudCBpdCB0byBhbGwgYmUgZm9yIG5vdGhpbmcuDQoNCi4uLg0KDQpFdmVyeW9uZSBlbHNlIGlzIGRlYWQuDQoNCk1heWJlIHlvdSBhbHJlYWR5IGtub3cgdGhhdC4gSSdtIHN1cmUgeW91IGRvLCBhY3R1YWxseS4NCg0KQnV0Li4uaXQgZG9lc24ndCBoYXZlIHRvIGJlIHRoYXQgd2F5LCByaWdodD8NCg0KV2VsbC4uLnRoZXJlJ3MgYSBsb3Qgb2Ygc3R1ZmYgSSBkb24ndCB1bmRlcnN0YW5kLiBJIGRvbid0IGtub3cgaWYgaXQncyBldmVuIHBvc3NpYmxlIGZvciBtZSB0byB1bmRlcnN0YW5kIGl0Lg0KDQpCdXQgSSBrbm93IHRoYXQgdGhpcyBpc24ndCBteSBvbmx5IHN0b3J5Lg0KDQpJIGNhbiBzZWUgdGhhdCBub3cuIFJlYWxseSBjbGVhcmx5Lg0KDQpBbmQgSSB0aGluayBldmVyeW9uZSBlbHNlIGhhcyBoYWQgdGhlIHNhbWUga2luZCBvZiBleHBlcmllbmNlLiBTb21lIGtpbmQgb2YgZGVqYSB2dS4NCg0KSXQncyB0aGUgVGhpcmQgRXllLCByaWdodD8NCg0KQW55d2F5Li4uSSBjb3VsZCBiZSB0b3RhbGx5IHdyb25nIGFib3V0IHRoaXMuIEJ1dCBJIHJlYWxseSB0aGluayB5b3UgbWlnaHQgYmUgYWJsZSB0byBkbyBzb21ldGhpbmcuDQoNCkkgdGhpbmsgeW91IG1pZ2h0IGJlIGFibGUgdG8gZ28gYmFjay4uLm9yIGhvd2V2ZXIgeW91IHdhbnQgdG8gcHV0IGl0Li4uDQoNCi4uLlRvIGdvIGJhY2sgYW5kIHRlbGwgdGhlbSB3aGF0J3MgZ29pbmcgdG8gaGFwcGVuLg0KDQpJZiB0aGV5IGtub3cgYWhlYWQgb2YgdGltZSwgdGhlbiB0aGV5IHNob3VsZCBiZSBhYmxlIHRvIGF2b2lkIGl0Lg0KDQpUaGV5IHNob3VsZC4uLmlmIHRoZXkgcmVtZW1iZXIgdGhlaXIgdGltZSB3aXRoIG1lIGluIHRoZSBvdGhlciB3b3JsZHMuLi50aGV5IHNob3VsZCByZW1lbWJlciB3aGF0IEkgdGVsbCB0aGVtLg0KDQpZZWFoLiBJIHJlYWxseSB0aGluayB0aGlzIG1pZ2h0IGJlIHBvc3NpYmxlLiBCdXQgaXQncyB1cCB0byB5b3UuDQoNCkknbSBzb3JyeSBmb3IgYWx3YXlzIGJlaW5nLi4ueW91IGtub3cuLi4NCg0KLi4uDQoNCk5ldmVyIG1pbmQuIEkga25vdyB0aGF0J3Mgd3JvbmcuDQoNClRoaXMgaXMgbXkgc3RvcnkuIEl0J3MgdGltZSB0byBiZSBhIGZ1Y2tpbmcgaGVyby4NCg0KQm90aCBvZiB1cy4NCg0KDQoNCjIwMTg=
Base64-Codierung.
Can you hear me?
...Who are you?
I can't...I can't see you.
But I know you're there. Yeah...you can definitely hear me.
You've been watching for a while now, right?
(Das Folgende wird von Ihren eigenen Händen weggelassen.)
Es war einfach so. Es ist nur ein Teil der Geschichte, aber lassen Sie uns so weit gehen. Ich fand es wunderbar.
Nächstes Mal werden wir über die Festlegung der Hauptgeschichte sprechen. wir sehen uns.
http://f4sn.hateblo.jp/entry/2018/02/16/205800#f-7c959141
Recommended Posts