Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 18.03.2021
Сообщений: 3
GraphABC

Нерабочий цикл. Я не понимаю почему он не работает. Я выделил нерабочий цикл пометками. Знает ли кто то причину?

18.03.2021, 20:41. Показов 716. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
uses GraphABC,ABCObjects;
var i,xHead,yHead,z,appleX,appleY:integer;
head,apple:CircleABC;
score:TextABC;
 
snake:array[1..100] of circleABC;
 
procedure KeyDown(key:integer);
begin
  if (key=vk_right) then z:=1;
  if (key=vk_left) then z:=2;
  if (key=vk_up) then z:=3;
  if (key=vk_down) then z:=4;
  end;
begin
  
  setwindowsize(1040,800);
  
  for i:=0 to 10 do begin
    line(0,i*80,windowWidth,i*80)
  end;
  
  for i:=0 to 13 do begin
    line(i*80,0,i*80,windowHeight)
  end;
  
  score:=textABC.Create(0,0,50,'0',clGray);
  
  appleX:=random(1,13)*80-40;
  appleY:=random(1,10)*80-40;
  
  apple:=circleABC.Create(appleX,appleY,40,clRed);
  head:=circleABC.Create(40,40,40,clGreen);
  
  while(true) do begin
  onKeyDown:=keyDown;
  
  if (z=1) then xHead:=xHead+80
  else if (z=2) then xHead:=xHead-80
  else if (z=3) then yHead:=yHead-80
  else if (z=4) then yHead:=yHead+80;
  
  if (xHead>windowWidth) then xHead:=0;
  if (yHead>windowHeight) then yHead:=0;
  if (xHead<0) then xHead:=windowWidth;
  if (yHead<0) then yHead:=windowHeight;
  
  
   if ((xHead=appleX) and (yHead=appleY)) then begin //Нерабочий цикл
   appleX:=random(1,8)*80-40; //
   appleY:=random(1,6)*80-40; //
   apple.MoveTo(appleX-40,appleY-40); // Нерабочий цикл
   score.Text:=((score.Text).tointeger+1).tostring(); //
   for i:=1 to 1000 do begin //
     snake[i]:=CircleABC.Create(xHead,yHead+80*i,40,clRed); //
   end; // Нерабочий цикл
   end;
  
  head.MoveTo(xHead,yHead);
  sleep(200);
  
  end;
  
end.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.03.2021, 20:41
Ответы с готовыми решениями:

Ошибка с инициализацией и нерабочий цикл
Запустил отладку, не выполняются циклы выделенные коментами, потому что i имеет значение -858993460 после инициальзации void Second() ...

Неизвестно почему нерабочий тетрис в 400 строк
Да да, я не добавлял функций управления, жду когда заработает физика объектов :( Хидер #ifndef TETRIS_H #define TETRIS_H ...

Цикл: Подскажите мне, пожалуйста, почему цикл не работает?
уважаемые программисты, подскажите мне пожалуйста почему цикл не работает for (int n = 0; n &lt;= koll; ++n) { ...

6
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,059
19.03.2021, 05:35
Вам нужно искать пересечение объектов (раз уж вы с ними работаете ;–)
Pascal
49
if apple.Intersect(head) then begin
Но, на мой взгляд, не нужно работать с объектами.
Гораздо проще работать просто с массивом 10х13 и выводить только окружности по сетке х80.
1
0 / 0 / 0
Регистрация: 18.03.2021
Сообщений: 3
19.03.2021, 08:12  [ТС]
То есть вы имеете ввиду убрать эту сетку и просто использовать массив? Я просто только начинаю писать подобные коды и в голове все не укладывается. Могли бы вы объяснить? Я буду благодарен.
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
19.03.2021, 08:25
Цитата Сообщение от JayPornStar Посмотреть сообщение
Могли бы вы объяснить?
А не мошли бы Вы написать суть программы, т.е. ее ТЗ?
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,059
19.03.2021, 08:26
При чём здесь сетка?
Я говорю, что пока вы ещё мало знаете, не нужно усложнять себе жизнь и лезть в объекты…
А с сеткой или без — это вам решать!

И пока у вас только одна голова имеется, а потом нужно будет хвосту расти. Что вы с ним делать будете?
Где хранить? В массиве или списке.
0
0 / 0 / 0
Регистрация: 18.03.2021
Сообщений: 3
19.03.2021, 08:40  [ТС]
Суть программы - змейка. Я сделал само игровое поле и голову змеи, но не понимаю как мне сделать так, чтобы при подборе яблока(подбор яблока я уже сделал) добавлялось тело, которое двигается за головой. Я понимаю как добавить тело, но как сделать так, чтобы оно двигалось за головой.

Добавлено через 1 минуту
Я понимаю, что нужно хранить в массиве хвост, ну, или тело, но я не понимаю как это все реализовать. Смотрел пару уроков в интернете, но там люди делают немного по другому, они делают определенный размер тела (например, 5, т.е. за головой идет 5 кругов), но никто не делал, чтобы при подборе яблока тело увеличивалось (или я просто не нашел).
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,059
19.03.2021, 08:52
https://www.cyberforum.ru/post12547071.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.03.2021, 08:52
Помогаю со студенческими работами здесь

не понимаю почему цикл не заканчивается
Привет! Вот написал. Объясните, пожалуйста, почему цикл не заканчивается? Функция должна считывать инфу и записывать в массив! Идеи по...

Не понимаю как работает цикл!
Приветствую! Начал долбить пхп... Есть код: function mult ($a) { static $result=1; //определение $result как статичной ...

Нужно вывести рисунок из * и -, не понимаю почему но цикл останавливается на первом условии
//Выводит почему то только 1 звезду /* А должно выводить нечто подобное *-*-* -***- **** -***- *-*-* */ int main()

Изучение языка, цикл for. Не понимаю, как он работает
Не понимаю, как работает цикл for. Объясните, пожалуйста

Не правильно работает цикл for while или я чего то не понимаю
Здравствуйте. Происходит очень странная вещь. Помогите пожалуйста кто сможет. Сделал цикл for while, но он почему то считает не так как...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru