Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

BMP-Bilder vor dem User verstecken

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
George



Anmeldungsdatum: 21.02.2010
Beiträge: 13
Wohnort: Bremen

BeitragVerfasst am: 15.01.2011, 15:00    Titel: BMP-Bilder vor dem User verstecken Antworten mit Zitat

Hallo zusammen,
für ein Adventure-Spiel, das ich gerade schreibe bewegt sich der USer durch eine Welt, die mit einer Menge von BMP-Bildern dargestellt wird. Diese werden je nach Spielfortschritt z. B. mit dem BLOAD-Befehl aus einem Unterverzeichnis "data" geladen und auf dem Bildschirm gebracht.
Aber, damit die Spielspannung erhalten bleibt, darf der User die ganzen BMPs auf seinem Rechner natürlich vorher nicht sehen (z. B. über "Arbeitsplatz").
Gibt es eine Möglichkeit, BMP-Dateien zu verschlüsseln, aber so, dass FreeBASIC sie trotzdem laden und verarbeiten kann?

Danke für Hinweise! - Grüße George
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 15.01.2011, 15:22    Titel: Antworten mit Zitat

Es gibt eine einfache Möglichkeit, die aber unter Umständen sehr viel mehr Platz braucht. Man kann das BIld einfach in DATA-Blöcke umwandeln und mit READ wieder einlesen.

So mache ich es bei meinem Projekt Kirby. Wie die Dateien eingelesen werden, ist im Code mit dabei, das erzeugen der Datazeilen ist genau das Gegenteil dazu.

Die weitaus einfachere Methode wäre es, die Dateiendung der BMPs einfach zu ändern. Damit sind 95% der Benutzer überfordert. zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 15.01.2011, 15:40    Titel: Antworten mit Zitat

nen Linuxer wird das aber nicht sonderlich stören, da Linux generell keinen großen Wert auf Dateiendungen legt, und die meisten Dateimanager mit etwas Magie zwinkern (magic numbers) den Dateityp bestimmen...

wenn du wirklich auf Nummer sicher gehen willst, musst du wohl deine eigene Laderoutine schreiben zwinkern


abgesehen davon, verwende lieber pngs zwinkern die sind kleiner und können mehr
_________________
MFG
Flo

Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.

zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 15.01.2011, 15:50    Titel: Antworten mit Zitat

95% der Benutzer verwenden kein Linux weil sie eben zu diesen 95% dazugehören. Wenn die Dateiendung unter Windows nicht stimmt, würde es ein Programm zwar vermutlich aufgrund der magic number erkennen, aber dazu müsste man erst auf die Idee kommen, der Dateiendung ein Programm zuzuweisen. Wie gesagt, 95% schaffen das nicht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 15.01.2011, 17:12    Titel: Antworten mit Zitat

Ich denke da bleibt eigentlich nur ein 'eigenes' Dateiformat, je nach groesse und Menge ist aber auch MODs Variante nicht zu verachten, ich persoenlich 'bastel' grafiken die ich staendig brauche zu einer funktion um die mir dann einfach den pointer zu den bild zuruck gibt... ist zudem dann auch sehr schnell und erfordert keine 'externen' dateien mehr, praktisch fuer fonts und immer wieder auftauchenden Logos ect...
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 15.01.2011, 17:51    Titel: Antworten mit Zitat

Als kleiner Ausschweifer ein Zitat aus Wikipedia:

http://de.wikipedia.org/wiki/ROT13 hat Folgendes geschrieben:
Der einzige Zweck von ROT13 ist also der, dass der Empfänger einer Nachricht die bewusste Entscheidung treffen muss, den verschlüsselten Abschnitt zu lesen.


d.h. dasselbe möchtest Du hier ja auch erreichen: Schummeln (Cheaten) lediglich unbequem machen aber nicht verunmöglichen; für letzteres muss der Spieler halt seinen Fleiss ins Code-Studium bzw. Reverse Engineering investieren.

Von dem her reicht eine eigene Bildladeroutine (proprietäres Format kreieren) bereits aus. Tipp: An dieser Stelle würde ich mit den String-Texten genau dasselbe tun! Und als weiteren Tipp: Dialogtexte und Bilder würde ich in Deinem Fall schon als Klartext-Source erstellen, aber eine Make-Datei für den Compilierprozess aufbauen, welcher alle Bilder und Texte in Dein Verschummerungsformat übersetzt, bevor der FBC angeworfen wird (Präprozessor). Also für dieses FB-Projekt speziell eine BUILD.BAT erstellen, weil weitaus mehr als nur eine .BAS in ein .EXE übersetzen nötig ist.

Ansonsten noch ein Artikel von mir zum Thema Adventures:

http://www.dreael.ch/Deutsch/BASIC-Knowhow-Ecke/Abenteuerspiel.html

=> Idealerweise würde ich an Deiner Stelle sogar nur so etwas ähnlich der SCUMM-Engine aufbauen und den eigentlichen Abenteuerspiel-Inhalt in separate Script-Dateien packen. => dann muss Dein BUILD.BAT eigentlich nur diese Inhaltsdateien zusammen mit den Bildern "übersetzen", um daraus eine (hoffentlich signierte) Installer-Datei zu erzeugen.

Übrigens an dieser Stelle noch eine nette Erinnerung aus meiner Commodore 64-Zeit vor über 20 Jahren: Damals hatte ich auch schon Adventures aus Abtipp-Listings von Zeitschriften gespielt (Zeitalter lange vor dem Internet/Online-Netze und wo auch die Heftdiskette erst am Aufkommen war!) und den Code studiert, wenn ich nicht mehr weitergekommen war... ;-)

Spielmethode <Run Stop>, LIST 300-500, ? AA$, M$(5):M3=1:CONT ;-)
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 15.01.2011, 18:43    Titel: Antworten mit Zitat

wenn du Engine und eigentliches Spiel trennen willst (wie SCUMM), kann ich dir die Skriptsprache Lua ans Herz legen... Die kannst du in dein Programm einbinden, funktioniert prima zwinkern
_________________
MFG
Flo

Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.

zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 15.01.2011, 19:34    Titel: Antworten mit Zitat

Hallo,

in FreeBASIC gibt es noch eine sehr einfache Möglichkeit, Bilddateien vor neugierigen Blicken des Otto-Normal-Benutzers zu schützen. Wurde ein BMP-Bild in einen Bildpuffer geladen (mittels BLOAD), kann man diesen als "Speicherabbild" in eine Datei speichern (mit der BSAVE-Anweisung). Dazu gibt man bei der BSAVE-Zieldatei eine andere Dateiendung als BMP an (z.B. "BSV"). Dann wird der Bildpuffer nicht als BMP gespeichert, sondern im FreeBASIC-eigenen Grafikpufferformat. Die so gespeicherte Bilddatei kann man mit Paint, IrfanView, der Windows-Bildvorschau usw. nicht anzeigen, sondern nur mit BLOAD in FreeBASIC laden.

=> Code-Beispiel: bloadbsave.zip (1,38 MB)

Viele Grüße!
Sebastian
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
George



Anmeldungsdatum: 21.02.2010
Beiträge: 13
Wohnort: Bremen

BeitragVerfasst am: 16.01.2011, 00:42    Titel: Antworten mit Zitat

Danke für die Hinweise!
Der Weg von Sebastian scheint mir am einfachsten für meine Zwecke. Mit den anderen Lösungen bin ich teilweise auch mit meinen Kenntnissen überfordert - obwohl sie bestimmt auch gut für mich wären.

Wenn PNG-Dateien kleiner sind wäre das auch nicht schlecht, da mein Spiel aus etwa 400 Bildern bestehen wird. Kann ich mit den PNG-Dateien genau so arbeiten wie mit den BMP? Also kann ich sie auch über BLOAD laden und mit PUT auf den Bildschirm oder einen Bildpuffer setzen? Und dann auch Teile aus den Bildpuffer auf den Bildschirm platzieren?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
XOR



Anmeldungsdatum: 23.07.2010
Beiträge: 161

BeitragVerfasst am: 16.01.2011, 01:50    Titel: Antworten mit Zitat

Zitat:
Kann ich mit den PNG-Dateien genau so arbeiten wie mit den BMP? Also kann ich sie auch über BLOAD laden und mit PUT auf den Bildschirm oder einen Bildpuffer setzen?

Nein du brauchst, um PNG-Datein einfach laden zu konnen eine externe Lib.
Man koennte die Bilder auch in die exe mithineincompilieren, ueber das rc script.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 16.01.2011, 02:07    Titel: Antworten mit Zitat

George hat Folgendes geschrieben:
Wenn PNG-Dateien kleiner sind wäre das auch nicht schlecht, da mein Spiel aus etwa 400 Bildern bestehen wird. Kann ich mit den PNG-Dateien genau so arbeiten wie mit den BMP?

Da hilft Voltas Tutorial zum Thema weiter: http://www.freebasic-portal.de/tutorials/png-bilder-anzeigen-speichern-27.html lächeln
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 16.01.2011, 14:33    Titel: Antworten mit Zitat

George hat Folgendes geschrieben:
Kann ich mit den PNG-Dateien genau so arbeiten wie mit den BMP? Also kann ich sie auch über BLOAD laden und mit PUT auf den Bildschirm oder einen Bildpuffer setzen? Und dann auch Teile aus den Bildpuffer auf den Bildschirm platzieren?


jein. du musst sie mit PLOAD() laden, einem bestimmten befehl aus einer library... das zu benutzen ist aber sehr einfach...
zerstören geht glaube ich auch mit einer anderen funktion, lässt sich aber bis auf die paar anderen namen genauso handhaben

ansonsten erhältst du dann einen imagebuffer, mit dem du arbeiten kannst wie gehabt
_________________
MFG
Flo

Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.

zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
George



Anmeldungsdatum: 21.02.2010
Beiträge: 13
Wohnort: Bremen

BeitragVerfasst am: 16.01.2011, 17:42    Titel: Antworten mit Zitat

Vielen Dank für die Hinweise! - Da gibt es für mich erst mal eine Menge zu lernen und auszuprobieren!
Grüße George
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz