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

Strateska igra u Delphi-u?!

[es] :: Pascal / Delphi / Kylix :: Strateska igra u Delphi-u?!

[ Pregleda: 2269 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

anon68680

Član broj: 68680
Poruke: 528
79.101.169.*



+14 Profil

icon Strateska igra u Delphi-u?!13.08.2008. u 14:43 - pre 190 meseci
Pozdrav svima... Hteo bih da se okusam u pravljenju strateske igre u Delphi-u... Samo sto ne znam odakle da pocnem! Odgovor na temu o konstrukciji mapa za strateske igre me je samo jos vise zbunio... Prelistao sam forum ali nista posebno nisam nasao na tu temu.. Pa bih zamolio nekog da postuje koji link ili mi da neki savet na tu temu :) Ono sto hocu da napravim je igra tipa Risiko(strateska igra, ono sa tenkovima, kockicama, izvrsavas zadatke osvajas teritorije i tako to), s tim sto bi se igralo online... Jedan racunar u mrezi bi predstavljao server, a ostali bi se na njega konektovali... ali to je sad nebitno... zanima me kako poceti, sa cime raditi...
 
Odgovor na temu

obucina

Član broj: 38191
Poruke: 723

Jabber: obucina


+7 Profil

icon Re: Strateska igra u Delphi-u?!16.08.2008. u 11:19 - pre 190 meseci
Eeeee, malo obimnija tema. Mozda je bolje da nesto pocnes pa da trazis pomoc.

Mapu mozes da predstavis grafom. Cvor grafa je drzava, grana oznacava da su drzave susedne. Iz jedne drzave mozes da napadas, i drzava moze biti napadnuta samo iz onog cvora sa kojim je povezana. Za pocetak, klasa kojom predstavljas drzavu, tj cvor grafa moze biti ovakva:

Code:

type
  TDrzava = class(TObject)
  private
    FNaziv: Integer;
    FSnaga: Integer;
    FSusedi: TList;
    procedure SetSnaga(const Value: Integer);
    property Naziv: Integer read FNaziv;
  public
    constructor Create(aNaziv: string);
    destructor Destroy; override;
    procedure DodajSuseda(ADrzava: TDrzava);
    property Snaga: Integer read FSnaga write SetSnaga;
  end;

constructor TDrzava.Create(aNaziv: string);
begin
  inherited Create;
  FNaziv := aNaziv;
  FSusedi := TList.Create;
end;

destructor TDrzava.Destroy;
begin
  inherited;
  FSusedi.Free;
end;

procedure TDrzava.DodajSuseda(const ADrzava: TDrzava);
begin
  FSusedi.Add(aDrzava);
end;

procedure TDrzava.SetSnaga(const Value: Integer);
begin
  FSnaga := Value;
end;



Snaga je broj tenkica u drzavi, Susedi je lista drzava sa kojima se drzava granici. Sada kreiras objekte drzava i povezujes ih u mapu.

Code:

SevernaAmerika := TDrzava.Create("Severna Amerika");
JuznaAmerika := TDrzava.Create("Juzna Amerika");
ZapadnaEvropa := TDrzava.Create("Zapadna Evropa");

SevernaAmerika.DodajSuseda(JuznaAmerika);
SevernaAmerika.DodajSuseda(ZapadnaEvropa);

JuznaAmerika.DodajSuseda(SevernaAmerika);

ZapadnaEvropa.DodajSuseda(SevernaAmerika);


Onda, kada napadas, proveravas da li je drzava koju napadas u listi suseda, i ako jeste, bacas kockicu, i oduzimas od broja tenkica, kome treba i koliko treba...
To ti je za pocetak. Klasa nije sjajna, moze to i bolje, dodavanje suseda moze da se lepse resi, ali ovo ti je sustina.
Probaj nesto da napravis, pa se javi kada zapnes.
 
Odgovor na temu

anon68680

Član broj: 68680
Poruke: 528
79.101.169.*



+14 Profil

icon Re: Strateska igra u Delphi-u?!16.08.2008. u 15:22 - pre 190 meseci
E hvala ti puno... Pomogao si mi :)
Jos jedno pitanje... Kako prikazati mapu na ekranu? Kako da znam koja je drzava selektovana i to...?
 
Odgovor na temu

anon68680

Član broj: 68680
Poruke: 528
79.101.169.*



+14 Profil

icon Re: Strateska igra u Delphi-u?!16.08.2008. u 19:52 - pre 190 meseci
Evo da vas updatujem malo... Uzeo sam klasu koju je obucina dao i editovao je tako sto sam joj pripisao i FIgrac, tako da znam koji igrac poseduje tu drzavu u trenutku. Tako sam kreirao i klasu TIgrac koja ce pokazivati koliko koji igrac ima tenkova, koje drzave poseduje etc. I dalje se razmisljam kako da resim graficku stranu ovoga, tj kako prikazati mapu na formi. Razmisljao sam da nadjem neku custom komponentu koja ce mi dozvoliti da kreiram flat buttone sa nekim uvrnutim izgledom ili tako nesto... Neku ideju?
 
Odgovor na temu

anon68680

Član broj: 68680
Poruke: 528
79.101.169.*



+14 Profil

icon Re: Strateska igra u Delphi-u?!17.08.2008. u 12:54 - pre 190 meseci
Alaa smo komunikativnii.. ovde izgleda samo ja pisem... :)
ubio sam se sinoc praveci drzave i povezivajuci ih u susede... oko 40 drzava i svaka ima 3-6 suseda... 500 linija koda mi je trebalo samo za tu glupost. Napravio sam i funkciju za bacanje kockice... A sad se sve vise i vise blizim onom "grafickom" delu i jedinom problemu u celoj stvari... stvarno mi je potrebna pomoc :P nemoj da mi propadne uzalud ovaj trud :P
 
Odgovor na temu

Jovan Prokopović
Jovan Prokopović
Niš

Član broj: 43689
Poruke: 31
*.nat.medianis.net.



Profil

icon Re: Strateska igra u Delphi-u?!17.08.2008. u 13:55 - pre 190 meseci
Napravi dve bitmape, jednu koju ces da prikazes, a drugu gde ce svaka drzava da bude u drugoj boji.
Kad igrac klikne misem na mapu proveris boju na istim kordinatama na drugoj mapi, tako ces na osnovu boje da znas koja je drzava.
Jedini problem je sto na drugoj bitmapi na granicama nesme da ima nikakav antialiasing (tj. nikakvo umeksavanje ivica).
U klasu TDrzava dodaj informaciju o boji i dodaj kordinate centra drzave, na osnovu kog ces znati gde da nacrtas zastavu, tenkice ...
 
Odgovor na temu

anon68680

Član broj: 68680
Poruke: 528
79.101.169.*



+14 Profil

icon Re: Strateska igra u Delphi-u?!17.08.2008. u 14:14 - pre 190 meseci
I ja sam imao neku slicnu ideju... Ali sam se ponadao da postoji nesto jednostavnije, da ne moram svaku drzavu posebno da crtam... Uz to gledam da sto bolje izgleda...
Hvala na savetu.
 
Odgovor na temu

anon68680

Član broj: 68680
Poruke: 528
79.101.169.*



+14 Profil

icon Re: Strateska igra u Delphi-u?!17.08.2008. u 19:35 - pre 190 meseci
Naisao sam na jos jedan problem... Koristim za komunikaciju izmedju servera i client TServerSocket i TClientSocket. E sad u odredjenom trenutku Client posalje Serveru zahtev za ulazak u igru preko SendText npr 'JOIN BLABLa'. Iz nekog razloga skoro svaki drugi put kad server primi taj text preko socket.receivetext on ne izgleda kao 'JOIN BLABLA' nego je prazan string. Zasto se ovo kog djavola dogadja?
 
Odgovor na temu

Predrag Supurovic
Pedja YT9TP
Užice

Član broj: 157129
Poruke: 6275

Sajt: pedja.supurovic.net


+1570 Profil

icon Re: Strateska igra u Delphi-u?!17.08.2008. u 20:01 - pre 190 meseci
Citat:
krza: I ja sam imao neku slicnu ideju... Ali sam se ponadao da postoji nesto jednostavnije, da ne moram svaku drzavu posebno da crtam... Uz to gledam da sto bolje izgleda...


Pa moras ih nacrtati, kako ces drugacije da prikazes mapu? Olaksavajuca okolnost ti je to sto ti u stvari nisu bitne granice drzava osim za prikaz tako da ce ti ovaj sistem sa bitmapom u kojoj je svaka drzava u drugoj boji da ti resi problem, jer tebe smao interesuje da li je mis iznad neke drzave a ne i gde tacno.

Probaj da celu stvar sastavis tako da se mapa ubacuje kao sistem dateka koje je opisuju. Tako ces moci da imas razlicite mape koje mozes da menjas, a da ne menjas sam program.

Inace, na SourceForge imas bar jedan program za Riziko, koji cak ima opciju da se mogu ucitavati razne mape, i to cini mi se da ima neki koji je bas radjen u Delphi-ju.


 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4901
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Strateska igra u Delphi-u?!17.08.2008. u 21:44 - pre 190 meseci
Citat:
krza: Naisao sam na jos jedan problem... Koristim za komunikaciju izmedju servera i client TServerSocket i TClientSocket. E sad u odredjenom trenutku Client posalje Serveru zahtev za ulazak u igru preko SendText npr 'JOIN BLABLa'. Iz nekog razloga skoro svaki drugi put kad server primi taj text preko socket.receivetext on ne izgleda kao 'JOIN BLABLA' nego je prazan string. Zasto se ovo kog djavola dogadja?


SendText() i ReceiveText() nisu bas najsrecnije dizajnirane kao sto nije ni primer za ove metode u Examples folderu Delphija - iako ceo mehanizam TClientSocket/TServerSocket radi odlicno.

Za 100% pouzdano slanje u prijem buffera najcesce se pravi POSEBNA funkcija za slanje i POSEBNA prijem, ali otom potom.

U principu, generalno postoji jedna anomalija kod TClientServer::OnRead(), kada se dogadjaj desi, ali nikakvi podaci nisu preneti. Stoga se pribegava nekom jednostavnom kodu tipa:

Code:

// kod je C++ Builder, ali snaci ces se
void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
      TCustomWinSocket *Socket)
{
   if ( Socket->ReceiveLength() < 1 ) return;
   Memo1->Lines->Add( Socket->ReceiveText() );
}

Dakle, esencija je ovo (da se odmah izadje iz eventa):
Code:

if ( Socket->ReceiveLength() < 1 ) return;

(pretpostavljam da je to ono sto se tebi dogadjalo, ulazio si u obradu eventa, a nista se nije desilo kada je u pitanju prenos)

A sada da razjasnim u cemu je problem kod SendText()-a i primera u Examples.

Naime, kada ti pokusas da preneses neki buffer sa SendText() ti logicno ocekujes da to sto si naveo i bude 100% preneseno. Ipak, mrezna arhitektura i TCP/IP protokol imaju drugaciju logiku. Bice preneseno onoliko bajtiva koliko mreza moze da podnese u tom trenutku, a povratna vrednost ti govori koliko je preneseno da bi ti mogao da nastavis odakle se stalo. Da bi to i realizovao potrebno je serveru proslediti odmah na pocetku i duzinu bafera za prenos i onda sinhronizovati taj prenos.

Ipak, necu te vise zbunjivati, ovo je cisto da znas na cemu si. Kod za slanje i prijem buffera koji radi 100% imas na netu na vise mesta, a ako se ne snadjes, javi pa da pomognemo.


Poz.
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4901
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Strateska igra u Delphi-u?!17.08.2008. u 21:50 - pre 190 meseci
Takodje, proveri i tip klijenta i servera koji si postavio . Vise detalja, ovde:
http://www.elitesecurity.org/t163787-0

(ili najbolje, pogledaj kako je podeseno u Examples tih metoda u Delphiju)
 
Odgovor na temu

obucina

Član broj: 38191
Poruke: 723

Jabber: obucina


+7 Profil

icon Re: Strateska igra u Delphi-u?!17.08.2008. u 23:09 - pre 190 meseci
Citat:
krza: Naisao sam na jos jedan problem... Koristim za komunikaciju izmedju servera i client TServerSocket i TClientSocket. E sad u odredjenom trenutku Client posalje Serveru zahtev za ulazak u igru preko SendText npr 'JOIN BLABLa'. Iz nekog razloga skoro svaki drugi put kad server primi taj text preko socket.receivetext on ne izgleda kao 'JOIN BLABLA' nego je prazan string. Zasto se ovo kog djavola dogadja?

Bolje je da koristis INDY komponente (TIdTCPServer i TIdTCPClient), i njihove command handler-e. Svodi se na to da napravis CommandHandler koji ce pozivati odredjenu funkciju kada primis odredjenu komandu. Komponente su visenitne, tj podrzavaju povezivanje vise korisnika od jednom i eliminisu problem koji je X Files opisao.

Sto se tice crtanja, mozes koristiti npr graphic32 komponente koje podrzavaju 32bitnu grafiku, imaju pravi alpha blend, lejere, efekte i naprednije i brze metode za iscrtavanje.
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4901
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Strateska igra u Delphi-u?!18.08.2008. u 05:35 - pre 190 meseci
^
Citat:

Bolje je da koristis INDY komponente (TIdTCPServer i TIdTCPClient), i njihove command handler-e.

Da. Ovaj par Indy komponenti ce sav threading uraditi za tebe i omogucice pouzdan prenos buffera od klijenta do servera (i nazad), resavajuci usput sve potencijalne probleme.
 
Odgovor na temu

anon68680

Član broj: 68680
Poruke: 528
79.101.169.*



+14 Profil

icon Re: Strateska igra u Delphi-u?!18.08.2008. u 18:44 - pre 190 meseci
Predrag mi je dao dobru ideju, mogao bih da napravim igru tako da je moguce menjati mape... Hvala na savetu.. Poslusao sam takodje i savet za prelazak na Indy komponente, trebace mi neko vreme da skontam kako funkcionisu... Takodje sam skinuo graphic32 komponente, ali sa njima se ebeno lose snalazim... :)
Inace, voleo bih da tu mapu konstruisem da bude sto vise 'user-friendly' odnosno da ne bude previse jednostavna... Voleo bih da dodam mogucnost selektovanja mape, kao ono kad clicknes da se ivice te mape osvetle i slicno...
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Strateska igra u Delphi-u?!

[ Pregleda: 2269 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

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