Bilder vor Benutzer verbergen

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Fox

Betreff: Bilder vor Benutzer verbergen

BeitragMi, Jul 21, 2004 2:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Hiho,

hab' im Forum gesucht, aber nichts gefunden.

Ich habe im Grafik Ordner meines Spiels einige Hintergrundgrafiken, die im Programm mehr oder weniger 1 zu 1 geladen werden. Ein wesentlicher Teil der Motivation besteht darin, im Laufe des Spiels die Grafiken zu finden. Wenn der Spieler diese durch einen Klick in den Ordner "Grafiken" sofort alle übersehen kann, wäre das ziemlich schade.
Habt ihr eine Idee, wie ich die Bilder vor dem User "verstecken" kann?
Muss kein grandioser Schutzmechanismus sein, aber man soll halt nicht mit 3 Klicks alles einsehen können.

Ich hatte spontan die Idee, die fertigen Grafiken in 8-16 Teilen zu "zerstückeln" und dann erst im Quellcode wieder zusammenzusetzen. Das würde aber wohl kaum zur Übersichtlichkeit des Sources beitragen und wäre darüber hinaus einiges an Aufwand.

Dann kam ich auf die Idee, sämtlichen Grafikdateien unscheinbare Namen zu geben ("Fx1") und die Dateiendungen zu verunstalten ("Fx1.xx"), so dass keine direkte Verknüpfung zu einem Grafikprogramm besteht. Beim Programmstart würden zunächst alle Dateien wieder in ein Grafikformat umbenannt ("Fx1.xx > Fx1.png") und dann normal verarbeitet. Nach Beendigung des Programms benennt eine Funktion die Files dann wieder um. Aber auch das ist wohl einiges an Arbeit, außerdem weiß ich nicht, ob die Bilderinformationen den Prozess überstehen würden.

Wie würdet ihr die Angelegenheit angehen?

Danke für's Lesen und tiefe Sympathie für jeden Lösungsansatz im Voraus! Smile

- Fox

Travis

BeitragMi, Jul 21, 2004 3:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Da gibt es viele Methoden. Eine relativ einfache, die du schon genannt hast, ist einfach die Dateinamen anders zu benennen. Wenn das noch nicht reicht, dann könnte man ja einen Packer nehmen, der dir alle Grafiken zu einem Archiv zusammenpackt. Müsste es hier irgendwo im Forum geben.

Ansonsten könnte man die Dateien noch verschlüsseln. dazu gibt es hier auch einige Beispiele. Folgendes habe ich mal selbst geschrieben. Es ist zwar relativ primitiv, aber es reicht um die Bilddateien für Grafikprogramme unleserlich zu machen. Obwohl ich das alles mehrfach getestet habe, würde ich aber trotzdem Sicherheitskopien machen, bevor du diese Funktionen benutzt, weil am Dateiende Prüfbytes angehängt werden. Dadurch wird das Bild aber nicht beschädigt oder verändert.


Code: [AUSKLAPPEN]

Start = MilliSecs()
 Crypt("Bild.jpg"): Print "File crypted   " + (MilliSecs()-Start) + "ms"
Start = MilliSecs()
 DeCrypt("Bild.jpg"): Print "File decrypted " + (MilliSecs()-Start) + "ms"

WaitKey
End


; --- Datei verschlüsseln ---
Function Crypt(File$)

 Datei = OpenFile(File$)

 If Datei = 0 Then RuntimeError("Die zu verschlüsselnde Datei " + File$ + " wurde nicht gefunden.")

 SeekFile Datei, FileSize(File$)-2
 Check = ReadShort(Datei)
 If Check = 47391 Then RuntimeError("Datei ist bereits verschlüsselt")
 SeekFile Datei, 0

 For i = 0 To FileSize(File$)
  Wert = ReadInt(Datei)
  SeekFile Datei, FilePos(Datei)-4
  WriteInt Datei, Wert + 9 * i
  SeekFile Datei, FilePos(Datei)+4
  If Eof(Datei) Then Exit
 Next
 
 WriteShort Datei, 47391
 
CloseFile Datei

End Function
; --- Datei verschlüsseln ---


; --- Datei entschlüsseln ---
Function Decrypt(File$)

 Datei = OpenFile(File$)

 If Datei = 0 Then RuntimeError("Die zu entschlüsselnde Datei " + File$ + " wurde nicht gefunden.")
 
 SeekFile Datei, FileSize(File$)-2
 Check = ReadShort(Datei)
 If Check <> 47391 Then RuntimeError("Datei ist nicht verschlüsselt")
 SeekFile Datei, 0

 For i = 0 To FileSize(File$)
  Wert = ReadInt(Datei)
  SeekFile Datei, FilePos(Datei)-4
  WriteInt Datei, Wert - 9 * i
  SeekFile Datei, FilePos(Datei)+4
  If Eof(Datei) Then Exit
 Next

 WriteShort Datei, 0
 
 CloseFile Datei

End Function
; --- Datei entlüsseln ---
www.funforge.org

Ich hasse WASD-Steuerung.

Man kann alles sagen, man muss es nur vernünftig begründen können.
 

Fox

BeitragMi, Jul 21, 2004 3:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Hiho,

mit .Jpg's und .Bmp's arbeitet das Ganze prima - nur leider nicht mit .Png's ... Sad

Zwar kann ich die Png-Files nach dem Entschlüsseln wieder in Grafikprogrammen laden, BB+ nimmt sie aber nicht mehr an; der Bildschirm bleibt schwarz.
 

René Meyer

BeitragMi, Jul 21, 2004 7:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst den Bilddateien z.B. die Endung MP3 geben; BB lädt sie trotzdem korrekt.
www.blitzbasic.de | Das Buch zu Blitz Basic: www.schreibfabrik.de/txt/bbb
 

Edlothiol

BeitragMi, Jul 21, 2004 11:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Oder Terabit Datapacker:

http://www.blitzcoder.com/cgi-...30126.html
 

David

BeitragMi, Jul 21, 2004 11:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Code: [AUSKLAPPEN]

Graphics 640, 480, 32
SetBuffer BackBuffer()

Crypt( "bild.png" )

image = LoadImage( "bild.png" )

While Not KeyHit( 1 )
   DrawImage( image, 10, 10 )
   Flip
   Cls
Wend

End

Function Crypt( fileName$ )
   file = OpenFile( fileName$ )
   
   If ( file = 0 ) Then RuntimeError( "Datei nicht gefunden" )
   
   While Not Eof( file )
      val = ReadByte( file )
      val = val Xor $ff
      SeekFile( file, FilePos( file ) - 1 )
      WriteByte( file, val )
      SeekFile( file, FilePos( file ) + 1 )   
   Wend
   
   CloseFile file
End Function


Versuchs so, da klappts auch mit den PNG Dateien.
Is zwar ne ganz billige Methode, aber evtl. hilfts dir ja. Smile

Im Prinzip reichts aber schon, wen du das/die ersten Byte/s abänderst.

grüße
http://bl4ckd0g.funpic.de
 

Fox

BeitragMi, Jul 21, 2004 17:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi David,

deine Methode klappt auch mit .Png's problemlos. Danke! Smile

Kann mir jemand erklären, warum Travis' Funktion das Dateiformat hinterher nicht mehr ausgeben kann, wohingegen es bei David ohne Murren funktioniert?

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMi, Jul 21, 2004 18:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Kleinere Bilder lese ich als Data ein und benutzte die dann aus dem Code herraus, da kommt dann nichts auf die Festplatte
allerdings sind die exes dann ziemlich groß, die ich dann aber mit upx packe
[BB2D | BB3D | BB+]
 

David

BeitragMi, Jul 21, 2004 22:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Travis schreibt noch einen Shortwert hinten an die Datei ran, könnte mir vorstellen das da irgendwas nicht richtig läuft.
Wohingegen das eigendlich kein Problem ergeben dürfte... Confused

grüße
http://bl4ckd0g.funpic.de

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group