Результаты поиска
| |
AKukuruz | Дата: Суббота, 06 Августа 2016, 18:33 | Сообщение # 1 | Тема: Остановить процедуру через break |
был не раз
Сейчас нет на сайте
| Вроде понятно... Но не до конца)). Мне надо через вводимый параметр f ограничить число рисуемых фигур... То есть нажал f раз и операция описываемая в событии не происходит.
Код procedure draw_r(f: integer); begin var i: integer;//хранение числа фигур i:=i+1; //при клике увеличивается на 1 for i := 1 to f do begin onmousedown:=MouseDown; if i > f then break; end;
В главном цикле число фигур передается через параметр в процедуру... но программа не работает так как мне нужно... сижу думаю почему...
пробовал repeat ... until f=3, тоже самое - не работает как хочу. кстати про табуляцию это да) ну просто сейчас это не так важно... мне щас важн понять в чем я ошибку постоянно делаю)) систематически причем...
Сообщение отредактировал AKukuruz - Суббота, 06 Августа 2016, 18:34 |
|
| |
AKukuruz | Дата: Воскресенье, 31 Июля 2016, 18:27 | Сообщение # 2 | Тема: Остановить процедуру через break |
был не раз
Сейчас нет на сайте
| Если в конце процедуры стоит break то прекращается выполнение цикла... А у меня вроде и условие выполняется но при клике все равно рисуются фигуры. Кароч или я что-то не понимаю или что-то делаю не так...
Добавлено (31 июля 2016, 18:27) ---------------------------------------------
Цитата Lertmind ( ) твой код очень странный и неверный, перепишу немного по-другому чтобы показать: не спорю, пока делаю очень много ошибок... учусь по урокам на сайтах...
да спасибо) процедуры с параметрами я еще не писал.
Код procedure draw_r(nr: integer); //рисуем begin begin onmousedown:=MouseDown; end; nr:=+1; if nr :=3 then break; end;
на предпоследней строчке ожидается оператор... я все не могу понять какой там оператор должен быть и зачем он нужен?...
есть действие после него счетчик... есть условие, все вроде нормально... я понимаю что есть ошибка, я ее не вижу!
можно еще счетчик сунуть в обработчик... правда скорее всего запутаюсь в переменных... чето так туплю непонятно где... вроде все просто.
Сообщение отредактировал AKukuruz - Воскресенье, 31 Июля 2016, 18:29 |
|
| |
AKukuruz | Дата: Пятница, 29 Июля 2016, 05:38 | Сообщение # 3 | Тема: Остановить процедуру через break |
был не раз
Сейчас нет на сайте
| Код procedure draw_r(); //рисуем begin var nr: integer; nr:=+1; for nr := 0 to 3 do onmousedown:=MouseDown; if nr > 3 then break; end;
говорит break вне цикла
|
|
| |
AKukuruz | Дата: Четверг, 28 Июля 2016, 17:48 | Сообщение # 4 | Тема: Остановить процедуру через break |
был не раз
Сейчас нет на сайте
| Что надо сделать чтобы после трех раз процедура прекращала действие? То есть фигура не рисовалась. Вводим переменную равную числу фигур при ее значении равное трем надо что-то делать...
после redraw ставил
Код nr:=+1; if nr :=>3 then break;
ругается на отсутствие оператора... Не совсем понятно что там должен быть за оператор...
Код uses graphABC; var nr,px1,py1:integer;
procedure MouseDown(x,y,mb:integer); begin px1:=x; //начальная позиция фигурs равна центру экрана py1:=y; drawrectangle(px1-25,py1-50,px1+25,py1+50); lockdrawing; redraw; end;
procedure draw_r(); //рисуем begin onmousedown:=MouseDown; end;
begin//основной цикл SetWindowTitle('Графическое окно'); Setwindowsize(800,600); //размер окна CenterWindow;//центр монитора
draw_r();
end.
|
|
| |
AKukuruz | Дата: Четверг, 28 Июля 2016, 16:22 | Сообщение # 5 | Тема: Полет фантазии... |
был не раз
Сейчас нет на сайте
| Недавно начал изучать паскаль, недели 2... Есть такая проблемка - в голову уже лезут всякие панели и бары с игровыми данными.
Пример: жмем на квадратик (кнопку типа...) - вылазит поле (textout) выводящее количество золота или имя/уровень... Правда я еще мышиные процедуры не доизучал и вообще не в состоянии пока сделать такие панельки...
У кого такое было на этапе обучения?))
|
|
| |
AKukuruz | Дата: Четверг, 21 Июля 2016, 06:02 | Сообщение # 6 | Тема: Выключить консоль в приложении в оконном приложении. |
был не раз
Сейчас нет на сайте
| Когда подключены и crt и graph то вместе с графическим окном вылазит и консоль. Если в окне у меня допустим змейка то консоль не нужна... Хотя через консоль можно менять скорость.
Разобрался вроде... Можно не подключать crt, если подключен graph то процедуры write и read работают.
Среда ABC.net.
|
|
| |
AKukuruz | Дата: Четверг, 21 Июля 2016, 02:38 | Сообщение # 7 | Тема: Выключить консоль в приложении в оконном приложении. |
был не раз
Сейчас нет на сайте
| Как выключить консоль?) Добавлено (21 июля 2016, 02:38) --------------------------------------------- Чтобы не вылазило текстовое окно вместе с графическим?
|
|
| |
AKukuruz | Дата: Среда, 20 Июля 2016, 10:58 | Сообщение # 8 | Тема: Процедуры для работы с мышью в PascalABC |
был не раз
Сейчас нет на сайте
| Цитата last2424 ( ) Мне вот интересно, а почему begin пишется 2 раза за программу, он же вроде один раз только пишется? Потому что у меня опыт работы в среде 3 недели))
Цитата Gudleifr ( ) Gudleifr А у его книг названия какие? Что гуглить то? Очень хотелось бы поглядеть...
Посмотрел некоторые книги - читать сложно. Учебник по информатике был и то понятней. Отпугивает то что авторы пишут не столько о программировании сколько просто пишут... Пишут красиво, но не про програмирование...
|
|
| |
AKukuruz | Дата: Пятница, 08 Июля 2016, 02:27 | Сообщение # 9 | Тема: Процедуры для работы с мышью в PascalABC |
был не раз
Сейчас нет на сайте
| Вообще ее надо бы рисовать после второго клика когда мы узнали конечные координаты... А при первом только начальные указать.
А как дать понять программе что я делаю второй клик? Вот через moveto... Тоже не работает...
Код uses GraphABC;
procedure mousedown(x,y,mb: integer); begin if mb=1 then MoveTo(x, y); begin if mb=1 then Lineto(x, y); end; end;
begin SetWindowTitle('Графическое окно'); Setwindowsize(800,600); //размер окна
OnMousedown:=Mousedown;
end.
|
|
| |
AKukuruz | Дата: Четверг, 07 Июля 2016, 22:41 | Сообщение # 10 | Тема: Процедуры для работы с мышью в PascalABC |
был не раз
Сейчас нет на сайте
| Нагуглил что-то похожее.
Рисуем линию, но начальные координаты в точке 0,0... Буду думать как ее задать при первом клике.
Код uses GraphABC;
procedure MouseDown(x,y,mb: integer); begin if mb=1 then LineTo(x,y); end;
begin SetWindowTitle('Графическое окно'); Setwindowsize(800,600); //размер окна
OnMouseMove:=MouseDown;
end. Добавлено (07 июля 2016, 22:41) ---------------------------------------------
Цитата 1nt3g3r ( ) Мой основной язык сейчас - Java, синтаксис Pascal-я уже немного подзабылся... Да) Всеравно спасибо за помощь.
|
|
| |
AKukuruz | Дата: Четверг, 07 Июля 2016, 22:20 | Сообщение # 11 | Тема: Процедуры для работы с мышью в PascalABC |
был не раз
Сейчас нет на сайте
| Исправил. Программа запускается, но ничего не происходит... Ятп координаты или не хранятся или не передаются в переменные Line. пробовал обьвлять x1,x2,y1,y2 - не помогает...
Наверное теперь что-то в том месте где обработчик события не правильно... А на ваш вариант программа тоже ругается при запуске... "Операция '<>' не применима к типам boolean и integer".
Сообщение отредактировал AKukuruz - Четверг, 07 Июля 2016, 22:23 |
|
| |
AKukuruz | Дата: Четверг, 07 Июля 2016, 22:02 | Сообщение # 12 | Тема: Процедуры для работы с мышью в PascalABC |
был не раз
Сейчас нет на сайте
| Цитата 1nt3g3r ( ) Gudleifr, нет, вы понимаете неверно - при использовании модуля GraphABC автоматически будет создано графическое окно. Программа завершит работу лишь тогда, когда пользователь закроет окно. А пока оно открыто, он вполне может несколько раз щелкнуть мышкой где-то в окне, и что-то нарисуется (предполагаю, что будут точки рисоваться).
А окно разве не часть программы? В программе может быть графическое окно + консольщина для команд. Это вроде и есть программа... Даже пустое окно - все равно программа.
Сообщение отредактировал AKukuruz - Четверг, 07 Июля 2016, 22:20 |
|
| |
AKukuruz | Дата: Четверг, 07 Июля 2016, 21:18 | Сообщение # 13 | Тема: Процедуры для работы с мышью в PascalABC |
был не раз
Сейчас нет на сайте
| Цитата Gudleifr ( ) А MouseDown так никто и не вызвал, т.к. OnMouseDown так и не случмлось.
Когда писал программу рисующую точку при MouseDown все работало. Тыкнули мышкой - нарисовали точку, тыкнули еще раз нарисовали еще раз... Соответственно событие произошло.
Цитата 1nt3g3r ( ) Gudleifr, почему это - OnMouseDown как раз и случилось (случится, вернее). То, что оно не приведет к желанному результату - это другое дело. Да я тоже уверен что случится, но при присваивании а и б координат что-то не так...
Я даже скомпилировать не могу. В строке a: = x; ругается что "Встречено ':', а ожидалось ';'"... А почему я не могу понять, язык изучаю недели две, сильно путаюсь в расстановках. Если бы кто-то обьяснил почему ругается было бы понятней что делать... То есть я понимаю что ошибка а в чем именно не понимаю.
Команда рисующая точку обьявляется в процедуре клика мышки. Для лайна нужно 2 клика... То есть я не могу засунуть line в mousedown, что логично. События ведь два.
Код procedure mousedown(x,y,mb: integer); begin if mb=1 then PutPixel(x, y, clRed); //красим пиксель end;
Сообщение отредактировал AKukuruz - Четверг, 07 Июля 2016, 21:27 |
|
| |
AKukuruz | Дата: Четверг, 07 Июля 2016, 19:56 | Сообщение # 14 | Тема: Процедуры для работы с мышью в PascalABC |
был не раз
Сейчас нет на сайте
| Где взять их список? MouseMove, MouseDown и тд Если с текстом, то есть crt многое понятно, то с мышью не так... И вообще какие есть путевые книги по АБС?
Допустим надо мышкой ввести координаты путпиксела или вывести их в поле textout.
Вроде понял что они принадлежат модулю Events, но как-то видел в яндексе что есть и модуль Mouse, хотя сейчас нагуглить его не могу... Может это от невнимательности... С вводом-выводом текста и графики все понятно, а мышиные процедуры найти не могу...
p.s.: да я гуглил.
Добавлено (07 июля 2016, 19:56) --------------------------------------------- там где присваиваю значение а и б в mousedown что-то не так...
Код uses GraphABC;
var a,b: integer; //координаты мышки
procedure MouseDown(x,y,mb: integer); begin if mb=1 then // передаем координаты мышки в переменные а и б a : = x; b := y; end;
begin SetWindowTitle('123'); Setwindowsize(800,600); //размер окна
OnMouseDown:=MouseDown; //1 клик, передаем координаты мышки в начальные координаты лайна x1: = a; y1: = b;
OnMouseDown:=MouseDown; //2 клик, передаем тоже самое только в конечные x2 : = a; y2 : = b;
Line(x1,y1,x2,y2); //рисуем
end.
Сообщение отредактировал AKukuruz - Четверг, 07 Июля 2016, 19:58 |
|
| |
AKukuruz | Дата: Среда, 29 Июня 2016, 14:24 | Сообщение # 15 | Тема: Pascal ABC. Вывод на экран случайного числа. |
был не раз
Сейчас нет на сайте
| Цитата Gudleifr ( ) А как этот цикл может не зависнуть?
Ухх... Я даже на это внимание не обратил...
Код uses crt;
var i: integer; procedure Random_d(i: integer); begin i:=random(10); while(true) do for i := 1 to 10 do writeln('Случайное число ' + (i).ToString()) end; begin SetWindowTitle('Вывод случайного числа'); random_d(i);
end.
Исправил, но числа выводит в порядке возрастания... А не случайно.
|
|
| |
AKukuruz | Дата: Вторник, 28 Июня 2016, 19:52 | Сообщение # 16 | Тема: Pascal ABC. Вывод на экран случайного числа. |
был не раз
Сейчас нет на сайте
| Код uses crt;
var i: integer; procedure Random_d(i: integer); begin for i := 1 to 10 do writeln('Случайное число ' + (i).ToString()) end; begin while(true) do SetWindowTitle('Вывод случайного числа'); clrScr; randomize; i:=random(10); random_d(i);
end.
Тут при запуске все зависает, я так понимаю потому что происходит какое-то переполнение? Надо бы количество циклов ввести...
Сообщение отредактировал AKukuruz - Вторник, 28 Июня 2016, 19:53 |
|
| |
AKukuruz | Дата: Воскресенье, 26 Июня 2016, 10:32 | Сообщение # 17 | Тема: Pascal ABC. Вывод на экран случайного числа. |
был не раз
Сейчас нет на сайте
| "Не работает? Значит, Вы что-то сделали неправильно" Это само собой. А что именно неправильно не всегда понятно...
Огрести? Да я и так огребаю от проги уже... При включении программы вылезают ошибки именно в том месте... Как раз где вы и сказали. Что-то про "должен быть оператор, а стоят точки". Но смысл его я не понял...
Пустой оператор он придуман вообще для каких целей? Оператор он вроде бы указывает на какое-то действие... А пустой оператор ничего не делает... Ятп это уже особенности языка какие-то.
|
|
| |
AKukuruz | Дата: Суббота, 25 Июня 2016, 19:21 | Сообщение # 18 | Тема: Pascal ABC. Вывод на экран случайного числа. |
был не раз
Сейчас нет на сайте
| Тут кстати сделано без рандомайзера. Взято отсюда. http://pascalabc.net/WDE/?file=AlgBegin/01_Begin/06_Random.pas
Код var r1,r2: integer; // значения на верхних гранях кубиков begin r1 := Random(6)+1; r2 := Random(6)+1; writeln('Очки, выыпавшие на кубиках: ',r1,' ',r2); writeln('Сумма очков равна ',r1+r2); end.
Код uses crt;
var i:integer;
begin while(true) do begin; randomize; i:=random(10); writeln('Случайное число ' + (i).ToString()); for i := 1 to 10 do writeln('Случайное число ' + (i).ToString()); end; end.
Если выведено число из диапазона товывести случайное число опять.
А еще можно через repeat, но я не могу понять в какой части кода должен быть этот оператор и где ошибка...
Исходники я и так смотрю, кстати на сайте по ссылке непрохие примеры. Но когда свой код пишу то бывают непонятки... Еще просмотрел несколько книжек типа "песен". По моему они мало пригодны для изучения - много ненужной воды. Вообще изучение намного лучше идет когда есть наставник или знакомый который может указать на ошибку...
Сообщение отредактировал AKukuruz - Суббота, 25 Июня 2016, 19:32 |
|
| |
AKukuruz | Дата: Суббота, 25 Июня 2016, 12:01 | Сообщение # 19 | Тема: Pascal ABC. Вывод на экран случайного числа. |
был не раз
Сейчас нет на сайте
| Спасибо, почти понял. Read по невнимательности написал... Randomize включает рандом. А random задает диапазон...Добавлено (25 июня 2016, 12:01) --------------------------------------------- А что нужно добавить в код чтобы зациклить вывод?
|
|
| |
AKukuruz | Дата: Пятница, 24 Июня 2016, 09:43 | Сообщение # 20 | Тема: Pascal ABC. Вывод на экран случайного числа. |
был не раз
Сейчас нет на сайте
| Где-то ошибка... Синтаксис пока не усвоил так что не могу сам ее найти.
Код uses crt;
var i: real;
begin random(i); read('i'); end.
Вместо числа выводит переменную i.
|
|
| |
|