Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 25.03.2017
Сообщений: 4
1

Анимации на Pascal ABC.NET

17.06.2017, 10:36. Показов 1860. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В чем может быть проблема ? Когда нажимаю на клавиши машина перемещаеться, но все линии не успевают перерисоваться и заливаеться вся страница.

Вот листинг :
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
uses GraphABC ; 
  var
    dx , dy : integer ;  
  
 procedure KeyDown( key : integer ) ; 
 begin 
  case key of 
      VK_Up : dx := - 80 ;
    VK_Down : dx := + 80 ;
    VK_Left : dy := - 50 ; 
   VK_Right : dy :=  + 50
   end;
  end;
  begin
  
  SetWindowIsFixedSize( true );  
  SetWindowSize( 800 , 640 );   
    
  LockDrawing ;
     repeat 
     clearwindow;
   line (200 , 638 , 200, 0  );
   line (600 , 638 , 600, 0  ); 
   line (200 , 638 , 600 , 638 ) ;
   line (200 , 0 , 600 , 0 ) ; 
  
   line (355  , 182 , 355 , 000 ) ;
   line (355 , 000 , 415 , 000 ) ;
   line (415 , 000 , 415 , 182 ) ;
   line (415 , 182 , 355 , 182 ) ;
    
  line ( 323 + dy , 313 + dx , 323 + dy, 527 + dx) ;
  line ( 323 + dy, 372 + dx, 302 + dy, 377 + dx) ;
  line ( 302 + dy, 377 + dx, 302 + dy, 382 + dx) ;
  line ( 302 + dy, 382 + dx, 323 + dy, 377 + dx) ;
  arc ( 392 + dy, 470 + dx, 90 , 220 , 320 ) ;
  line ( 461 + dy, 528 + dx, 461 + dy, 313 + dx) ; 
  line ( 461 + dy, 372 + dx, 482 + dy, 376 + dx) ;//
  line ( 482 + dy, 376 + dx, 480 + dy, 382 + dx) ;
  line ( 480 + dy, 382 + dx, 461 + dy, 381 + dx) ; 
  arc ( 365 + dy, 340 + dx, 50 , 145 , 110 ) ;
  line ( 347 + dy, 293 + dx, 430 + dy, 293 + dx) ; 
  arc ( 422 + dy, 343 + dx, 50 , 90 , 38 ) ;
  rectangle (358 + dy, 403 + dx, 425 + dy, 428 + dx) ;
   arc ( 390 + dy, 543 + dx, 190 , 108 , 72 ) ;
   line ( 331 + dy, 362 + dx, 348 + dy, 394 + dx) ; 
   line ( 348 + dy, 394 + dx, 434 + dy, 394 + dx); 
   line ( 434 + dy, 394 + dx, 448 + dy, 362 + dx) ;
   line ( 323 + dy, 434 + dx, 338 + dy, 437 + dx) ;
   line ( 338 + dy, 437 + dx, 336 + dy, 397 + dx) ; 
   line ( 336 + dy, 397 + dx, 323 + dy, 378 + dx) ; 
   line ( 338 + dy, 437 + dx, 338 + dy, 482 + dx ) ; 
   line ( 338 + dy, 482 + dx, 323 + dy, 483 + dx) ; 
   
   line ( 461 + dy, 436 + dx, 445 + dy, 439 + dx) ; 
   line ( 445 + dy, 439 + dx, 444 + dy, 398 + dx) ; 
   line ( 444 + dy, 398 + dx, 461 + dy, 381 + dx) ;
   line ( 445 + dy, 439 + dx, 445 + dy, 481 + dx) ; 
   line ( 445 + dy, 481 + dx, 461 + dy, 481 + dx) ;
    
   arc ( 392 + dy, 360 + dx, 160 , 250 , 288 ) ;
   arc ( 392 + dy, 340 + dx, 160 , 253 , 286 ) ;
   line ( 345 + dy, 493 + dx, 338 + dy, 510 + dx) ; 
   line ( 436 + dy, 493 + dx, 441 + dy, 512 + dx) ;
   
   line ( 318 + dy, 484 + dx, 323+ dy, 483 + dx) ; 
   line ( 318 + dy, 484 + dx, 318+ dy , 520 + dx) ; 
   line ( 318 + dy, 520 + dx, 323+ dy , 520 + dx) ; 
   
   line ( 461 + dy, 482 + dx, 466+ dy, 483 + dx) ; 
   line ( 461 + dy, 484 + dx, 461+ dy , 520 + dx) ; 
   line ( 461 + dy, 520 + dx, 466+ dy , 520 + dx) ; 
   line ( 466 + dy, 483 + dx, 466+ dy , 520 + dx) ; 
    
   line ( 323 + dy, 333 + dx, 317+ dy , 333 + dx) ; 
   line ( 317 + dy, 333 + dx, 317+ dy , 370 + dx) ;
   line ( 317 + dy, 370 + dx, 323+ dy , 370 + dx) ; 
   
  
   line ( 461 + dy, 334 + dx, 467+ dy , 335 + dx)  ;
   line ( 467 + dy, 335 + dx, 467+ dy , 368 + dx) ; 
   line ( 467 + dy, 368 + dx, 461+ dy , 368 + dx) ; 
   
    arc ( 311 + dy, 269 + dx, 50 , 285 , 330 ) ;
    arc ( 473 + dy, 270 + dx, 50 , 210 , 255 ) ; 
   
   floodFill ( 270 + dy, 149 + dx, cllightgray ) ;
   floodFill ( 380 + dy, 314 + dx, clRed ) ; 
   floodFill ( 336 + dy, 305 + dx, clYellow ) ; 
   floodFill ( 446 + dy, 308 + dx, clYellow ) ; 
   floodfill ( 390 + dy, 379 + dx, cldeepSkyBlue ); 
   Floodfill ( 332 + dy, 421 + dx, cldeepSkyBlue );
   FloodFill ( 329 + dy, 465 + dx, cldeepSkyBlue );
   FloodFill ( 385 + dy, 511 + dx, cldeepSkyBlue );
   floodFill ( 450 + dy, 420 + dx, cldeepSkyBlue );
   FloodFill ( 450 + dy, 450 + dx, cldeepSkyBlue );
   Floodfill ( 365 + dy, 411 + dx, clblack ) ; 
   floodFill ( 320 + dy, 357 + dx, clblack ) ; 
   FloodFill ( 320 + dy, 505 + dx, clblack ) ; 
   FloodFill ( 464 + dy, 500 + dx, clblack ) ;
   FloodFill ( 463 + dy, 349 + dx, clblack ) ; 
   FloodFill ( 311 + dy, 377 + dx, clred ) ; 
   FloodFill ( 470 + dy, 377 + dx, clred ) ;  
  
  RedRaw ;
   OnKeyDown := KeyDown ;
   until False ;
  end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.06.2017, 10:36
