1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code]. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Равномерное движение шарика по поверхности стола, Равномерное движение шарика по поверхности стола
Здравствуйте люди добрые, не могли бы помочь переделать немного код программы.
Uses Crt,Graph; {Stroka, soobschayuschaya, chto nuzhno vklyuchit' moduli Crt i Graph v programmu} Const a1:string='L A B O R A T O R N A Y A R A B O T A'; a2:string='O P R E D E L E N I E S K O R O S T I T E L A'; a3:string='Dlya prodolzheniya nazhmite lyubuyu klavishu'; a4:string='Vvedite vremya (.1<DT<.5 s) mezhdu vspyshkami.'; a5:string='Dlya otvoda otvedeno ne bolee 4 znakomest, DT= ';
Procedure start; begin OutTextXY(200,200,a1); OuttextXY(150,250,a2); OutTextXY(200,400,a3); repeat until keypressed; {Ozhidanie nazhatiya klavishi} SetFillStyle(1,0); {Stil' i tsvet fona} Bar(0,0,640,480); {Razmer fona} end;
Function table:real; Var oo:string[4]; vu,vx,v:integer; vy:real; begin randomize; {Vysota stola zadaetsya sluchainym obrazom} hs:=random(200)+150; h:=470-hs; m:=1; g:=random(5)+982; g:=g div 2; SetFillStyle(1,6); {Stil' i tsvet stola} Bar(10,h+7,206,479); Line(0,479,640,479); SetFillStyle(1,0); Bar(30,h+40,186,479); end;
Function move:real; Var oo:string[4]; vu,vx,v:integer; vy:real; begin SetColor(15); {Tsvet kruzhkov} v:=random(300)+200; for i:=1 to 340 do {Operator tsikla s parametrom} begin vx:=i; if (vx <= 206) then vy:=h else vy:=h+982/2*(vx-206)*(vx-206)/(v*v); vu:=round(vy); if (i mod 12=0)then circle(vx,vu,6); OutTextXY(510,190,'v ='); str(v,oo); OutTextXY(540,190,oo); end; {end otnositsya k operatoru tsikla s parametrom} end;
Procedure menu; Var st,sc:string[3]; begin OutTextXY(af,bf,a4); {Vyvod teksta v zadannyh koordinatah} OutTextXY(af,bf+10,a5); OutTextXY(445,130,'probel -prodolzhenie'); OutTextXY(500,140,chr(24)); OutTextXY(510,140,'-vverx'); OutTextXY(500,150,chr(25)); OutTextXY(510,150,'-vniz'); OutTextXY(500,160,chr(26)); OutTextXY(510,160,'-vpravo'); OutTextXY(500,170,chr(27)); OutTextXY(510,170,'-vlevo'); OutTextXY(493,180,' - kursor'); OutTextXY(500,200,'VIHOD-ESC');
Rectangle(550,30,570,40); SetFillStyle(6,0); {Protsedura ispol'zuetsya dlya togo, chtoby tsifry...} FloodFill(550,30,0); {...pri dvizhenii kursora ne nakladyvalis' drug na druga}
OutTextXY(550,30,st); str(cy,st); OutTextXY(550,40,st); SetColor(4); {Tsvet ramki, v kotoruyu zaklyucheny znacheniya x i y} rectangle(af+450,bf-6,600,bf+70); end;
Procedure kursor; begin cx:=483; {Koordinaty mestopolozheniya kursora} cy:=183;
Procedure movekursor; Var st:string[3]; begin ch:=readkey; {Schityvanie nazhatoi klavishi}
SetColor(0); {Zakrashivaem sled ot dvizheniya kursora} Line(cx-5,cy,cx+5,cy); Line(cx,cy-5,cx,cy+5); Circle(cx,cy,5);
if (ord(ch)=72) then cy:=cy-1;{Schityvaem ScanCode s klaviatury i proveryaem sootvetstvuet li on nazhatiyu klavishi} {vverh} if (ord(ch)=80) then cy:=cy+1;{Schityvaem ScanCode s klaviatury i proveryaem sootvetstvuet li on nazhatiyu klavishi} {vniz} if (ord(ch)=75) then cx:=cx-1;{Schityvaem ScanCode s klaviatury i proveryaem sootvetstvuet li on nazhatiyu klavishi} {vlevo} if (ord(ch)=77) then cx:=cx+1;{Schityvaem ScanCode s klaviatury i proveryaem sootvetstvuet li on nazhatiyu klavishi} {vpravo} if (cx<6) then cx:=6; {Ogranichenie polozheniya kursora pri dvizhenii vlevo} if (cx>622) then cx:=622; {Ogranichenie polozheniya kursora pri dvizhenii vpravo} if (cy<6) then cy:=6; {Ogranichenie polozheniya kursora pri dvizhenii vverh} if (cy>464) then cy:=464; {Ogranichenie polozheniya kursora pri dvizhenii vniz}
if ord(ch)=32 then {Schityvaem ScanCode s klaviatury, esli nazhata dannaya klavisha, to...} begin SetFillStyle(1,0); Bar(0,0,640,480); {Zakrashivaem ekran} kursor; {Perehod k protsedure} end; end;
begin gd:=detect; {Avtomaticheskoe raspoznavanie videoadaptera} af:=6; bf:=6;
InitGraph(gd,gm,'d:\tp\bgi'); {Pereklyuchenie v graficheskii rezhim} start; {Perehod k protsedure} kursor; {Perehod k protsedure}
repeat movekursor; {Perehod k protsedure} until ord(ch)=27; {Schityvaem ScanCode s klaviatury, esli nazhata dannaya klavisha, to...} end. {Okonchanie razdela operatorov}
Собственно вот сам код, программа почти нормально работает, только вот нужно передеалть немного формулу в процедуре move, и возможно в функции table... Сама программа переделывалась с QBasic'a.
Задание(но с кодом для бэйсика) расположено в Image0046-48.jpg..
Если что-то не так то сильно не ругайте Буду очень благодарна, заранее спасибо..