Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Jos jedna igra - klasicni tetris

[es] :: Pascal / Delphi / Kylix :: Jos jedna igra - klasicni tetris

Strane: < .. 1 2 3 4 5

[ Pregleda: 15007 | Odgovora: 90 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

_v!rus_
BGD

Član broj: 40451
Poruke: 313
*.vdial.verat.net.



+1 Profil

icon Re: Jos jedna igra - klasicni tetris16.01.2005. u 02:44 - pre 234 meseci
Imam problem...
Klasa TWorld instancira klasu TCharacter (Player: TCharacter)
Klasa TCharacter koristi klasu TWorld (TWorld.IsAvailable)

Problem je, pogadjate, circular unit reference...
E sad...

Resenje bi bilo koriscenje forward declarationa za klase i naravno obe klase da su u istom unitu.

Medjutim, u tom unitu onda ce biti dosta klasa, tipova podataka, itd. sto cini unit skroz zapetljanim, iako pojedinacne klase su prilicno jednostavne. Razmisljam se da koristim preprocesorsku direktivu {Include filename}. Naime, {Include} funkcionise tako sto pre kompajliranja fajla svi include fajlovi kopiraju svoj sadrzaj u glavni fajl (onaj koji sadrzi direktivu include) i to na mestu gde je postavljena direktiva, pa se tek onda glavni fajl kompajlira, ali onda moram da razdvojim interface i implementation za klase u razlicite fajlove (C sistem), a to mi se bas i ne radi iz razloga sto kod treba da bude svima citljiv, razumljiv i u duhu Delphi OOP. Ima li neko neku bolju ideju?

Sobzirom da mozda i nisam bas verziran u klasnom sistemu Delphia pitam se ima li bolji nacin od include-a. Prvenstveno mislim na cinjenicu da je klasa TWorld parent za klasu TCharacter i bice parent i za sve ostale klase koje ce svakako morati da koriste klasu TWorld...

Pada mi na pamet (mozda malo debilno) resenje u obliku praklase za TWorld koja ce sadrzati samo metod IsAvailable i koja ce biti u svom unitu, zatim TCharacter ce koristiti tu praklasu a ne sam TWorld...

Code:

type
  TWorldAncestor = class
  public 
    procedure IsAvailable
    ...


Code:

uses 
  WorldAncestor;

type
  TWorld = class(TWorldAncestor)
  ...


Code:

uses
   WorldAncestor;
 
constructor TCharacter.Create(AWorld: TWorldAncestor)
begin
   FWorld := AWorld;
   //onda valjda moze [if FWorld.IsAvailable], ako se za AWorld prosledi TWorld



Include, ancestor ili nesto trece?
 
Odgovor na temu

_v!rus_
BGD

Član broj: 40451
Poruke: 313
*.vdial.verat.net.



+1 Profil

icon Re: Jos jedna igra - klasicni tetris16.01.2005. u 10:52 - pre 234 meseci
Evo nove verzije engine-a (ako se tako moze nazvati)
-doradjeni TCharacter, TWorld, TTiles
-ucitavanje nivoa iz [lvm](levelmapa) i [lvd](leveldata) fajla, tile-ova iz [tlr] fajla.
-potpuna DX podloga (DXDraw, DXTimer, jedino ostaje jos DXInput)

Igra se (za sada) podize u 1024x768x32, ako neciji monitor eventualno ne podrzava, nek ne pokusava dos ne uradim modeswitch, ovo je samo "na brzinu". Posto je u pitanju DX igra ZA SVAKI SLUCAJ snimi ako si nesto poceo da radis da me ne psujes posle

Izlazi se sa alt+F4.
E da, i jos nesto: DX podloga je odradjena sa UnDelphiX komponentama http://turbo.gamedev.net/default.asp
premda ne mora da znaci da ce tako i ostati.
Na sajtu je verzija biblioteke za Delphi 7 premda super radi i kod mene na sestici...

Ako neko zna resenje za moj prethodni post, neka pomogne malo...

[Ovu poruku je menjao _v!rus_ dana 18.01.2005. u 04:53 GMT+1]
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Član broj: 32202
Poruke: 4391
*.verat.net.

Sajt: https://avramovic.info


+46 Profil

icon Re: Jos jedna igra - klasicni tetris16.01.2005. u 18:18 - pre 234 meseci
booooooring... sad moram da skidam i UnDelphiX :(

evo neke AI komponente + software za treniranje istih
http://avram.whois-online.org/NeuroVCL.zip
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

_v!rus_
BGD

Član broj: 40451
Poruke: 313
*.vdial.verat.net.



+1 Profil

icon Re: Jos jedna igra - klasicni tetris16.01.2005. u 19:48 - pre 234 meseci
Ne treba ti UnDelphiX, u arhivi je sama igra (exe fajl), src ce ici posebno kada ga malo uredim...
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Član broj: 32202
Poruke: 4391
*.verat.net.

Sajt: https://avramovic.info


+46 Profil

icon Re: Jos jedna igra - klasicni tetris16.01.2005. u 20:37 - pre 234 meseci
u svakom slucaju cu nekada morati da skinem UnDelphiX

anyway... javlja mi error in packed file :(

p.s. jel ste videli neurovcl?
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

Goran Nikolovski
Subotica

Član broj: 15308
Poruke: 247
*.suonline.net.

Sajt: goran-nikolovski.blogspot..


+1 Profil

icon Re: Jos jedna igra - klasicni tetris17.01.2005. u 12:31 - pre 234 meseci
Kao sto rece Avram postoji neka greska u arhivi ...
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: Jos jedna igra - klasicni tetris18.01.2005. u 00:25 - pre 234 meseci
Dosta ste napravili od kad sam poslednji put bio ovde :) Svaka vam cast.
U vezi sa DirectX-om i da li je uopste potreban... hmmm... secam se igara koje su radile u Win 3.1 kada jos nije postojao DX, OGL i ostali API-ji i raznorazne 3D kartice, a ipak su radile sasvim dobro sa GDI-om. Posto je cika virus presao vec na DX onda neka tako i ostane. Zasto ne koristiti nesto sto ti olaksava posao, zar ne? :)
Sto se tice kamerice koju sam hteo da sredim, a kao sto vidis bas i nemam mnogo vremena, to uopste nije komplikovano. Nisam stigao da skinem ovaj najnoviju source pa ne znam kako se iscrtava igrac i svet, ali u onom mom bagovitom primeru se za svako iscrtavanje zadavala X i Y koordinata na kojoj (u Canvasu, Backbufferu, Surface-u, nazovite to kako hocete) pocinje srtanje i za svet koji deo da se nacrta sto je sasvim dovoljno da se optimizuje sve da radi sa obicnim GDI-om. Znaci kamerica bi uzimala apsolutni polozaj igraca i na osnovu njega izracunavala sta sve i na kojoj poziciji bi trebalo da se iscrtava. U sustini igrac bi trebao da stoji na sredini ekrana tako da nema nekih velikih problema sa pomeranjem kamere. Ako je problem da se napravi da kada se igrac nalazi na pocetku ili kreju nivoa moze da se zalepi za levu odnosno desnu strano, onda se samo napravi dovoljno sveta sa desne strane od kraja i sa leve strane od pocetka i igrac se stalno drzi na sredini ekrana. Tako sam ja radio jos na Commodore 64 i nikad nisam imao problema sa tim.
Pogledao sam neurovcl... to je malo previse za ovakvu vrstu igre. sasvim je dovoljno napraviti jednu apstraktnu klasu koja ce imati funkcije tipa GetX, GetY, TimeTick, Draw i dovoljno. Zatim posebne klase koje je nasledjuju (TCicrlePath, TLeftPath, TRightPath, TRandomPath...) koje na svoj nacin sredjuju koordinate objekta. Potrudicu se da nadjem malo vremena da napisem neki kodic za te klasice.
Uhhhh... nikako da stignem da nastavim tutorial za pravljenje VCL komponenti... nisam kriv za to... kriva je Anita :)
Dosao sam do zakljucka da vise uzivam sa devojkama nego dok pravim programe... neverovatno :)
 
Odgovor na temu

_v!rus_
BGD

Član broj: 40451
Poruke: 313
*.vdial.verat.net.



+1 Profil

icon Re: Jos jedna igra - klasicni tetris18.01.2005. u 05:53 - pre 234 meseci
U pravu ste, download-ovo sam svoj upload i arhiva ne valja...
Sumnjivo mi nesto to sto je 7.001 ima velicinu 150,001 bajtova kad sam ga skinuo sa ES-a, A NE 150,000 koliko bi trebalo...Hmmm, da nemam neki virus?!
Anyway, povukao sam delove arhive sa servera i izmenio poruku.
Evo src-a, on je bar bezbedan, trebaju samo UnDelphiX komponente, ima link u nekom mom prethodnom postu.

@JaHvram
Hvala za podrsku i test
Sto se tice HS tabele, morace da saceka malo posto igra za sada ni ne broji poene!
@Srki:
Long time no see!
Sto se tice razloga za koriscenje DX-a stvar je u sledecem - sobzirom da mozda i nisam neki programer a jos manje optimizator koda, trebala mi je biblioteka gde se necu brinuti da li ce svi proracuni i iscrtavanja da se izvrse za 10ms. Npr. TCanvas.Pixels je toliko sporo da ja i dalje ne mogu da poverujem koliko , a ako vec koristim neku biblioteku onda bolje DX, ako vec moze, nego nesto drugo, i time ne "olaksavam posao" sebi nego samo koristim Windows-ov jedini interfejs za pristup zasticenim delovima memorije kao sto je vid. memorija. U DOS-u (tj. DOS4GW) sam sam pisao sve graficke rutine, jer on nije toliko "pametan" ko windows pa da ne dozvoljava pristup...
Btw. ti meni reci JEDNU igru koja je koristila GDI na racunarima sa Win 3.1 OS-om, a da je imala iscrtavanje KOMPLETNOG EKRANA u koliko-toliko realnom vremenu. (pritom ne mislim na optimizacije tipa CrtajUpdatedRectOnly jer to ne vazi za skrolovanje ekrana). Zato su i napravili (sjajnu) biblioteku WinG koja nazalost je po misljenju MS-a zastarela posto je tu DX, pa je nema u novim verzijama Windowsa, a ni novi kerneli nemaju rutine koje njoj trebaju da bi radila. Comix Zone npr. koristi WinG na Win-u 3.1, a i Earthworm Jim za Win 3.1 i Win 95.

DX je dobar izbor posto planiram da koristim jos neke egzoticne stvari u igri za koje ostavljam mesta i vec imam u glavi kostur realizacije (animirani tile-ovi sveta, zvuk preko callback (procedure of object) procedura, alpha-blending, itd...), samo to ce morati da saceka da prvo osnovne stvari "legnu na rudu". Skrolovanje Worlda nece biti problem, bar mislim, nema problema za pocetak i kraj nivoa. Cak planiram da napravim "plivajucu" kameru koja nece striktno u piksel pratiti igraca, vec ce dozvoljavati malo "tamo-amo", ali o tom potom...

Download UnDelphiX komponenti (~2 Mb) nece nikom skoditi posto je u pitanju najbolja DX bilblioteka koju sam video, a i veoma je laka za koriscenje.
 
Odgovor na temu

Rapaic Rajko
Bgd

Član broj: 4105
Poruke: 810
217.119.242.*



+62 Profil

icon Re: Jos jedna igra - klasicni tetris18.01.2005. u 13:07 - pre 234 meseci
Code:
procedure TForm1.Button1Click(Sender: TObject);

var
  Bitmap : TBitMap;
begin
  Bitmap := TBitmap.Create;
  try
    with Bitmap do begin
      LoadFromFile('C:\Program Files\Common Files\Borland Shared\Images\Splash\256color\factory.bmp');
      Transparent := True;
      TransParentColor := BitMap.canvas.pixels[50,50];
      Form1.Canvas.Draw(0,0,BitMap);
      TransparentMode := tmAuto;
      Form1.Canvas.Draw(50,50,BitMap);
    end;
  finally
    Bitmap.Free;

  end;
end;


v!rus, da li je to ono sto ti treba?

Rajko
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Član broj: 32202
Poruke: 4391
*.verat.net.

Sajt: https://avramovic.info


+46 Profil

icon Re: Jos jedna igra - klasicni tetris18.01.2005. u 14:26 - pre 234 meseci
Citat:
_v!rus_:
Evo src-a, on je bar bezbedan...


gde je src?

edit: skinuo sam UnDelphiX: ono nije bas jednostavno, mada... kad se malo nauci i pogleda help... ne bi trebalo da je tesko....
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

_v!rus_
BGD

Član broj: 40451
Poruke: 313
*.verat.net.



+1 Profil

icon Re: Jos jedna igra - klasicni tetris19.01.2005. u 01:02 - pre 234 meseci
@JaHram
Sorry, zaboravio sam (opet...) . Evo ga uz malo zakasnjenje...
Btw., UDX i nije toliko komplikovan, imas DXDraw.Surface koji ima bukvalno sve properties i methods koji su potrebni i veoma su straightforward. A i na onom sajtu gde si skinuo UDX ima GOMILA tutoriala.

@Rajko
Da to svakako vrsi posao, samo da probam kako radi kad crta ceo ekran. Jedino sto za bilo koju napredniju graf. funkciju treba mi TCanvas.Pixels (npr za neki AlphaDraw, SubDraw, AddDraw...) koji je prosto suvise SPOOOOOOOR. Hmmm... Znam da je spor kada pristupam pikselima canvasa KOJI SE PRIKAZUJE, ne znam kako bi radilo sa canvasima u memoriji, moram da probam. Svakako hvala!
Prikačeni fajlovi
 
Odgovor na temu

Rapaic Rajko
Bgd

Član broj: 4105
Poruke: 810
217.119.242.*



+62 Profil

icon Re: Jos jedna igra - klasicni tetris19.01.2005. u 09:23 - pre 234 meseci
Canvas.Pixels je uvek sporo i ima smisla koristiti ga samo za ocitavanje. Zasto ne koristis Canvas metode za crtanje? Hocu da kazem, ne mogu da zamislim zasta ti treba bas Pixels? Daj neki primer crtanja koji te muci...

Rajko
 
Odgovor na temu

Jovan Prokopović
Jovan Prokopović
Niš

Član broj: 43689
Poruke: 31
*.ptt.yu.



Profil

icon Re: Jos jedna igra - klasicni tetris19.01.2005. u 12:41 - pre 234 meseci
Umesto TCanvas.Pixels mozes da koristis TBitmap.ScanLine[Y], otprilike ovako

Code:

TBoja = record R, G, B: Integer; end;

...

function GetPixel(Slika: TBitmap; X, Y: Integer): TBoja;
Var   P: PByteArray;
begin
  P:=Slika.ScanLine[Y];
  GetPixel.R:=P[X*3];
  GetPixel.G:=P[X*3+1];
  GetPixel.B:=P[X*3+2];
end;

procedure PutPixel(Slika: TBitmap; Boja: TBoja; X, Y: Integer);
Var   P: PByteArray;
begin
  P:=Slika.ScanLine[Y];
  P[X*3]:=Boja.R;
  P[X*3+1]:=Boja.G;
  P[X*3+2]:=Boja.B;
end;


samo nemoj da zaboravis da stavis Bitmap.PixelFormat:=pf24bit;
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Član broj: 32202
Poruke: 4391
*.verat.net.

Sajt: https://avramovic.info


+46 Profil

icon Re: Jos jedna igra - klasicni tetris19.01.2005. u 14:04 - pre 234 meseci
evo sad sam probao Super Stojadina i mogu ti reci da mnogo lepo izgleda.
Jel ovo open source (freeware) engine :))) Mislim, UDX jeste, ali oni ostali unit-i? :)

A da ti malo dokumentujes one tvoje unite? :))) Nigde bre ne vidim kako se detektuju sudari (npr) ali predosecam da ima veze sa
Code:

0000000000000001
0000000000000001
8000000000000001
3000000000000001
3000000000000001
3000000000075551
3::::::::::12221
3999999999912221
3999994555512221
3999991222212221
3999991222212221
3455561222212221


a neki level editor? ili tako nesto... let's make tools for new engine :P
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

_v!rus_
BGD

Član broj: 40451
Poruke: 313
*.verat.net.



+1 Profil

icon Re: Jos jedna igra - klasicni tetris19.01.2005. u 17:28 - pre 234 meseci
@Janko
Hvala za rutinu, jasna mi je ideja, verujem da cu lako da je izmenim za 32bit piksele
(X*4), jedino polja recorda TBoja su bajtovi a ne integeri, ali nebitno, veliko hvala za ideju!

@JaHvram
Ccccccc....
Nisi li pratio do sada razvoj igre
Matrica koju si ti naveo u postu je izgled nivoa (raspored Freemapa i Bitmapa).
Code:

0000000000000001
0000000000000001
8000000000000001
3000000000000001
3000000000000001
3000000000075551
3::::::::::12221
3999999999912221
3999994555512221
3999991222212221
3999991222212221
3455561222212221

Izmenom tog fajla menjas izgled nivoa. To je matrica bajtova 16x12, a posto je sirina jednog tile-a 64 piksela, to je 16x12 = (16 x 64) x (12 x 64) = 1024x768 piksela. '0' je tile[0], '1' je tile[1], ':' je Tile[10]. Sa TileLoader-om mozes da vidis kako izgleda Tile[0], Tile[1], Tile[2]...
Svaki Tile ima svoju bitmapu i svoju freemapu. Freemapa je mapa slobodnih i zauzetih piksela, pa se detekcija sudara vrsi u metodu TWorld.IsAvailable(X, Y) tako sto se proverava freemapa odgovarajuceg tile-a.
Evo ti najnoviji TileLoader. Otvori sa njim fajl 'level.tlr' i vidi tile-ove.
Prikačeni fajlovi
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Član broj: 32202
Poruke: 4391
*.verat.net.

Sajt: https://avramovic.info


+46 Profil

icon Re: Jos jedna igra - klasicni tetris19.01.2005. u 21:30 - pre 234 meseci
Ma sve je to ok...
Skapirao sam ja da je to nivo jos u prethodnom src-u (ono kad SS ide uzbrdo).
Ok, to freemapa otprilike kapiram... To sluzi za detekciju sudara, ali ja nigde u kodu ne videh da koristis: TWorld.IsAvailable(X, Y); <- jel' to mozda samo radi? Bilo bi isuvise lepo da je tako...

Inace, UDX... ahm... ma komplikovano :) nista bez komentovanog koda.... a oni tuts su bez //komentara :(

aj' cujemo se

p.s. jesi sredio ono da SS ide malo brze ukoso na gore?
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Član broj: 32202
Poruke: 4391
*.verat.net.

Sajt: https://avramovic.info


+46 Profil

icon BUG!?20.01.2005. u 16:46 - pre 234 meseci
Jel ovo bug? Pogledaj nivo iz attachmenta (obrisi .txt ekstenziju) i kad krene nivo ti skoci levo (na one informacije o brzini) i jos idi izvan ekrana. Primetices da posle ne moze da se vrati. Zasto?
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
Prikačeni fajlovi
 
Odgovor na temu

_v!rus_
BGD

Član broj: 40451
Poruke: 313
*.vdial.verat.net.



+1 Profil

icon Re: Jos jedna igra - klasicni tetris20.01.2005. u 17:05 - pre 234 meseci
To se desava sto zarad brzine rutina za proveru sudara ne proverava granice terena, tj ako nema tile koji ga blokira da ide levo od moze da ode levo cak i iza ekrana. Samo je stvar slucaja kad ce zablokirati, a zablokirace sigurno. Nisam dzabe nacrato demo nivo onako da ne moze da se izadje van ekrana, ali nije nikakav problem ubaciti jos jednu proveru. Ne brini nije bug, desava se samo da proverava matricu FLevelMap(X, Y) sa negativnim koordinatama, time cita memorijske lokacije koje su "pre" pocetka same matrice FLevelMap pa izaziva EAccesViolation koji se ne vidi zbog DX drawa , onda udaris "na slepo" alt+tab pa ctrl+F2 da resetujes proces. U svakom slucaju ici ce provera za granice terena u sledecoj verziji.
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Član broj: 32202
Poruke: 4391
*.verat.net.

Sajt: https://avramovic.info


+46 Profil

icon Re: Jos jedna igra - klasicni tetris20.01.2005. u 18:14 - pre 234 meseci
ok... ispravi ti to samo :)
jedva cekam sled. verziju
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

_v!rus_
BGD

Član broj: 40451
Poruke: 313
*.vdial.verat.net.



+1 Profil

icon Re: Jos jedna igra - klasicni tetris22.01.2005. u 09:30 - pre 234 meseci
01/22/2004
Latest & Greatest:
From now on includes a LevelEditor & TileLoader,
Added support for ladders & hanging platforms,
Fixed few potential bugs,
Adjusted SS' speed & jump heights (lowered),
Added a few tiles (see level.tlr)

Still not fixed:
Running off the screen (2 lines of code needed, but I forgot, again)
____________________________________________
Bez zezanja, stvarno ima podrsku za merdevine i platforme!
Odradio sam (jednostavni) LevelEditor, levi klik crta, desni boji (crta dok drzis).
Ovo sad vec lici na nesto, bar po mom misljenju...

Enjoy!




Prikačeni fajlovi
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Jos jedna igra - klasicni tetris

Strane: < .. 1 2 3 4 5

[ Pregleda: 15007 | Odgovora: 90 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.