Datuve :: Forums :: Arhīvs :: vajadzīga palīdzība pascal'ā

Datuve

Mana Datuve

Reģistrācija | Noteikumi | Paroles atjaunošana



Forums

Ieskaties


Raksti

Lietotāji online

Lietotāji online: 71

Reģistrētie lietotāji online: 0

Viesi online: 71

Datuve.lv video
Top.LV

vajadzīga palīdzība pascal'ā

Ievietoja: Masonic @ 2010.04.17 16:19  

sveiki, man te vajag uztaisīt vienu programmiņu, bet nesanāk...
tātad, man vajag izveidot, lai "X" pārvietojas pāri ekrānam un, kad sasniedz malu, maina virzienu (nu tā kā vienā no tiem windows screen seiveriem), un vēl, ja nospiež taustiņus (uz augšu, uz leju, pa labi, pa kreisi), "X" dodas norādītajā virzienā, un tālāk atkal uz riņķi. kā to var uzrakstīt?
ja kāds zina, lūdzu pasakiet!

un lūdzu bez komentāriem ne pa tēmu!

Komentāri:

#1 Eric @ 2010.04.17 16:41

iekopē savu kodu, palabošu

#2 Masonic @ 2010.04.17 16:44


program x_game;
  uses crt;
  var
x, y, curx, cury :byte;
ch :char;
       a :integer;
begin
clrscr;
x:=80 div 2;
y:=25 div 2;
a:=0;
repeat
gotoxy(x,y);
write('X');
curx:=wherex;
cury:=wherey;
gotoxy(curx-1,cury-1);
write(' ');
gotoxy(curx+1,cury-1);
write (' ');
gotoxy(curx+1,cury+1);
write(' ');
gotoxy(curx-1,cury+1);
write (' ');
repeat
x:=x+1;
y:=y+1;
until y<24;
repeat
x:=x+1;
y:=y-1;
until x<79;
repeat
x:=x-1;
y:=y-1;
until y>2;
repeat
x:=x-1;
y:=y+1;
until y<24;
repeat
x:=x-1;
y:=y-1;
until x>2;
repeat
y:=y-1;
x:=x+1;
until y>2;
until a=1;
readln;
end.



man ir tā, bet kkā nesanāk kā vajag

#3 Eric @ 2010.04.17 16:54

Vispirms, kur tu nolasi kāda poga ir nospiesta?

Visam jānotiek vienā ciklā, aptuveni šādi

repeat
if uz augšu then begin deltax = 0; deltay = 1; end;
if uz leju then begin deltax = 0; deltay = -1; end;
if pa labi  then begin deltax = -1; deltay = 0; end;
if pa kreisi then begin deltax = 1; deltay = 0; end;
curx:= curx + deltax;
cury:=cury + deltay;

DrawX(curx, cury);
until ... beigas ..

#4 Masonic @ 2010.04.17 16:57

man nevajag tikai ar pogām, vispirms vajag, lai viņš pats kustas, pēc tam tikai to, lai kko nospiežot mainās

#5 Eric @ 2010.04.17 17:00

uzstādi deltax un deltay defaultās vērtības atšķirīgas no 0 un būs

#6 Masonic @ 2010.04.17 17:02

nevari kcik uzrakstīt visu to kodu, un pa pm atsūtīt? lūdzu?

#7 Eric @ 2010.04.17 18:16

Iemācies lietas un uzraksti pats, mājasdarbi tiek uzdoti ar mērķi, lai skolnieki kaut ko iemācītos

Uz konkrētiem jautājumiem varu atbildēt, lai gan #3 jau 90% no visa ir uzrakstīts

#8 Masonic @ 2010.04.17 20:53

nu ok, jautājums:
kas jāraksta, lai tas x rakstītos ekrāna robežās, t.i. x no 2 līdz 79 un y no 2 līdz 24?
un kas jāraksta, lai atsitoties mainās virziens?

#9 KaNeiet @ 2010.04.17 21:22

Es lietotu XPieaugums un Ypieaugums, sasniedzot malu (X<2 VAI X>79 un attiecīgi Y) tos mainītu uz pretējo.

#3 tos nosaucis par deltax un deltay un curx cury

#10 Masonic @ 2010.04.17 21:45

un kā to izdarīt?

#11 KaNeiet @ 2010.04.17 22:14

Tev taču jau atbildēja:
Eric rakstīja:

Iemācies lietas un uzraksti pats, mājasdarbi tiek uzdoti ar mērķi, lai skolnieki kaut ko iemācītos

#12 Eric @ 2010.04.17 22:57


ja curx > 79 tad curx := 1;
ja curx< 1 tad curx := 79;

#13 KaNeiet @ 2010.04.17 23:09

#12 šoreiz tas nederēs - tas būs PackMan tipa risinājums, autors grib billjarda veida kustību

#14 Eric @ 2010.04.17 23:14

#13 Lai autors sākumā uztaisa vismaz kaut kādu risinājumu..

#15 karammba1991 @ 2011.05.16 19:24

lūdzu palīdzību, atrast kļūdu.....

program pulkstenis;
uses crt;
var f1,f2:text;
a,b,c,d,s,m,k,h,x:integer;
z:string;
begin
textmode(co80);
textcolor(15);
clrscr;
assign(f1,'pulkst.dat');
assign(f2,'pulkst.rez');
reset(f1);
rewrite(f2);
readln(f1,z);
val(copy(z,1,1),a,x);
val(copy(z,2,1),b,x);
val(copy(z,4,1),c,x);
val(copy(z,5,1),d,x);
s:=a*10+b;
m:=c*10+d;
k:=d*10+c;
if k>m then begin
           if s<10 then write(f2,'0');
           write(f2,s,':');
           if k<10 then write(f2,'0');
           write(f2,k);
           end
else begin
         if a<b then k:=a
                else k:=b;
         if c<d then h:=c
                else h:=d;
         if k<h then begin if k=10 then write(f2,'0');
                           if k>6 then begin k:=h;
                                             h:=k;
                                             end;
                           write(f2,k);
                           if h=10 then write(f2,'0');
                           write(f2,h,':');
                           end
                else begin if h=10 then write(f2,'0');
                           if h>6 then begin h:=k;
                                             k:=h;
                                             end;
                           write(f2,h);
                           if k=10 then write(f2,'0');
                           write(f2,k,':');
                           end;
         if a>b then k:=a
                else k:=b;
         if c>d then h:=c
                else h:=d;
         if k>h then begin if h=10 then write(f2,'0');
                           if h>6 then begin h:=k;
                                             k:=h;
                                             end;

                           write(f2,h);
                           if k=10 then write(f2,'0');
                           write(f2,k);
                           end
                else begin if k=10 then write(f2,'0');
                           if k>6 then begin k:=h;
                                             h:=k;
                                             end;
                           write(f2,k);
                           if h=10 then write(f2,'0');
                           write(f2,h);
                           end;
         end;
close(f1);
close(f2);
readkey;
end.

nevaru atrast, kas par vainu!
šai programmai vajadzīga ātrā palīdzība.

#16 jjanis @ 2011.05.16 19:40

manuprāt jāsāk būtu ar komentāru pievienošanu, funkciju izveidošanu un tad varētu runāt par "ātro palīdzību"...