Ответы с готовыми решениями:

Нужно перевести код из Turbo Pascal в Pascal ABC.NET
Доброго времени суток. На форуме находил похожие темы, но к сожалению так и не смог разобраться....

Нужно перевести программу с Turbo Pascal в Pascal ABC.NET
Вот есть программный код , но он для турбо паскаля, помогите перевести его в АБС.NET Program...

Можно как-то переделать код из Turbo Pascal чтобы он работал в pascal abc.net?
Сделайте пожалуйста, я просто не вникаю uses Graph, Crt; var grDriver: integer; grMode:...

Перевод программы с Turbo Pascal на Pascal ABC.NET
написала программу в паскаль турбо на рабочем компьютере. перенесла в паскаль авсNet так как дома...

4
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32968 / 21282 / 8172
Регистрация: 22.10.2011
Сообщений: 36,556
Записей в блоге: 8
17.06.2017, 11:43 2
Читай комментарии к коду. Особенно в 111-ой строке.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
uses GraphABC ; 
var
  dx, dy: integer;
  changed: boolean := true; // Делаем раз
 
procedure KeyDown(key: integer ) ;
begin
  case key of 
    VK_Up: begin dx := -80;changed := true end; // Тут изменяем Changed 
    VK_Down: begin dx := +80;changed := true end;
    VK_Left: begin dy := -50;changed := true end;
    VK_Right: begin dy := +50;changed := true end
  end;
end;
 
begin
  OnKeyDown := KeyDown;
  SetWindowIsFixedSize(true );  
  SetWindowSize(800, 640 );   
  
  LockDrawing;
  repeat
    if changed then // перерисовываем только если были изменения
    begin
      clearwindow;
      line(200, 638, 200, 0  );
      line(600, 638, 600, 0  ); 
      line(200, 638, 600, 638 );
      line(200, 0, 600, 0 ); 
      
      line(355, 182, 355, 000 );
      line(355, 000, 415, 000 );
      line(415, 000, 415, 182 );
      line(415, 182, 355, 182 );
      
      line(323 + dy, 313 + dx, 323 + dy, 527 + dx);
      line(323 + dy, 372 + dx, 302 + dy, 377 + dx);
      line(302 + dy, 377 + dx, 302 + dy, 382 + dx);
      line(302 + dy, 382 + dx, 323 + dy, 377 + dx);
      
      arc(392 + dy, 470 + dx, 90, 220, 320 );
      line(461 + dy, 528 + dx, 461 + dy, 313 + dx); 
      line(461 + dy, 372 + dx, 482 + dy, 376 + dx);//
      line(482 + dy, 376 + dx, 480 + dy, 382 + dx);
      line(480 + dy, 382 + dx, 461 + dy, 381 + dx); 
      
      arc(365 + dy, 340 + dx, 50, 145, 110 );
      line(347 + dy, 293 + dx, 430 + dy, 293 + dx); 
      arc(422 + dy, 343 + dx, 50, 90, 38 );
      rectangle(358 + dy, 403 + dx, 425 + dy, 428 + dx);
      arc(390 + dy, 543 + dx, 190, 108, 72 );
      line(331 + dy, 362 + dx, 348 + dy, 394 + dx); 
      line(348 + dy, 394 + dx, 434 + dy, 394 + dx); 
      line(434 + dy, 394 + dx, 448 + dy, 362 + dx);
      line(323 + dy, 434 + dx, 338 + dy, 437 + dx);
      line(338 + dy, 437 + dx, 336 + dy, 397 + dx); 
      line(336 + dy, 397 + dx, 323 + dy, 378 + dx); 
      line(338 + dy, 437 + dx, 338 + dy, 482 + dx ); 
      line(338 + dy, 482 + dx, 323 + dy, 483 + dx); 
      
      line(461 + dy, 436 + dx, 445 + dy, 439 + dx); 
      line(445 + dy, 439 + dx, 444 + dy, 398 + dx); 
      line(444 + dy, 398 + dx, 461 + dy, 381 + dx);
      line(445 + dy, 439 + dx, 445 + dy, 481 + dx); 
      line(445 + dy, 481 + dx, 461 + dy, 481 + dx);
      
      arc(392 + dy, 360 + dx, 160, 250, 288 );
      arc(392 + dy, 340 + dx, 160, 253, 286 );
      line(345 + dy, 493 + dx, 338 + dy, 510 + dx); 
      line(436 + dy, 493 + dx, 441 + dy, 512 + dx);
      
      line(318 + dy, 484 + dx, 323 + dy, 483 + dx); 
      line(318 + dy, 484 + dx, 318 + dy, 520 + dx); 
      line(318 + dy, 520 + dx, 323 + dy, 520 + dx); 
      
      line(461 + dy, 482 + dx, 466 + dy, 483 + dx); 
      line(461 + dy, 484 + dx, 461 + dy, 520 + dx); 
      line(461 + dy, 520 + dx, 466 + dy, 520 + dx); 
      line(466 + dy, 483 + dx, 466 + dy, 520 + dx); 
      
      line(323 + dy, 333 + dx, 317 + dy, 333 + dx); 
      line(317 + dy, 333 + dx, 317 + dy, 370 + dx);
      line(317 + dy, 370 + dx, 323 + dy, 370 + dx); 
      
      
      line(461 + dy, 334 + dx, 467 + dy, 335 + dx);
      line(467 + dy, 335 + dx, 467 + dy, 368 + dx); 
      line(467 + dy, 368 + dx, 461 + dy, 368 + dx); 
      
      arc(311 + dy, 269 + dx, 50, 285, 330 );
      arc(473 + dy, 270 + dx, 50, 210, 255 ); 
      
      floodFill(270 + dy, 149 + dx, cllightgray );
      floodFill(380 + dy, 314 + dx, clRed ); 
      floodFill(336 + dy, 305 + dx, clYellow ); 
      floodFill(446 + dy, 308 + dx, clYellow ); 
      floodfill(390 + dy, 379 + dx, cldeepSkyBlue ); 
      Floodfill(332 + dy, 421 + dx, cldeepSkyBlue );
      FloodFill(329 + dy, 465 + dx, cldeepSkyBlue );
      FloodFill(385 + dy, 511 + dx, cldeepSkyBlue );
      floodFill(450 + dy, 420 + dx, cldeepSkyBlue );
      FloodFill(450 + dy, 450 + dx, cldeepSkyBlue );
      Floodfill(365 + dy, 411 + dx, clblack ); 
      floodFill(320 + dy, 357 + dx, clblack ); 
      FloodFill(320 + dy, 505 + dx, clblack ); 
      FloodFill(464 + dy, 500 + dx, clblack );
      FloodFill(463 + dy, 349 + dx, clblack ); 
      FloodFill(311 + dy, 377 + dx, clred ); 
      FloodFill(470 + dy, 377 + dx, clred );  
      
      FloodFill(360, 100, clWhite); // Вот она, магия !!!
      SetBrushColor(clWhite);
      RedRaw;
      changed := false; // объект перерисован, возвращаем Changed в False
    end
    
  until False;
end.
0
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
17.06.2017, 12:26 3
Что-то сколько ни смотрел разницы с этими строками
Pascal
1
2
 FloodFill(360, 100, clWhite); // Вот она, магия !!!
 SetBrushColor(clWhite);
и без них не заметил.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32968 / 21282 / 8172
Регистрация: 22.10.2011
Сообщений: 36,556
Записей в блоге: 8
17.06.2017, 12:28 4
Без них есть кратковременное мигание красным цветом всего графического окна, с ними - нет.
0
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
17.06.2017, 12:38 5
Странно, у меня такого нет, правда 1 раз мигнуло голубым в сером поле...
0
17.06.2017, 12:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.06.2017, 12:38
Помогаю со студенческими работами здесь

Нужно переделать программу,написанную на Turbo Pascal в ту,чтобы работала на Pascal ABC.NET пожалуйста
program lab3; uses Crt; const Output_File_Name = 'output.txt'; { ima faila dlya vivoda...

Нужно переделать программу,написанную на Turbo Pascal в ту,чтобы работала на Pascal ABC.NET пожалуйста
program lab2; uses Crt; const Nmax = 15; { MAX element mnozestva A } type T =...

Pascal ABC.NET
Привет всем) Хелпаните плис, матрицу то я написал., а вот как из нее вывести вектор я хз....

Печать в Pascal abc.net
Вот наткнулся на такую штуковину Можете рассказать, как это работает или где можно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru