Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проверка вводимых символов, игра клавиатурный тренажёр 
V
    Опции темы
Дима164
Дата 29.8.2009, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 9.11.2008

Репутация: нет
Всего: нет



такой вопрос у меня в инстетуте задание сделать клавиатурный тренажёр алгоритм дался мне очень просто)) но вот со знанием паскаля у меня проблемы, особено с проверкой символов. мне нужно проверить правильность вводимых символов. Как на какую кнопку нажал пользователь и какой символ ввёл не сравнивая с аски кодами кнопок? 

внизу я расположу ту мутатень которую на данный момент зделал, исправте пожалуста там что не так и подскажить как проверять символы. 

Код

uses crt;
var ms,m:array[1..30] of char;
    x:array[1..80] of integer;
    y:array[1..5] of integer;
    n,i,z,kolo,kolp,xd,yd:integer;
    ch:char;
procedure ur1;
begin
 randomize;
 i:=1;

 for i:=1 to 3 do
  begin
   y[i]:=random(6)+10;
   x[i]:=1;
  end;
 for i:=1 to 3 do
  begin
   m[i]:=ms[random(30)+1];
   writeln(m[i],'    ',y[i]);
  end;
 gotoxy (x[1],y[1]);
 write(m[1]);
 repeat
  begin
    x[1]:=x[1]+1;
     delay(25000);
    gotoxy(x[1]-1,y[1]);
    write(' ');
    write(m[1]);
     if x[1]=10 then
      begin
       gotoxy(1,y[2]);
       write(m[2]);
       x[2]:=2;
      end;
     if x[1]>10 then
      begin
       gotoxy(x[2]-1,y[2]);
       write(' ');
       write(m[2]);
       x[2]:=x[2]+1;
      end;
     gotoxy(xd,yd);
     write(' ');
      if x[2]=10 then
       begin
        gotoxy(1,y[3]);
        write(m[3]);
        x[3]:=2;
       end;
      if x[2]>10 then
       begin
        gotoxy(x[3]-1,y[3]);
        write(' ');
        write(m[3]);
        x[3]:=x[3]+1;
       end;
   if keypressed=true then
    begin
     gotoxy(x[1],y[1]);
     write(' ');
     gotoxy(x[3],y[3]);
     write(' ');
     xd:=x[2];
     yd:=y[2];
     ch:=readkey;
    if ch=m[1] then
    kolp:=kolp+1
    else
    kolo:=kolo-1;
   for i:=1 to 2 do
    begin
     x[i]:=x[i+1];
     y[i]:=y[i+1];
     m[i]:=m[i+1];
    end;
   m[3]:=ms[random(30)+1];
   x[3]:=1;
   y[3]:=random(6)+10;
   x[1]:=x[1]-1;
   end;
   end;
   if x[1]=80 then
   begin
   clrscr;
   gotoxy(15,15);
   writeln('game over');
   readkey;
   end;
   until x[1]>80;

   end;
   begin
   clrscr;
   ms[1]:='a';
   ms[2]:='b';
   ms[3]:='c';
   ms[4]:='d';
   ms[5]:='e';
   ms[6]:='f';
   ms[7]:='g';
   ms[8]:='h';
   ms[9]:='i';
   ms[10]:='j';
   ms[11]:='k';
   ms[12]:='l';
   ms[13]:='m';
   ms[14]:='n';
   ms[15]:='o';
   ms[16]:='p';
   ms[17]:='q';
   ms[18]:='r';
   ms[19]:='s';
   ms[20]:='t';
   ms[21]:='u';
   ms[22]:='v';
   ms[23]:='w';
   ms[24]:='x';
   ms[25]:='y';
   ms[26]:='z';
  { ms[27]:=' ';
   ms[28]:=' ';
   ms[29]:=' ';
   ms[30]:=' ';
 writeln(' ');
 readln(n);}
 ur1;
 end.





PM MAIL   Вверх
Keeper89
Дата 29.8.2009, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: нет
Всего: 58



Цитата(Дима164 @  29.8.2009,  11:51 Найти цитируемый пост)
мутатень

это очень точное описание приведенного кода.  smile 

Почему же нельзя сравнивать введенные символы с АСКИ?


--------------------
PM MAIL WWW   Вверх
Дима164
Дата 30.8.2009, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 9.11.2008

Репутация: нет
Всего: нет



потому что я себе не представляю как я буду сравнивать каждую нажатую кнопку с акси кодами!!
PM MAIL   Вверх
volvo877
Дата 30.8.2009, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Цитата(Дима164 @  29.8.2009,  10:51 Найти цитируемый пост)
исправте пожалуста там что не так
А все не так... Зачем весь этот "алгоритм", который тебе так легко дался? Что он делает? За финтифлюшками типа GotoXY его и не разберешь. Для тренажера достаточно сгенерировать какую-то последовательность символов, и дать пользователю ее напечатать. Это делается гораздо проще:
Код
const
  alphabet: string = 'abcdefghijklmnopqrstuvwxyz';
var
  i, len: integer;
  st: string;
  ch: char;
begin
  { генерируем случайные символы. Сначала - количество (5 .. 15) }
  len := random(11) + 5;
  st := '';
  for i := 1 to len do
    st := st + alphabet[random(length(alphabet)) + 1];

  { строка сгенерирована, теперь пусть пользователь ее напечатает: }
  writeln(st);
  errors := 0;
  for i := 1 to len do begin
    ch := readkey;
    if ch <> st[i] then errors := errors + 1;
  end;
  writeln('допущено ошибок: ', errors);
end.

Все. Вот это - тренажер, все, что сверх этого - уже украшательства. Сначала сделай, чтоб работало, украшать будешь потом. Если тебе надо какой-то особый "тренажер" - рассказывай, какой именно. Разбираться в твоем коде желания нет никакого, алгоритм в двух словах расскажи...
PM MAIL   Вверх
Дима164
Дата 2.9.2009, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 9.11.2008

Репутация: нет
Всего: нет



спасибо именно это мне и было нужно!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0687 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.