Novo

Forum kao aplikacija na telefonu

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

  • 10 odgovora
  • 2.882 pregleda

Najnovija ↓

peromalosutra,srki_82....come here 10.04.2005. u 18:41 · pre 262 meseca #1
Ovako:

Code:

program kretanje;
uses graph,crt;
var a,b,c,d:integer;
begin
detectgraph(a,b);
initgraph(a,b, 'c:\tp\bgi\');
rectangle(0,0,getmaxx,getmaxy);
c:=getmaxx div 2;
d:=getmaxy div 2;
circle(c,d,50);
readln;
end.


Mene sada zanima kako napravit da uz pomoc tastera (a-lijevo;d-desno;
w-gore;s-dolje) krecem ovaj krug u prostoru ogranicenom sa rectangle,
to sam zapravo htio da skuzim iz tvog koda od igrice (peromalosutra) al
bezuspjesno.....;)
Re: peromalosutra,srki_82....come here 10.04.2005. u 19:40 · pre 262 meseca #2
Ovako... imas krug ima precnik R, njegov centar cX, cY, i vrednosti za MinX, MaxX, MinY, MaxY koje definisu deo u kom krug moze da se krece. To znaci da cX + R / 2 ne sme da bude vece od MaxX, cX - R / 2 ne sme da bude manje od MinX, cY + R / 2 ne sme da bude vece od MaxY, cY - R / 2 ne sme da bude manje od MinY. Ako pazis na to onda je lako. Imas ReadKey i ako se pritisne neko od definisanih tastera pomeris cX ili cY na novu vrednost ako ce krug ostati u definisanom regionu. Mozes pre nego sto updatujes vrednosti da na staroj poziciji nacrtas krug boje pozadine cime ces ga obrisati.
Potpis
Play Store
Re: peromalosutra,srki_82....come here 10.04.2005. u 21:03 · pre 262 meseca #4
Ja sam uradio nesto slicno sa pravougaonikom (pogledaj "program sa grafikom"), samo nema ogranicenja.
Re: peromalosutra,srki_82....come here 10.04.2005. u 21:17 · pre 262 meseca #5
Ovaj dio upravlja figurom. X i Y su vrijednosti koordinata figure, (u tvom slucaju centra kruga).

Repeat
brisanje;
znak:=readkey;
ind:=ord (znak);
if (ind=97) or (ind=115) or (ind=100) or (ind=119) then
Case ind of
100: x:=x+1;
97: x:=x-1;
119: y:=y-1;
115: y:=y+1;
End;

Until ind=27 {odnosno ponavljaj dok se ne stisne taster ESC}

Umjesto procedure brisanje mozes staviti i ClrScr, medjutim docice do bljeskanja ako budes zelio taj program prosiriti pa u repeat petlji dodavati nove stvari koje ce se pojavljivati na ekranu. I ja sam imao ovaj problem sa prvom verzijom moje igre, ali sam ga otklonio uz pomoc Srki_82-ovog savjeta i on preveden na jezik pocetnika (u koje se i ja ubrajam) glasi: nacrtati isti lik na prethodnim koordinatama, obojen bojom pozadine. Efekat ovoga je isti kao i brisanje. A evo i procedure koja bi to radila:

Procedure brisanje;
begin
gotoxy (xs,ys); {xs,ys su stare koordinate tacke, ili u tvom slucaju, centra kruga}
if (x<>xs) or (y<>ys) then {ako je tijelo pomjereno, onda...}
circle (xs,ys,50); {samo ga moras nacrtati bojom pozadine}
xs:=x;
ys:=y;
end;

Vjerovatno negdje ima gresaka, ali to je otprilike to.
Re: peromalosutra,srki_82....come here 10.04.2005. u 23:41 · pre 262 meseca #6
Ajd napisi program od a do z,jer vec petljam 2 sata s njim,tak cu najlakse skuzit.
Sa sto manje petljanja da ga lakse skuzim a onda cu lako ga nadogradjivati..:)
Re: peromalosutra,srki_82....come here 11.04.2005. u 01:13 · pre 262 meseca #7
Evo momci-uzivajte. :)

Code:

uses graph, crt;
const
     radius=100;
var
   gd,gm:Integer;
   xp,yp: integer;
   ch:char;
   kraj : boolean;
begin
     gd:=detect;
     initgraph(gd,gm,'..\bgi');
     rectangle(0,0,getmaxx-1, getmaxy-1);
     xp := 200;
     yp := 200;
     kraj := false;
     setcolor(5);
     circle(xp,yp, radius);
     while not kraj do
           if keypressed then
              begin
                ch := readkey;
                kraj := ch = #27;
                setcolor(0);
                circle(xp,yp, radius);
                if (xp-radius) > 1 then
                   xp := xp - ord(ch='a');
                if (xp+radius) < (getmaxx-2) then
                   xp := xp + ord(ch='d');
                if (yp-radius) > 1 then
                   yp := yp - ord(ch='w');
                if (yp+radius) < (getmaxy-2) then
                   yp := yp + ord(ch='s');
                setcolor(5);
                circle(xp,yp, radius);
              end;

end.


Re: peromalosutra,srki_82....come here 11.04.2005. u 10:52 · pre 262 meseca #9
E a sada ako dodam neku liniju (line) kako napravit da taj krug ne moze da
prijedje preko nje vec da ju mora zaobilazit?
Re: peromalosutra,srki_82....come here 11.04.2005. u 14:20 · pre 262 meseca #10
Kada ja pokrenem toyin program, on mi prikaze krug na ekranu, ali ne mogu da ga pokrenem, ne reaguje na A,S,D,F kako vidim iz koda da bi to trebalo. Pokusao sam da iskljucim CapsLock, (jer se onda promjene ACII kodovi tastera) ali ni to nije pomoglo. Ja mislim da imam problem sa kompajlerom.
(pogledaj "problem sa grafikom")
Re: peromalosutra,srki_82....come here 11.04.2005. u 15:19 · pre 262 meseca #11
Pa koji kompajler koristis?

Odi u programu do linije gde pise kraj := ch=#27 , pritisni F4 pa zatim kada program pocne da se izvrsava pritisni a. Vratices se u program Ukljuci watch, zarim insert, ukucaj ch i pogledaj koju vrednost ima promenljiva ch.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme