Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 09.03.2019
Сообщений: 41

Арканоид. Как сделать так, чтобы шарик отскакивал от блоков?

27.04.2020, 00:36. Показов 807. Ответов 1

Студворк — интернет-сервис помощи студентам
Здравствуйте дорогие форумчане! Я недавно начал изучать паскаль и возник следующий вопрос: как сделать так, чтобы шарик отскакивал от блоков?
Вот мой код:

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
uses graphabc,events;
type matr=array[1..8,1..13] of integer;
var dx, dy, x,y,x1,y1,x2,y2,k:integer;
    a:matr;
    w:boolean;
    
procedure block(var ai:matr);
var i,j:integer;
begin
for i:=1 to 8 do
    for j:=1 to 13 do ai[i,j]:=random(3);
end;
 
procedure risblock(ai:matr);
var i,j,x1,y1:integer;
begin
x1:=5;y1:=10;
for i:=1 to 8 do begin
    for j:=1 to 13 do if a[i,j]=0 then begin
                                       rectangle(x1,y1,x1+50,y1+10);
                                       x1:=x1+53;
                                       end
                                       else x1:=x1+53;
                  x1:=5;
                  y1:=y1+13;
                  end;
                  textout(20,270,IntToStr(x));
    textout(20,290,IntToStr(y));
end;
 
procedure dvig(key:integer);
begin
  case key of
    vk_left: if x1>=5 then begin x1:=x1-10; x2:=x2-10 end;
    vk_right: if x2<=695 then begin x1:=x1+10; x2:=x2+10 end;
  end;
end;
 
 
begin
 block(a);
 k:=3;
while k <> 0 do
begin
    setwindowsize(700,400);
    x:=350;
    y:=382;
    w:=true;
    dx:=5;
    dy:=-7;
    x1:=310; y1:=387; x2:=390; y2:=400;
    rectangle(310,387,390,400);
      while w = true do
      begin
        if y>=400 then begin w:=false;
        
        k:=k-1;
        
        end
        else 
        begin
            sleep(20);
            clearwindow;
            lockdrawing;
            rectangle(x1,y1,x2,y2);
            circle(x,y,5);
            risblock(a);
            if (x>=695) or (x<=5) then dx:=-dx;
            if (y<=5) or ((abs(x-x1-40)<=40) and (abs(y-395)<=6))  then dy:=-dy;
            x:=dx+x;
            y:=y+dy;
            textout(20,300,'жизни ');
            textout(60,300, IntToStr(k));
            redraw;
            onkeydown:=dvig;
        end;
      end;
      
 end;
    clearwindow;
    textout(280,100,'===GAME OVER===');
     redraw
 
 
end.
Добавлено через 28 минут
Есть идея проходить по каждой строке массива в зависимости от координаты у шарика, но я не могу собрать это всё воедино.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.04.2020, 00:36
Ответы с готовыми решениями:

Редактор блок-схем, как сделать так, чтобы линии соединяющие блоки сохранялись при перемещении блоков
Здравствуйте! Сел за написание курсовой работы и сильно заинтересовал один вопрос: Каждый блок можно соеденить линией - двойным кликом...

Как сделать так чтобы страничка при увеличения разрешения не двигалась в разные стороны, и как сделать чтобы при открытии в опере и в других браузерах
все обьекты на странице не двигались в разные стороны???

Сделать так, чтобы функция возвращала как целые, так и дробные значения
Задача: нужно найти среднее арифметическое чисел в одномерном массиве разных типов. В main() у пользователя спрашивается размер...

1
0 / 0 / 0
Регистрация: 09.03.2019
Сообщений: 41
01.06.2020, 15:16  [ТС]
не актуально
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.06.2020, 15:16
Помогаю со студенческими работами здесь

Так как же сделать так, чтобы Remoting выполнялся в уже существующем на сервере объекте?
Общее описание проблемы Существует Solution, состоящий из сервера, клиента и общей dll-библиотеки. Между клиентом и сервером...

Нацелить пушку так, чтобы шарик ударился сначала о стену, а затем попал в цель
Всем привет. Вынужден в очередной раз просить помощи. Задача В начале координат установлена пушка, стреляющая шариками для...

Как сделать, чтобы при уменьшении окна уменьшался размер блоков
Здравствуйте. На сайте есть несколько div, которые расположены по три в ряд. Как сделать, чтобы при уменьшении окна одновременно...

Как при наведении на ссылку или иконку сделать так что бы несколько блоков сдвинулись?
Здравствуйте форумчане, помогите пожалуйста. Как при наведении на ссылку или иконку сделать так что бы несколько блоков сдвинулись? ...

Как сделать так, чтобы при нажатии кнопки появлялся текст?Чтобы без javascript
Как сделать так, чтобы при нажатии кнопки появлялся текст? На html или php можно сделать . Типо как этот скрипит но не javascript...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru