Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 22 odgovora
  • 6.933 pregleda

Najnovija ↓

Delphi: Igra na foru Bounca 19.03.2006. u 15:46 · pre 251 mesec
izmenjeno 1 put, poslednji put Remo 19.03.2006. u 15:47
  1. Remo19.03.2006. u 15:47zapis iz teksta poruke
#1
Treba mi pomoci ( kome ovde ne treba ), pravim igru u Delphiju, i to nesto na foru igre za mob Bounce, ali ne znam kako da uradim sledece stvari. U ovoj igri lopta nece skakutati, vec se samo kretati pomocu strelica na tastaturi, ali kao da uradim da kada Image2 ( Slika lopte ) dodje na odredjene kordinate da mi se npr. Image2 vrati na pocetnu poziciju?
Re: Delphi: Igra na foru Bounca 19.03.2006. u 17:03 · pre 251 mesec #2
Ne bi trebalo da to bude tesko. Negde sacuvas koordinatu pocetne pozicije na koju zelis da vratis sliku. Recimo Pocetak: TPoint. Igras pomera sliku strelicama i Pozicija: TPoint se pomera. Kada se dodje do neke koorindate kada je potrebno vratiti sliku na pocetak uradis samo Pozicija := Pocetak i to je to.
Potpis
Play Store
Re: Delphi: Igra na foru Bounca 20.03.2006. u 09:44 · pre 251 mesec #3
Znaci:
u private stavim:
Pozicija: TPoint
Pocetak: TPoint


I sada tamo gde su definisano kako se Image2 krece postavim
if Image2. TPoint:= Pozicija
then Image2. TPoint:= Pocetak


Nesto na ovu foru?
Kako da definisem Pozicija i Pocetak
Re: Delphi: Igra na foru Bounca 20.03.2006. u 12:14 · pre 251 mesec #4
Citat:
Remo: Znaci:
u private stavim:
Pozicija: TPoint
Pocetak: TPoint


I sada tamo gde su definisano kako se Image2 krece postavim
if Image2. TPoint:= Pozicija
then Image2. TPoint:= Pocetak


Nesto na ovu foru?
Kako da definisem Pozicija i Pocetak

ne, nego:
if (image2.left = pozicija.x) and (image2.top = pozicija.y)
then begin
image2.left := pocetak.x;
image2.top := pocetak.y;
end;
...
recimo
p.s. u if naredbu ne stavljas := nego samo = ...
p.p.s. pocetak.x (po x osi) jednak je nuli na pocetku ekrana, a ne prozora programa, i to treba da se ubaci u kod, ali moras i ti nesto da se pomucis...
Re: Delphi: Igra na foru Bounca 24.03.2006. u 11:31 · pre 250 meseci #5
Code:

begin
  if (Image2.Left = 401) and (Image2.Top = 401)
    then begin
    Image2.Left := 80;
    Image2.Top := 80;
end;


Ovo sam otkucao u kodu ( Postavio ga u Event - OnKeyPress ) pokrenem igru ali kada dodjem na te koordinate, Image2 nastavlja da se krece kao da nema koda. Sta da radim?
Re: Delphi: Igra na foru Bounca 24.03.2006. u 12:21 · pre 250 meseci #6
Verovatno ti se slicica ne nalazi na koordinati 401, 401. Po ovom kodu koji si napisao nije dovoljno da slicica samo ode skroz desno ili skroz dole. Mora da se nalazi bas u uglu 401, 401 da bi kod proradio. Ako zelis da se pozicija resetuje bilo da slicica ode skroz desno ili skroz levo onda ovako napisi uslov:

Code:
if (Image2.Left = 401) or (Image2.Top = 401)...


Pisem iz glave pa sam mozda nesto prevideo, ali mislim da je ovo u pitanju.
Potpis
Play Store
Re: Delphi: Igra na foru Bounca 24.03.2006. u 12:51 · pre 250 meseci #7
Mozda objekat ne pomeras po jedan piksel, pa se desi da preskochish koordinatu? Probaj da umesto = stavis >= odnosno:
Code:
begin
  if (Image2.Left >= 401) and (Image2.Top >= 401)
    then begin
    Image2.Left := 80;
    Image2.Top := 80;
end;
Potpis
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
Re: Delphi: Igra na foru Bounca 24.03.2006. u 14:52 · pre 250 meseci #8
Code:

if (Image2.Left >= 400) and (Image2.Top >= 400)
  then begin
    Image2.Left := 80;
    Image2.Top := 80;
  end;


Mislim da bi kod trebao ovako da glasi, ali gde da ga stavim, da li u OnKeyPress ili private...?
Re: Delphi: Igra na foru Bounca 24.03.2006. u 21:00 · pre 250 meseci
izmenjeno 1 put, poslednji put badam 24.03.2006. u 21:44
  1. badam24.03.2006. u 21:44zapis iz teksta poruke
#9
Obavezno stavi 'or' umesto 'and' i '>=' umesto '=', a tu proveru postavi odmah nakon pomeranja (znas gde si pomerio image2?)
Re: Delphi: Igra na foru Bounca 25.03.2006. u 17:13 · pre 250 meseci #10
Citat:
badam: (znas gde si pomerio image2?)


Na sta mislis, ne razumem pitanje?
Re: Delphi: Igra na foru Bounca 27.03.2006. u 16:29 · pre 250 meseci #11
Mislio je da ti znas gde u kodu pomeras svoj objekta. I cim ga pomeris proveri da li je sve ok... znaci
Code:
Pomeri
Proveri poziciju i resetuj ako treba
Potpis
Play Store
Re: Delphi: Igra na foru Bounca 27.03.2006. u 20:56 · pre 250 meseci #12
Code:

begin
  Form1.DoubleBuffered:=true;
    case key of
    37: Image2.Left:=Image2.Left-5;{levo}
    38: Image2.Top:=Image2.Top-5;{gore}
    39: Image2.Left:=Image2.Left+5;{desno}
    40: Image2.Top:=Image2.Top+5;{dole}
  end;

end;

  if (Image2.Left = 401) and (Image2.Top = 401)
    then begin
    Image2.Left := 80;
    Image2.Top := 80;
end;

E ovako meni glasi kod, pokrenem igru, ali kao da nema ovog drugog dela
Re: Delphi: Igra na foru Bounca 27.03.2006. u 21:42 · pre 250 meseci #13
Stavio si ga iza end od procedure (pretpostavljam).

Code:

begin
  Form1.DoubleBuffered:=true;
    case key of
    37: Image2.Left:=Image2.Left-5;{levo}
    38: Image2.Top:=Image2.Top-5;{gore}
    39: Image2.Left:=Image2.Left+5;{desno}
    40: Image2.Top:=Image2.Top+5;{dole}
  end;
  if (Image2.Left >= 401) or (Image2.Top >= 401)
    then begin
    Image2.Left := 80;
    Image2.Top := 80;
  end;

end;


Ponovo: obavezno or i >=.
Re: Delphi: Igra na foru Bounca 27.03.2006. u 23:54 · pre 250 meseci #15
U stvari mu treba (pretpostavljam):
Code:

  if Image2.Left >= 401 then 
    Image2.Left := 80;
  if Image2.Top >= 401 then 
    Image2.Top := 80;
Re: Delphi: Igra na foru Bounca 28.03.2006. u 14:49 · pre 250 meseci #16
E bas mi je to trebalo sada radi!!!
Ali imam novo pitanje :)
Lopta kada ide nekim pravcem i naidje na neku koordinatu ( manju od 401 Left i Top ), dok se ona krece, na primer naleti na zid, e sada taj zid treba da je zaustavi i da se ona ne pomeri koliko god ja da pritiskam u desno ( ili levo ). Odnosno da ostane na istom polozaju gde udari i zid. Znam da je malo grubo objasnjenje, ako nije jasno pitajte!
Re: Delphi: Igra na foru Bounca 28.03.2006. u 15:00 · pre 250 meseci #17
Code:

  if Image2.Left >= 401 then 
    Image2.Left := 401;
  if Image2.Top >= 401 then 
    Image2.Top := 401;
  if Image2.Left <= 80 then 
    Image2.Left := 80;
  if Image2.Top <= 80 then 
    Image2.Top := 80;
Re: Delphi: Igra na foru Bounca 28.03.2006. u 15:08 · pre 250 meseci #18
Pardon. Sad sam video da pomeras lopticu za po pet pixela. Sa prethodnim kodom dobio bi skakutanje loptice u mestu,
potrebna je provera pre pomeranja.
Code:

begin
  Form1.DoubleBuffered:=true;
  case key of
    37: if (Image2.Left-5)>80 then
            Image2.Left:=Image2.Left-5
          else
            Image2.Left:=80;          
    38: if (Image2.Top-5)>80 then
            Image2.Top:=Image2.Top-5
         else
            Immage2.Top:=80
    39: if (Image2.Left+5)<401 then
            Image2.Left:=Image2.Left+5
         else
            Image2.Left:=401;
    40: if (Image2.Top+5)<401 then
            Image2.Top:=Image2.Top+5
         else
            Image2.Top:=401
  end;
Re: Delphi: Igra na foru Bounca 28.03.2006. u 16:22 · pre 250 meseci #19
Ne, ne, nisi shvatio ( ja sam kriv - lose sam objasnio )

npr.
Loptica ide

----> | ( crtica je zid, a strelica je loptica )

kada loptica dodje do zida...
------->|
...tu da stane i da ne ide dalje u desno, nadam se da si shvatio. ( naravno da se loptica normalno krece u ostalim pravcima )

npr2.
_ _ _ _ _ _
|_|_|_|_|_|
|_|_|_| <--(loptica)---------
|_|_|_ _ _
|_|_|_|_|_|




------------


_ _ _ _ _ _
|_|_|_|_|_|
|_|_|_|<--(loptica)---------
|_|_|_ _ _
|_|_|_|_|_|

Kada je lopta dosla da ne moze da prelazi preko kockica ( kockice su kao zid ), ali da moze da se vrati dole, ili ide gore...
Re: Delphi: Igra na foru Bounca 28.03.2006. u 16:47 · pre 250 meseci
izmenjeno 1 put, poslednji put badam 28.03.2006. u 16:49
  1. badam28.03.2006. u 16:49zapis iz teksta poruke
#20
Da, problem je verovatno u tome što nisam igrao Bounce (ne znam ni kako izgleda). Taj problem bi mogao da rešiš tako što ćeš pri pomeranju levo proveriti boju pet pixela u levo od loptice (pretpostavke: boja zida je bela; image2 se krece preko image1 koji je lavirint)
Code:

var i,KolkoMoze:integer;
begin
  KolkoMoze:=0;
  case Key of
     37: begin
            for i:=1 to 5 do
              if Image1.Canvas.Pixels[Image2.Canvas.Left-i,Image2.Canvas.Top]<>clWhite then
                KolkoMoze:=i
              else
                break;
            Image2.Left:=Image2.Left-KolkoMoze
          end;
     38:...;
     39:...;
     40:...;
     41:...
  end
end;

Kuco sam u direktno ovde, pa nije isprobano, ali trebalo bi da radi.
Pozdrav
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme