Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 12
1

Создать функцию работы с устройствами ввода-вывода или функцию с применением функционалов. MuLisp

12.02.2013, 23:31. Показов 1644. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задание: Создать функцию определение нажатой клавиши, вернуть код клавиши. Функция должна быть без параметров.

Написать нужно на MuLisp
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.02.2013, 23:31
Ответы с готовыми решениями:

Создать функцию работы с устройствами ввода-вывода: Узнать какая кнопка нажата, вывести код кнопки
Люди помогите сделать задание, а то я lisp не сильно понимаю. Задание: Создать функцию работы с...

Реализовать с применением функционалов и лямбда-выражений следующую функцию
Здравстуйте, помогите решить задачку: "Реализовать с применением функционалов и лямбда-выражений...

Python-функции для работы с устройствами ввода-вывода
Здравствуйте! Можно ли написать функции блокировки и разблокировки клавиатуры, только на python (-...

Создать функцию для вывода на экран целого числа в двоичной системе счисления с применением побитовых операций.
Создать функцию для вывода на экран целого числа в двоичной системе счисления с применением...

19
Модератор
Эксперт функциональных языков программированияЭксперт Python
37301 / 20735 / 4272
Регистрация: 12.02.2012
Сообщений: 34,124
Записей в блоге: 14
13.02.2013, 18:50 2
Лучший ответ Сообщение было отмечено как решение

Решение

Lisp
1
2
3
4
5
(defun get-key ()
  (loop ((listen) (read-byte)))
  (let ((code (read-byte)))
       (princ "You press ") (princ (code-char code))
       (princ " (") (princ code) (princ ")") (terpri)))
3
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 12
13.02.2013, 19:42  [ТС] 3
Цитата Сообщение от Catstail Посмотреть сообщение
Lisp
1
2
3
4
5
(defun get-key ()
  (loop ((listen) (read-byte)))
  (let ((code (read-byte)))
       (princ "You press ") (princ (code-char code))
       (princ " (") (princ code) (princ ")") (terpri)))
спасибо, но она почему то кнопки F1-F12 обозначает как (255), но это ведь не правильно...они ведь 112-123.... а в целом работает) спасибо
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
37301 / 20735 / 4272
Регистрация: 12.02.2012
Сообщений: 34,124
Записей в блоге: 14
13.02.2013, 20:27 4
Не только F1-F12... Эта программа не будет корректно обрабатывать и нажатие стрелок и все клавиши, нажатие которых в (DOS-е) порождает два байта.
0
0 / 0 / 0
Регистрация: 09.02.2013
Сообщений: 19
13.02.2013, 20:44 5
Catstail подскажите как в этом же коде вывесити вместо "You press" кнопку из псевдографики с координатами и цветом
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
37301 / 20735 / 4272
Регистрация: 12.02.2012
Сообщений: 34,124
Записей в блоге: 14
13.02.2013, 21:53 6
Примерно так:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
(defun task ()
   (clear-screen)
   (dotimes (i 25 t) 
     (dotimes (j 80 t)
       (princ (code-char 176))))
   
   (loop ((listen) (read-byte))) 
   
   (set-cursor 11 31)
   (princ (code-char 201))   
   (dotimes (i 16 t) (princ (code-char 205)))
   (princ (code-char 187))
   
   (set-cursor 12 31)
   (princ (code-char 186))   
   (princ " Press any key! ")
   (princ (code-char 186))
   
   (set-cursor 13 31)
   (princ (code-char 200))   
   (dotimes (i 16 t) (princ (code-char 205)))
   (princ (code-char 188))
   
   (let ((code (read-byte)))))
1
0 / 0 / 0
Регистрация: 09.02.2013
Сообщений: 19
13.02.2013, 22:25 7
Catstail на сколько я понял должно получится вот так:
Создать функцию работы с устройствами ввода-вывода или функцию с применением функционалов. MuLisp

Возможно это уже наглость и т.д с моей стороны, но возможно сделать так:
что бы кнопка отрисовывалась при запуске и когда нажимаешь на кнопку она выводит какая кнопка нажата, и изменяет цвет "окантовки кнопки" с белого например на красный
ЗЫ мюЛисп ругался на "dotimes", но дело решилось после подключения common.lsp
0
0 / 0 / 0
Регистрация: 09.02.2013
Сообщений: 19
13.02.2013, 22:44 8

Не по теме:

Жаль нельзя посты править((


вообщем кнопку программа выводит, но немного не там где хотелось бы.
А цвет если можно что бы то же выводило под кнопкой
Создать функцию работы с устройствами ввода-вывода или функцию с применением функционалов. MuLisp

а когда нажимаю(например F) вот так:
Создать функцию работы с устройствами ввода-вывода или функцию с применением функционалов. MuLisp

или это из-за библиотеки такой косяк?
0
0 / 0 / 0
Регистрация: 09.02.2013
Сообщений: 19
13.02.2013, 23:19 9

Не по теме:

Надеюсь с администрацией проблем не будет :(


Вообщем немного поковырял своими "прямыми" руками код:
Вышло вот так:
Создать функцию работы с устройствами ввода-вывода или функцию с применением функционалов. MuLisp

Catstail как теперь изменить цвет текста "PRESS"?
И как вывести положение кнопки и цвет "PRESS"?
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
37301 / 20735 / 4272
Регистрация: 12.02.2012
Сообщений: 34,124
Записей в блоге: 14
14.02.2013, 06:44 10
Чтобы изменить цвет текста, перед его выводом вызывайте

Lisp
1
(foregound-color Код_цвета)
код цвета - число 0 - 15 (0-черный, 1-синий, 2-зеленый,... 8-серый,9-ярко-синий,10-ярко-зеленый,...17-ярко-белый)
1
Апострофф
14.02.2013, 07:24
  #11

Не по теме:

Цитата Сообщение от Catstail Посмотреть сообщение
17-ярко-белый
15-ярко-белый, не могу поправить(или не поправить?):pardon:

1
Модератор
Эксперт функциональных языков программированияЭксперт Python
37301 / 20735 / 4272
Регистрация: 12.02.2012
Сообщений: 34,124
Записей в блоге: 14
14.02.2013, 10:07 12
Цитата Сообщение от Апострофф Посмотреть сообщение
15-ярко-белый, не могу поправить(или не поправить?)
- зря смеетесь... 7 - белый; 7+8=15 - ярко-белый. Скажу больше: в этой схеме 8 - это ярко-черный!
2
0 / 0 / 0
Регистрация: 09.02.2013
Сообщений: 19
14.02.2013, 13:36 13
Catstail спс за цвет Еще бы координаты клавиши вывести
0
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 12
14.02.2013, 20:36  [ТС] 14
Цитата Сообщение от Catstail Посмотреть сообщение
Не только F1-F12... Эта программа не будет корректно обрабатывать и нажатие стрелок и все клавиши, нажатие которых в (DOS-е) порождает два байта.
А как можно реализовать, чтобы она и клавиши в 2 байта считывала и возвращала название клавиши и код??
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
37301 / 20735 / 4272
Регистрация: 12.02.2012
Сообщений: 34,124
Записей в блоге: 14
14.02.2013, 20:50 15
Пока не знаю... Надо внимательно почитать описание muLisp.
0
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 12
14.02.2013, 21:25  [ТС] 16
Цитата Сообщение от Catstail Посмотреть сообщение
Пока не знаю... Надо внимательно почитать описание muLisp.
плоховато, а то я пробовал, но ничего... нужно ещё сделать, чтобы она выводила название кнопки и её код... это ужас
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
37301 / 20735 / 4272
Регистрация: 12.02.2012
Сообщений: 34,124
Записей в блоге: 14
14.02.2013, 21:43 17
Разберемся...
1
55 / 56 / 37
Регистрация: 06.02.2013
Сообщений: 257
Записей в блоге: 1
14.02.2013, 23:19 18
а клавиши в 2 байта - это F1..F12, стрелки и insert..page down?
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
37301 / 20735 / 4272
Регистрация: 12.02.2012
Сообщений: 34,124
Записей в блоге: 14
15.02.2013, 12:21 19
Лучший ответ Сообщение было отмечено как решение

Решение

Да.

Добавлено через 3 часа 54 минуты
Я разобрался. Через некоторое время выложу!

Добавлено через 1 час 15 минут
Вот:

Lisp
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
(defun get-key ()
  (loop ((listen) (read-byte)))
  (let ((code (read-byte)) (nam-key ""))
       (if (eq code 255)
         (progn
          (setq code (read-byte)) 
          (cond ((eq code 72) (setq code (- code) nam-key "Up arrow"))
                ((eq code 80) (setq code (- code) nam-key "Down arrow"))           
                ((eq code 77) (setq code (- code) nam-key "Right arrow"))
                ((eq code 75) (setq code (- code) nam-key "Left arrow"))
                ((eq code 82) (setq code (- code) nam-key "Insert"))
                ((eq code 83) (setq code (- code) nam-key "Delete"))
                ((eq code 71) (setq code (- code) nam-key "Home"))
                ((eq code 79) (setq code (- code) nam-key "End"))
                ((eq code 73) (setq code (- code) nam-key "Page Up"))
                ((eq code 81) (setq code (- code) nam-key "Page Down"))
                ((eq code 59) (setq code (- code) nam-key "F1"))
                ((eq code 60) (setq code (- code) nam-key "F2"))
                ((eq code 61) (setq code (- code) nam-key "F3"))
                ((eq code 62) (setq code (- code) nam-key "F4"))
                ((eq code 63) (setq code (- code) nam-key "F5"))
                ((eq code 64) (setq code (- code) nam-key "F6"))
                ((eq code 65) (setq code (- code) nam-key "F7"))
                ((eq code 66) (setq code (- code) nam-key "F8"))
                ((eq code 67) (setq code (- code) nam-key "F9"))
                ((eq code 68) (setq code (- code) nam-key "F10"))
                ((eq code 133) (setq code (- code) nam-key "F11"))
                ((eq code 134) (setq code (- code) nam-key "F12")))
                (princ "You press ")
                (princ nam-key) 
                (princ " (") 
                (princ code)
                (princ ")") 
                (terpri) code)
          (progn  
                (princ "You press ") 
                (princ (code-char code)) 
                (princ " (") 
                (princ code) 
                (princ ")") 
                (terpri) code))))
Для расширенных кодов функция возвращает отрицательные числа (что позволяет отличить нажатие, например, стрелки вверх от H).
4
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 12
15.02.2013, 18:17  [ТС] 20
спасибо огромное!!!
0
15.02.2013, 18:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.02.2013, 18:17
Помогаю со студенческими работами здесь

Сделать функцию ввода элементов, функцию вывода элементов, и функцию обработки
Добрый день форумчане, помогите сделать функцию ввода элементов, функцию вывода элементов, и...

Передача потока ввода/вывода в функцию
Нужно перегрузить оператор ввода и вывода. С перегрузкой проблем не возникало до этого момента....

Написать функцию, принимающую функцию l, три списка и возвращающую список со значениями, полученными применением функции l к тройкам исходных значений
Дорогие программисты,помогите пожалуйста с этим хаскеллом!Никак не могу решить эту задачу!!Одну я...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru