Citanie z datoveho suboru/2 mnoziny a 2 bloky/ – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Citanie z datoveho suboru/2 mnoziny a 2 bloky/ – Pascal – Fórum – Programujte.comCitanie z datoveho suboru/2 mnoziny a 2 bloky/ – Pascal – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
marek170
Návštěvník
14. 8. 2010   #1
-
0
-

....

potreboval by som spravit program na citanie adries napriklad 550 552 554 556 pre mnozina1 551 552 553 555 pre mnozina2

tieto dve veci spojit ... blok1 550-555 blok2 556-560 ...nazvy v programe ,nie v datovom subore ...subor obsahuje vela vseliakych ascii znakov a ziadne slova ...a nato nasledne zapis...

Nahlásit jako SPAM
IP: 84.245.95.–
Reklama
Reklama
Mircosoft+1
Věrný člen
16. 8. 2010   #2
-
0
-

OK, jasně, to nebude problém... podíváme se na to (mimochodem - upozorňuji, že anabázi ohledně editoru na Wolfa sleduju jenom zběžně a zdroják editoru jsem moc podrobně nestudoval):

"potreboval by som spravit program..." - OK, chápu.
"...na citanie..." - odkud? Ze souboru? Z klávesnice? Dejme tomu, že ze souboru. Z jakého? Binárního nebo textového? Dejme tomu, že binárního (file).
"...adries..." - jakých adres? Jsou to binární čísla (byte, word, dword...), ukazatele (pointer), čísla zapsaná jako text nebo co přesně? Dejme tomu, že to jsou to wordy uložené jeden za druhým.
"...napriklad 550 552 554 556 pre mnozina1..." - OK, takže adresy jsou uloženy po čtveřicích a přesně víš, kde začínají...
"...551 552 553 555 pre mnozina2..." - ...a mezi jednotlivými čtveřicemi jsou jiná data, která číst nebudeme. Je to tak? Dejme tomu, že jo.
"...tieto dve veci spojit ... blok1 550-555 blok2 556-560..." - to jako načíst všechny ty adresy do jednoho místa a pak ho rozkouskovat podle hodnot? Moc to nechápu.
"...nazvy v programe ,nie v datovom subore..." - jaké názvy? Bavíme se jenom o adresách, což jsou čísla, ne?
"...subor obsahuje vela vseliakych ascii znakov a ziadne slova..." - v čem ho otvíráš? Jestli v Notepadu a je to binární soubor, tak se vůbec nedivím.
"...a nato nasledne zapis..." - kam? A v jaké formě?

Dejme tomu, že by algoritmus mohl vypadat třeba nějak takhle (samozřejmě to není jediná možnost):

const PoziceCtveric:array[1..KolikBudeTechMnozin] of longint=(dopln,si,podle,skutecne,situace...);

var soubor:file;
adresy:array[1..KolikAdresMaMaximalneByt] of word;
index:word;
i:word;
BEGIN
assign(soubor,'BLABLA.BLA');
reset(soubor,1);
index:=1;
for i:=1 to KolikBudeTechMnozin do
begin
seek(soubor,PoziceCtveric[i]);
blockread(soubor,adresy[index],8); {8 = 2*4 = velikost jedne adresy krat pocet adres, ktere najednou cteme}
inc(index,4);
end;

...ted mas v poli Adresy nactenou jednu adresu za druhou, bez deleni na ctverice, a Index ukazuje za tu posledni...
...delej si s nimi, co potrebujes...

close(soubor);
END.

Podívej, jsi na správném fóru, rádi ti pomůžeme, ale musíš se ptát tak, aby i troubové jako já pochopili, co vlastně chceš. Nadáváš, když ti někdo napíše program s kvízem, ale tvoje dotazy jsou kvíz samy o sobě. Dong ma?

Nahlásit jako SPAM
IP: 130.119.248.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
marek170
Návštěvník
16. 8. 2010   #3
-
0
-

ahoj ,


vysvetlim to lepsie ... cize mam zdrojak na mapedit verze 7.0 alebo 4.2 ... mladsia verzia tym lepsia ...novsie maju viac operacii pridanych ... cize potrebujem prepisat ten kod na mapedit 7.0 .pas (tento program bol a je navrhnuty pre Wolfensteina 3D ,spear of DEstiny ,Blake stone a ine podobne hry - Gamemaps; Maphead)

Ale ja potrebujem tento zdrojak Mapedit.pas spravit pre hru "Nitemare 3D" ,cize je to iny engine ako Wolf3D...Jednoduchsie mapy podla mojho chapania...

Samotna hra ma 3 episody a 11levelov pre E1 . E2-E3 ma len 10levelov ...

Velkost mapy je 64x64*2 =8192 bytes (ak to ratam od nuly cize 8191)

Mapa nezacina hned od zaciatku (MAP01) , ale je tam hlavicka (neviem presny vyznam,pouzite , asi to pouziva len hra ...)

Prva mapa zacina na adrese decimalnej 513 (s nulou na zaciatku),normalne na 514;
prva mapa konci 513+8192=8 705 adrese ...


Dalsia mapa MAP02 zacina na 8 706 decimalnej adrese a konci 8706+8192=16 898 na tejto adrese ...
(dam excelovy subor kde som spravil experiment ...sedia mi cisla snad=D)

takto by sa dalo dopracovat az k poslednej mape MAP11

V tomto subore su ulozene vseliake znaky cize znaky ASCII /nieje to ziaden text/

Prvy bajt na adrese 513 je pre stenu
druhy bajt na adrese 514 je pre objekt
cize najpv je stena a potom objekt ...takto sa to strieta az po konecnu adresu 90 626
cize ta prva mnozina su steny ...1vrstva
druha mnozina su objekty ...2 vrstva

najlepsie by bolo spravit SW pre WIN32.

dodavam jeden balicek ... je tam aj zdrojak , excel subor , zopar obrazkov z mapeditora len viewer,definicie oboch programov ,mapy 1-3

mapeditor pouziva dva subory kde su ulozene odkazy zdi a objektov ...cize

0000 0000 Invalid
0001 1020 Green Wall
0002 2020 Green Wall Picture

obekty

0000 0000 invalid
0001 1050 start position W
0002 1060 start position S

.....

potom v editore si vyberiem nejaky objekt a pacnem to do mapy ...nejakeho silnejsieho nepriatela alebo kluc =DD....

----
Ak nieco napis =D

Nahlásit jako SPAM
IP: 84.245.95.–
marek170
Návštěvník
17. 8. 2010   #4
-
0
-

ak najdes na adrese 513 hexadecimalne cislo 01- to je stena neviem aka ... dalsia je 00 je objekt nic -null...a tak dalej
raz som v jednom editore nastavil sirku na 128 a krasne mi ukazalo mapu v ascii znakoch ...parada =D

Nahlásit jako SPAM
IP: 84.245.95.–
Mircosoft+1
Věrný člen
17. 8. 2010   #5
-
0
-

Jo, to už je lepší :-).

type mapa = array[0..63,0..63] of record

stena,objekt:byte;
end;
UkNaMapu=^mapa;

PoleBytu = array[0..63,0..63] of byte;
UkNaPB=^polebytu;

var mapy:array[1..11] of uknamapu;
steny,objekty:array[1..11] of uknapb;
f:file;
i,j,k:byte;


BEGIN
{nacteni map ze souboru do pameti:}
assign(f,'BLABLA.BLA');
reset(f,1);
seek(f,513);
for k:=1 to 11 do
begin
new(mapy[k]);
blockread(f,mapy[k]^,sizeof(mapa));
end;
close(f);

{rozlozeni map na steny a objekty:}
for k:=1 to 11 do
begin
new(steny[k]);
new(objekty[k]);
for i:=0 to 63 do
for j:=0 to 63 do begin
steny[k]^[i,j]:=mapy[k]^[i,j].stena;
objekty[k]^[i,j]:=mapy[k]^[i,j].objekt;
end;
end;
END.

Ukazatele používám jenom kvůli realmódovému omezení velikosti proměnné na 64 KB, ve 32b můžeš udělat přímo např. mapy:array[1..11] of mapa a vynechat ^.

Nahlásit jako SPAM
IP: 130.119.248.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
marek170
Návštěvník
17. 8. 2010   #6
-
0
-

no to by slo =D ...ale ja potrebujem ten kod mapedit.pas prepisat ...cize toto do neho vlozit...

jednoducho aby mi cital mapeditor z wolfika mapy nitemare ... je tam popisanych vela veci ale mne su to velke obtaze

Nahlásit jako SPAM
IP: 84.245.95.–
Mircosoft+1
Věrný člen
17. 8. 2010   #7
-
0
-

OK. Dej mi přesnou specifikaci formátu Nitemare a pár týdnů času a pohnu zeměkoulí... vlastně editorem (nebo se nauč programovat a napiš si to sám - časově to vyjde zhruba nastejno a ještě jako bonus skončíš se znalostí programování :-) ).

Potřebuju vědět:
- Jak soubor vypadá, přesně, byte po bytu (resp. položku po položce).
- Význam jednotlivých položek, jejich formát (datový typ) a jaké hodnoty do nich patří.
- Význam všech hodnot, tj. např. "jak vypadá stěna s kódem 02".

Hlavičku můžeš ignorovat při čtení, ale ne při zápisu - je potřeba soubor sestavit správně, jinak ho hra neskousne a celý editor bude k ničemu. Pátrat po specifikacích na internetu nebudu, na to nemám čas ani náladu.

Nahlásit jako SPAM
IP: 130.119.248.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
marek170
Návštěvník
17. 8. 2010   #8
-
0
-

da mi trocha prace ...ked dam do kopy zdi pre kazdu episodu
cite napisem ktora hodnota co reprezentuje a ako vyzera ten objekt alebo zdi ...bude to chciet upratat veci ... aby som vedel ...

Nahlásit jako SPAM
IP: 84.245.95.–
marek170
Návštěvník
19. 8. 2010   #9
-
0
-

je potřeba soubor sestavit správně, jinak ho hra neskousne a celý editor bude k ničemu. Pátrat po specifikacích na internetu nebudu

/specifikaciu by si ani nenasiel =D

mam cely ten map.1-3 rozbrat na mensie casti? alebo ako to mam urobit???
graficke vzlady mam ale dodam este nazvy ...

najlepsie bude zdi a objekty napisem do nejakeho wordu /s obrazkami a textom .../10-25 typov na 1.doc dokument

hlavicky 1-3 mam ulozene vzlast ...aj jednu celu mapu 1:1/e1m1/ ...


Jak soubor vypadá, přesně, byte po bytu (resp. položku po položce). /hlavicka ,map1,map2...map11 ako samotne subory/?
/alebo na kazdu adresu odkaz?mam v exceli spraveny dokument ...
napr. 513-wall 514-object suradnice (0,0)

/je to stara hra ziadny extra engine .../
ako to mam spravit? chces to adresach?

jak subor vypada -chces obrazky? alebo samotny subor ...ak mas hex editor ...

vyznam jednotlivych polozek som uz poslal tu na fore ...ale mozem znova

Nahlásit jako SPAM
IP: 84.245.95.–
Mircosoft+1
Věrný člen
20. 8. 2010   #10
-
0
-

Jo, nějaký ten soubor z Nitemare bude určitě potřeba. Ten tvůj XLS jsem viděl, ale ten je jenom o Wolfovi, ne? Navíc popisuje jenom adresy map a nic jiného.
Potom by mě zajímalo, který z těch souborů v capture.rar je ten datový soubor, jehož formát tady popisuješ. Vidím tam nějaké MAP.*, WALLS.*, OBJECTS.*, MAPDATA.* a OBJDATA.*, ale nevím, co si o nich mám myslet.

Jak soubor vypadá - to myslím takhle (co už vím, to tu vidíš):

- Soubor:
hlavička: 512 B, obsah - viz dále
mapa1: 64*64*2 B, viz dále
mapa2
...
mapa11
(tady soubor končí, nebo je v něm ještě něco?)

- Hlavička (jenom příklad - tohle si kompletně vymýšlím):
identifikace: 6 B, musí být 'Wolf3D'
jméno kampaně: 9 B, první byte je délka jména, ve zbylých osmi to jméno
počet map: 1 B, hodnota obvykle 11
...atd. ...

- Mapa:
pole 64*64 políček, řazeno po řádcích zleva doprava, odshora dolů (je to tak?)

- Políčko:
kód stěny: 1 B, možné hodnoty: 0 = nic, 1 = cihlová zeď, 2 = ... (hodnoty si zase jenom vymýšlím)
kód objektu: 1 B, možné hodnoty: 0 = nic, 1 = malý květináč, 2 = ...

Vzhled políček si můžeš vymyslet, jde mi jenom o to, co chceš, aby ti ten editor zobrazoval na monitoru.

A pak ještě to samé pro formát Nitemare, o tom zatím nevím nic.

Nahlásit jako SPAM
IP: 130.119.248.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
marek170
Návštěvník
20. 8. 2010   #11
-
0
-

ten xls ,neni o Wolf3d =(. to je pre Nitemare3d ...Neviem presne aku ma strukturu WOLF3D...ale zdrojak z hry by trocha pomohol ci viacej =DDD

subor:

hlavicka : 514 B(zacina na 1 ...konec na 514)
map01-Map11 ...napisane v XLS...

MAP.* - pouziva nitemare3d
GAmemaps.* - pouziva WOLF3D
Maphead.* - Pouziva Wolf3D
Walls.* - Pouziva mapviewer Nitemare3d
Objects.* - Pouziva mapviewer Nitemare3d
MApdata.* - Pouziva Mapeditor 4.2-8.5 WOlf3D...
Objdata.* - pouziva Mapeditor 4.2 -8.5 ...

Tu hlavicku (Maphead) -samotne nitemare nema ..takze bude treba vymazat tieto veci:

IDstring : ID!
Level name : Wolfmap level1

     level_type = record

map,
objects,
other : data_block;
width,
height : word;
name : string[16];
end;



-toto nema nitemare 3d vobec definovane =( =D

skor by som tam dal ten text s tymi mnozinami ...



GAMEPATH : string = '.\';
HEADFILENAME : string = 'maphead';
MAPFILENAME : string = 'maptemp';
LEVELS : word = 10;
GAME_VERSION : real = 1.0;



jedine mapfilename ...a zmenit na map

-headfilename = maphead nepouziva (x)

cely mapeditor pre wolfa

-myslim si ze bude to treba upravit nieco pomazat a nieco prepisat
su tam niektore veci co nite vobec nema ...

--k tym polickam alebo walls/objects

ano je to tak ...co napises do Walls.1-3 ..objects.1-3 to zobrazi ...

a co das aj do mapy =D ...00- nic ,,,prazdna chodba ...aby sa dalo chodit
01- stena zelena
02-modra stena ...

ked si spustis hex editor a das tam map.1 ... pojdes na adresu dec. 514...malo by sa to zacinat 01 00 01 00 01 00 01 00 01...
predtym je tam 2b 2b 05 05 05 05 3e ...

ked zmenis trebars tu prvu 01 na 06 bude v mapvieweri ina zdi ... neviem aka =D

///23.8.'10

Skratil som ten prispevok

Nahlásit jako SPAM
IP: 84.245.95.–
Mircosoft+1
Věrný člen
23. 8. 2010   #12
-
0
-

>>"ten xls ,neni o Wolf3d =(. to je pre Nitemare3d..." - aha.
>>"...Neviem presne aku ma strukturu WOLF3D..." - OK, takže je potřeba, aby si někdo důkladně pročetl zdroják wolfího editoru. Hmm...
>>"subor: hlavicka : 514 B(zacina na 1 ...konec na 514), map01-Map11 ...napisane v XLS..." - Jasně, tohle už vím od minula. Až na to, že tenkrát jsi říkal, že mapy začínají na adrese 513 (počítáno od 0).
>>"MAP.* - pouziva nitemare3d..." atd. - Jo, super, tohle jsem potřeboval vědět.
>>"...Tu hlavicku (Maphead) -samotne nitemare nema..." - Tak k čemu jsou ta data na začátku souboru? Nějaký účel mít musí, jinak by tam nebyla.
>>"...skor by som tam dal ten text s tymi mnozinami..." - Jaký text s jakými množinami?
>>"...myslim si ze bude to treba upravit nieco pomazat a nieco prepisat..." - Jo, jasně. Stačí tu něco vymontovat, tam něco předělat a rázem máš z Felicie Superba :-). Jenom to dá trochu práce.
>>"...01- stena zelena, 02-modra stena ..." - Skvělý. A dál?
>>"...ked si spustis hex editor a..." - Jo, jasně, to chápu. Vím, že jedno číslo je stěna a druhé objekt. Jenom nevím, co které číslo znamená.
>>"...ked zmenis trebars tu prvu 01 na 06 bude v mapvieweri ina zdi ... neviem aka =D..." - Ne, díky, na výzkum metodou pokus/omyl opravdu nemám čas ani náladu. Buď mi ty hodnoty někde najdeš, nebo ti udělám editor, který bude zobrazovat rovnou jenom čísla.

Nahlásit jako SPAM
IP: 130.119.248.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
marek170
Návštěvník
23. 8. 2010   #13
-
0
-

cize v skrate..

Nitemare 3d pouziva : Map.1-3
Wolfenstein 3d pouziva : gamemaps , maphead

/jednoducho nite nepodporuje gamemaps a maphead ...nema to pisane v kode

v tych suboroch (walls.1-3 , objects.1-3) su definovane objekty a zdi...
cize treba sa tam pozret... prve cislo 4cislie je dolezite u kazdeho riadku ...druhe 4-cislie je farebna kombinacia/maska/

/mam sem dat ten walls.1-3 objects.1-3 ??? myslim ako s tym zdrojakom ...Uz som to posielal .... niekde by tu mala byt priloha

"...skor by som tam dal ten text s tymi mnozinami..." - Jaký text s jakými množinami?
///myslel som dat algoritmus do toho programu - ono to ma dve vrstvy /cize prva zdi a druha objekt...

513-wall 514-object suradnice 0,0
515-wall 516 -object suradnice 0,1
....

>>"...01- stena zelena, 02-modra stena ..." - Skvělý. A dál? ///to som hodil len zbezne



ono to zacina od 514/ale aj tam je nula v hex editore tak 513/-trocha ma to myli ...

Nahlásit jako SPAM
IP: 84.245.95.–
marek170
Návštěvník
23. 8. 2010   #14
-
0
-

ten subor s walls a objects

Nahlásit jako SPAM
IP: 84.245.95.–
Mircosoft+1
Věrný člen
24. 8. 2010   #15
-
0
-

Dobrá, dobrá. Uděláme si takový malý myšlenkový experiment:

Dejme tomu, že se do toho pustím, nastuduju si zdroják editoru, porovnám ho s příslušnými datovými soubory a postupně zjistím, jak wolfí mapa přesně uvnitř vypadá.

Dejme tomu, že už jsem se do tohohle bodu dostal. Mám funkční editor, který umí načíst mapu z Wolfa, upravit ji, můžu si v ní cokoli přidat, ubrat nebo předefinovat.

Teď potřebuju napsat funkci "Ulož ve formátu Nitemare". Protože o Nitemare vím jenom to, jak vypadají mapy a kde se mají v souboru nacházet, napíšu tohle:
- Vezmi prázdný soubor.
- Zkopíruj do něj hlavičku z nějaké existující mapy, její obsah neřeš.
- Za ni nasyp těch 11 map v nitemarovském formátu, kódy zdí a objektů nech stejné jako ve Wolfovi.
- Zavři soubor.

Ty si pak Nitemare spustíš, zkusíš mapu otevřít a hra spadne s hláškou ve stylu "Invalid map file". Nebo mapu načte, ale ve hře pak zjistíš, že místo podlah jsou stěny, místo nepřátel kvetináče s kapradím a místo stěn díry do země. Řekneš mi, že ti to neběhá, pošleš mi screenshoty nebo co já vím co. Já ti odpovím, že dokud nebudu vědět, co má být na začátku souboru v té hlavičce a jaké kódy co znamenají, nehnu s tím.

Otázka zní: co mi na to potom řekneš?

Odpověď napiš hned teď. Jestli to bude něco jako "Nevím, nějak si s těmi soubory pohraj a zjisti co a jak", tak se na to vykašlu rovnou a ušetřím si luštění editoru. Jestli to bude "Dobře, zapátrám a ty hodnoty ti seženu", tak s tím začni (a už nechci slyšet nic o tom, že 513 je zeď a 514 je objekt - to už jsi zopakoval dostkrát) a až je budeš mít, pustím se do toho.

Platí?

Nahlásit jako SPAM
IP: 130.119.248.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
illioner0
Stálý člen
24. 8. 2010   #16
-
0
-

To Mircosoft : copak neni to tak - že si netroufáš trumfnout můj editor ??? :-D (rovnat se s mym životaschopnym dílem / s kterym je asi dnes prachbídně zacházeno... :-( :DD )

Nahlásit jako SPAM
IP: 90.178.107.–
Nechápu softwarové firmy, ktere utrácejí za čim dál těžkopádnější DRM ochranu!! Vidět kolem snahu o free2play model je jako příjemné připomenutí časů shareware (jen ten Microsoft stále nic nepochopil)
Mircosoft+1
Věrný člen
24. 8. 2010   #17
-
0
-

Ne že bych si netroufal... jsem normálně línej :-). Nebo spíš dostatečně vytíženej i bez tohohle.
Všechno záleží na tom, jestli Marek17 dodá dostatek informací. Jestli ne, zůstaneš bez konkurence :-).

Nahlásit jako SPAM
IP: 130.119.248.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
illioner0
Stálý člen
24. 8. 2010   #18
-
0
-

Jo no to budu napjatě sledovat - jestli to zdejší kočí zahraje do outu skrz svoji tradiční mírnou zmatenost nebo má fakt dalekosáhlý plány v designování a já ztratim výsostný postavení ;-)

Nahlásit jako SPAM
IP: 90.178.107.–
Nechápu softwarové firmy, ktere utrácejí za čim dál těžkopádnější DRM ochranu!! Vidět kolem snahu o free2play model je jako příjemné připomenutí časů shareware (jen ten Microsoft stále nic nepochopil)
marek170
Návštěvník
31. 1. 2011   #19
-
0
-

v celku to je jedno ... cakal som ze ten stary kod z Mapedit.bas modifikujete ... co mam zmenit v tom subore ... cize su to dve mnoziny zdi a objekty . nie su tam vobec nazvy map . cize seek 513 a konec seek 9425 to je pre prvy level...druhy 9426 + 8191

///vizera to na stare prispevky ...urcite sa k tomu nikto nebude vracat ...

Nahlásit jako SPAM
IP: 84.245.95.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 12 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý