Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2009, 21:44   #71
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
На экране крупно написано "введите количество дисков" снизу поле для ввода. Если я нажимаю на цифру, она соответственно должна появиться в поле. Если цифра неверная (за возможными пределами), то пишет ошибку. Цифру можно стереть.
Читайте цифру как букву. И выводите в поле строку.
Если нажат backspace, то просто стираете последний символ и выводите строку заново.
А потом уже преобразуете строку в число (процедура val).

Цитата:
Сообщение от Djels
+небольшой вопрос по ходам. В любом случае, если я нажму на стрелку вниз - количество прибавляется. То есть считывается не опускание диска , а нажатие. как это можно исправить?
Я вам говорил про это. Нужно проверять, не стоит ли курсор с блоком над тем же местом, откуда его взяли. Если так оно и есть, то не увеличивать количество ходов.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 03.06.2009, 22:08   #72
Djels
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 36
По умолчанию

Sazary, Вот так, я вставил всю часть с ходами сюда:
Код:
if hb[i,j]=0 then
      begin
           hb[i,j]:=a;
           d:=hb[i,j];
           a:=0;
           disk(x1,d);
           remdisk(0,0);
           SetFillPattern(G, 0);
           bar (200,81,250,101);
inc(CountHod);
    str(CountHod, hod);
    str(CountHod-1,predhod);
setcolor(0);
  outtextxy(370,30,''+predHod);
  setcolor(15);
    outtextxy(370,30,''+Hod);
    setcolor(3);

        end
В таком случае он правильно делает, если диск ставится на пустое поле, а не на диск. Немного тяжело доходит это


[UPD]:
Код:
      outtextxy(130,200,'Vvedite Kolichestvo diskov [2.10]');
      repeat
      readln(m);
      str(m,mx);
      outtextxy(300,300,''+mx);

      until (m>=2) and (m<=9) ;
Жалкие попытки вывести на экран цифорку

Последний раз редактировалось Djels; 03.06.2009 в 22:15.
Djels вне форума Ответить с цитированием
Старый 03.06.2009, 22:20   #73
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Вот так, я вставил всю часть с ходами сюда:
Не туда вставили. Это должно быть в конце процедуры down (как у вас и было).
Ну или вставьте еще этот же кусок чуть повыше, в блок:
Код:
if hb[i,j]=0 then
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 03.06.2009, 22:27   #74
Djels
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 36
По умолчанию

Так... если я ставлю выше, в блок
Код:
if hb[i,j]=0 then begin
то тоже самое - не считает при опускании диска на диск.
А если внизу оставить, можете написать, какое условие должно быть? я что-то пытался делать проверку на курсор, но не получилось
ЗЫ. посмотрите пожалуйста в прошлом посте UPD.
Djels вне форума Ответить с цитированием
Старый 03.06.2009, 22:34   #75
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
то тоже самое - не считает при опускании диска на диск.
Нужно и туда и туда.
Цитата:
А если внизу оставить, можете написать, какое условие должно быть?
Условие нужно прописывать не в одном месте. Например, завести еще одну переменную. Взяли блок - переменная = 0 (к примеру). Нажали влево - увеличили переменную, вправо - уменьшили. При опускании блока проверяем ее значение. Если =0, то ход не сделан.

Цитата:
Жалкие попытки вывести на экран цифорку
Вводить нужно не через readln, а readkey.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 03.06.2009, 23:00   #76
Djels
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 36
По умолчанию

Цитата:
Сообщение от Sazary Посмотреть сообщение
Условие нужно прописывать не в одном месте. Например, завести еще одну переменную. Взяли блок - переменная = 0 (к примеру). Нажали влево - увеличили переменную, вправо - уменьшили. При опускании блока проверяем ее значение. Если =0, то ход не сделан.
А полегче это никак не сделается?(((

Цитата:
Сообщение от Sazary Посмотреть сообщение
Вводить нужно не через readln, а readkey.
И это не получается.. как мне быть...
Djels вне форума Ответить с цитированием
Старый 03.06.2009, 23:12   #77
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
А полегче это никак не сделается?(((
Нет. По крайней мере, я так думаю (по крайней мере, сейчас).

Цитата:
И это не получается.. как мне быть...
Что не получается? readkey читает один символ. Вы его обрабатываете и выводите. Потом читаете следующий. Это все в цикле, пока код не равен 13.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 03.06.2009, 23:32   #78
Djels
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 36
По умолчанию

Sazary, вот приблизительно то, что я понял из ваших слов:

Код:
   repeat
{      readln(m);   } (?)
      str(m,mx);
       readkey;
      outtextxy(300,300,''+mx);      
     val(mx,m);
      until (m>=2) and (m<=9) and (key=#13);
Как Вы сами понимаете - не правильно )), прошу поправить)
Djels вне форума Ответить с цитированием
Старый 03.06.2009, 23:33   #79
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

readkey возвращает код символа. Вы бы знали об этом, если бы почитали описание функции.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 03.06.2009, 23:36   #80
NSvirus
пропагандирую жизЪ
Форумчанин
 
Аватар для NSvirus
 
Регистрация: 19.03.2007
Сообщений: 950
По умолчанию

key:=readkey;
Посторонним В.
NSvirus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Меню Dem6 Паскаль, Turbo Pascal, PascalABC.NET 3 10.04.2009 16:43
Для доступа к пунктам главного меню клавиши ALT + подчеркнутая буква меню в офис 2007? Окоча Юра Microsoft Office Word 1 24.02.2009 12:29
Меню с Items в виде набора Bitmap (как меню редактирования в Word'е) chandrasecar Мультимедиа в Delphi 7 14.01.2009 09:20
Меню Witaliy Общие вопросы Delphi 4 27.04.2008 22:45
МЕНЮ Delpher HTML и CSS 4 25.12.2007 15:37