logo2
Fizyka Chemia Matematyka strona główna   FIZYKA ZADANIA WZORY TEORIA ROZWIĽZANIA ZADAŃ   FIZYKA GIMNZAJUM ZADANIA WZORY TEORIA   CHEMIA ZADANIA WZORY TEORIA ROZWIĽZANIA ZADAŃ   MATEMATYKA WZORY ZADANIA ROZWIĽZANIA ZADAŃ   HISTORIA HISTORIA W PIGUŁCE NA TELEFON   JĘZEYK POLSKI EPOKI LITERACKIE   MODELARSTWO SZKUTNICZE SZKUTNICTWO ŻAGLOWCE HISTORYCZNE   TWORZENIE GIER 2D W DELPHI  

 
omega

Pobierz kod OMEGAPAKER
KOMPRESJA I DEKOMPRESJA PLIKÓW GRY


Serdecznie witam wszystkich czytających ten artykuł w którym chcę opisać metodę pakowania i rozpakowywania plików gry. Metoda będzie bardzo prosta, oparta na nieskomplikowanej klasie, którą Ty czytelniku możesz sobie rozbudować... Oczywiście rozwiązanie będzie opisane w Object Pascalu i z użyciem Omegi.


Ukryte właściwości OMEGI

Przeglądając pakiet Omegi można natrafić na taki unit: LZRW1.PAS. Zawiera on bardzo ciekawe metody związane z kompresją i dekompresją danych. Zainteresowanych odsyłam do przeglądnięcia wspomnianego unit-u.


Pisząc własny edytor światów oraz oprogramowując pliki zapisu stanu gry musimy się zdecydować na sposób przechowywania danych. Najłatwiej jest to zapisać w zwykłym pliku tekstowym. Ale powstaje banalny problem: do takiego pliku każdy będzie mieć dostęp pomimo zmianie jego rozszerzenie. Aby zabezpieczyć przed manipulacjami w sercach poziomów gry pasuj zastosować kodowanie...Omega daje inne rozwiązanie. Można takie pliki spakować a to w zupełności wystarczy, ba dodatkowo mamy upakowanie danych.

Tyle słowa wstępnego

Prosta klasa pakera


 


TPaker=class(TLzrw1)
private
FSciezka:string;//sciezka i nazwa pliku kompresji lub dekompresji
FStrumienWejscia,
FStrumienWyjscia:TMemoryStream;
public
property StrumienWejscia:TMemoryStream read FStrumienWejscia write FStrumienWejscia;
property StrumienWyjscia:TMemoryStream read FStrumienWyjscia write FStrumienWyjscia;
constructor Create(AOwner: TComponent;ASciezka:string);virtual;
destructor Destroy;override;
procedure Kompresja;
procedure Dekompresja(var AListaDanych:TStringList);
end;

 



Najważniejsze procedury tej klasy to

a) procedure Kompresja
b) procedure Dekompresja

Procedura Kompresja

Opiera się na odwołaniu do wbudowanej metody kompresji danych klasy bazowej TLzrw1 odczytany plik pakowany jest do wskazanego pliku FSciezka po wykonaniu kilku linii kodu:


 


FStrumienWejscia.Position:=0;
UseStream:=true;
InputStream:=FStrumienWejscia;
OutputStream:=FStrumienWyjscia;
Compress;
FStrumienWyjscia.Position:=0;
FStrumienWyjscia.SaveToFile(FSciezka);

 



Tu uwaga kod przykładowego programu otwiera pliki z rozszerzeniem *.txt i pakuje je do pliku o takiej samej nazwie ale zmienionym rozszerzeniu na *.OmegaPak

Procedura Dekompresja

Ta procedura rozpakowuje pobrane dane do zmiennej typu TStringList W kodzie programu jest to zmienna o nazwie ListaDanych Jest to wygodny sposób przechowywania rozpakowanego pliku. Ponieważ mamy dostęp do pojedynczej linii pliku ListaDanych.Strings[i] Wystarczy teraz zastosować funkcję opracowaną przez Tostera (jest gdzieś w zasobach www.unit1.pl) odczytu danych oddzielonych ustalonym separatorem i możemy tak sobie zorganizować zapis danych naszego świata, że w jednej linii będziemy mieć szereg informacji (oddzielonych np. spacją) o pojedynczej kości mapy świata gry...

Poniżej kod procedury rozpakowującej dane


 


FStrumienWejscia.LoadFromFile(FSciezka);
FStrumienWejscia.Position:=0;
UseStream:=true;
InputStream :=FStrumienWejscia;
OutputStream:=FStrumienWyjscia;
Decompress;
FStrumienWyjscia.Position:=0;
AListaDanych.LoadFromStream(FStrumienWyjscia);

 



I to wszystko. Resztę czytelniku znajdziesz w załączonym kodzie. Jeszcze jedno do projekty należy dołączyć w sekcji uses

uses
...,LZRW1, ...


KONIEC

Nowosć

Układ okresowy pierwistków chemicznych
Układ okresowy  na telefon, tablet, smartfon
Darmowa aplikacja
Okręty- bitwa morska
okręty gra sieciowa
Darmowa aplikacja na Androida
Kalkulator jednostek fizycznych
przelicznik jednostek fizycznych  na telefon, tablet, smartfon
Darmowa aplikacja
Znaki drogowe.
znaki drogowe na telefon, tablet, smartfon
Darmowa aplikacja na Androida
Saper (512x512 pól)
Saper (512x512 pól)
Darmowa gra logiczna
The Friends of Mine
The Friends of Mine
Darmowa gra logiczna

MACHO. KAMIENNA LEGENDA
MACHO. KAMIENNA LEGENDA game for android
MACHO. STONE LEGEND
Game 2d for Android

Geometria. Wzory
geometri kalkulator wzory figur bryl

Alkomat
Alkomat na androida
Zobacz obliczenia zadań:
Zbiór zadań z fizyki K Chyla Zbiór zadań z fizyki 1 W Mroszczyk, J. Salach
Zbiór zadań z chemii zakres podstawowy K Pazdro Zbiór zadań z chemii zakres rozszerzony K Pazdro
 

epomoce.pl
Fizyka
Fizyka- zadania 1
Fizyka- zadania 2
Zadania dostęp www
Fizyka- wzory
Fizyka- teoria
Chemia
Zadania zak. roz.
Zadania zak. podst.
Zadania dostęp www
Chemia-teoria

Matematyka
Język polski
Historia (pigułka)
Historia (rozszerzona)
Fizyka- gimnazjum
Fizyka zadania- gimnazjum
Fizyka- gimnazjum teoria
Znaki drogowe
 
Matematyka wzory zadania gimnazjum
programowanie
koga
grafika2D


 


2008-2012 ©www.ePomoce.pl

FIZYKA, CHEMIA, MATEMATYKA, HISTORIA, JĘZYK POLSKI. Rozwiazania zadań z fizyki, rozwiazania zadań z chemii, zadania z fizyki, zadania z chemii