Составить программу которая рисует домик

Задача 1.
Напишите программку рисования домика, где ширина домика вводится с клавиатуры.

Для рисования используйте следующие графические примитивы:
MoveTo(x,y) — передвигает невидимое перо к точке с координатами (x,y); эта функция работает в паре с функцией LineTo(x,y).
LineTo(x,y) — рисует отрезок от текущего положения пера до точки (x,y); координаты пера при этом также становятся равными (x,y).
Line(x1,y1,x2,y2) — рисует отрезок с началом в точке (x1,y1) и концом в точке (x2,y2).

Задача 2.
Напишите программу, которая имеет 3 процедуры для рисования трех фигур: прямоугольника, окружности и треугольника. Пользователь должен ввести комбинацию трех целых положительных чисел. Если число равно 0, то данная фигура не рисуется, если не 0, то выводится на экран фигура, для которой данное число определяет линейный размер.

2. Графические примитивы для рисования кривых

  • эллипсы (сжатый по оси ОХ и по оси ОУ);
  • дуги: в половину окружности, четверть окружности;
  • сектора: половина круга, десятая часть круга;
  • сегмент, ограничивающий треть окружности.

Источник: przpascal12.blogspot.com

Как рисовать Дом. Урок рисования для детей от 3 лет | Раскраска для детей

Рисование и анимация в TkInter

В процессе работы над вторым проектом мы успели познакомится с библиотекой tkInter. В этом разделе мы научимся рисовать и передвигать объекты, а затем — создадим несложную компьютерную игру. Начнем же!

Для рисования в окне tkInter, в него нужно добавить Canvas — холст.

from tkinter import * tk = Tk() # создаем холст размером 640 на 640 пикселей с белым фоном внутри основного окна c = Canvas(tk, width=640, height=640, bg=’white’) c.pack() # тут будет код для рисования mainloop()

На холсте мы сможем рисовать прямоугольники, произвольные многоугольники, линии и овалы.

Рисуем дом

Начнем с простых геометрических фигур. Вот как устроено рисование прямоугольника:

А вот так — треугольника:

Если совместить вместе, то получится. дом!

from tkinter import * tk = Tk() c = Canvas(tk, width=640, height=640, bg=’white’) c.pack() # рисуем прямоугольник зеленого цвета c.create_rectangle(30, 60, 130, 120, fill=’green’) # рисуем треугольник (полигон с тремя вершинами) синего цвета c.create_polygon(30, 60, 80, 10, 130, 60, fill=’blue’) mainloop()

Как сделать его лучше? Напиши программу, которая рисует домик с заданными размером, цветом крыши и первого этажа по нажатию кнопки. Для ввода размеров и цветов используйте Entry. Для очистки canvas можно использовать команду c.delete(«all») .

#shorts за минуту расскажу как рисовать классные домики просто и быстро. Эдуард Кичигин

Деревня

А теперь супер-задание — используй циклы, чтобы нарисовать целую деревню!

Анимация

Теперь мы можем комбинировать геометрические фигуры, но вот только для игры этого недостаточно — объекты должны двигаться! Для начала научимся рисовать овалы:

Для того, чтобы оживить наш рисунок, нам нужно научится перемещать объекты. Для этого используется функция move .

from tkinter import * tk = Tk() c = Canvas(tk, width=640, height=640, bg=’white’) c.pack() # сохраняем номер соданной фигуры в переменную my_favorite_oval = c.create_oval(0, 0, 50, 50, fill=’blue’) def moveBall(): # передвигаем наш овал на 10 пикселей по обеим осям c.move(my_favorite_oval, 10, 10) # повторяем через 100 мс (1 секунда) c.after(100, moveBall) # спустя 1 секунду (100 мс) после запуска выполнить moveBall c.after(100, moveBall) mainloop()

Отталкиваемся от стен

Теперь шарик движется, но недолго — очень скоро он вылетает за границу и мы его уже больше не видим. Нужно как то заставить его отталкиваться от стен. Самый простой вариант — просто разворачивать его скорость, как только он касается одной из границ. Коснулись вертикальной границы — умножаем горизонтальную скорость на -1, вертикальной — умножаем вертикальную.

Читайте также:
Как сделать 2 программы на 1 экране

Что дальше?

Отлично, теперь у нас двигается и отталкивается от стен один шарик. Какую игру мы можем из этого сделать? Например, подобие астероидов: космический корабль должен как можно дольше уворачиваться от метеоритов, летающих во всех стороны.

Но вот только для этой игры метеоритов нам понадобится много, а заводить отдельную четверку переменных для каждого из десятка метеоритов — неудобно. Хорошо бы как-то хранить их в одном месте. И так правда можно, для этого используются списки.

Источник: codingprojects.ru

Инфа сс. Программа ЛамПанель

Единственный в мире Музей Смайликов

Самая яркая достопримечательность Крыма

Скачать 261.5 Kb.


И
17.11.2021
нформатика, 10 класс К.Ю. Поляков, Е.А. Еремин

Устройство компьютера

Практические работы

Моделирование работы компьютера

Программа «ЛамПанель» – это модель процессора, который управляет ламповой панелью, то есть, может с помощью специальных команд зажигать и гасить определенные лампочки.

4 – оперативная память

Коды в памяти

Память (область 4) разбита на ячейки размером 1 байт = 8 бит. Значение каждой ячейки записывается в виде двух шестнадцатеричных цифр – каждая из них кодируется ровно четырьмя битами.

Каждая строчка в окне 4 содержит 8 байт памяти. Число слева, выделенное красным цветом – это адрес (номер) первой ячейки, показанной в этой строке. Справа от шестнадцатеричных кодов показана символьная строка из 8 символов – те же данные, только представленные как символы.

Данные можно записывать в память напрямую, используя команду DATA, например, можно набрать такую программу:

Если теперь нажать клавиши Ctrl+F9, происходит ассемблирование («сборка») – перевод программы в машинные коды, затем эти коды записываются в память:

Посмотрим на окно отладчика. Каждый байт памяти имеет собственный адрес, адреса соседних байтов отличаются на единицу. Однако байтовые ячейки, как правило, слишком малы для хранения чисел (как целых, так и дробных) и машинных команд. Поэтому процессор должен уметь работать с более крупными блоками данных, которые часто называют машинными словами. Программа «ЛамПанель» умеет работать с 16-битными словами, то есть может сразу читать из памяти (в регистр) и записывать в память двухбайтный блок.

Любая машинная команда состоит из целого числа 16-битных слов, то есть из четного числа байтов. По договоренности адресом двухбайтового слова считается меньший из адресов входящих в него байтов, причем адрес этот обязательно должен быть четным.

В нашем случае память записаны два 16-битных слова (4 байта), 313216 и FFFF16­, причем эти слова процессор распознал как две команды:

Такой перевод из кодов команд в их символьное обозначение называется дизассемблирование (обратное ассемблирование, «разборка»).

Эту программу можно запустить, нажав на клавишу F9, и убедиться, что она действительно скопирует содержимое регистра R3 в регистр R2.

Теперь посмотрим на окно «Память»:

Видим, что байты 16-битного слова расположены «наоборот» – сначала младший байт 3216, а затем – старший 3116. Кроме того, в правой части окна видно, что эти коды соответствуют символам «21яя». Все специальные коды (не соответствующие каким-то принятым изображениям символов) обозначены точками. Таким образом, компьютер, основанный на архитектуре фон Неймана, не может самостоятельно различить, где данные, а где команды.

Выполнение программы

Теперь выполним программу в пошаговом режиме, нажав на клавишу F8. После этого в регистр PC (англ. programcounter – программный счётчик) записывается стартовый адрес 0, с которого начинается выполнение программы. В окне Отладчик зелёным цветом выделена первая команда. Она еще не выполнялась, но будет выполнена при повторном нажатии F8.

При этом регистр PC, будет указывать на начало следующей команды (которая еще не выполнялось).

  • регистр PC содержит адрес команды, которая будет выполнена следующей; как только эта команда будет выбрана из памяти, регистр-счетчик автоматически будет увеличен так, чтобы снова указывать на очередную команду;
  • процессор воспринимает байты, расположенные по этому адресу, как код команды (а не как данные);
  • программа всегда начинает выполняться с некоторого известного (в данном случае – нулевого) адреса, который «вшит» в компьютер и автоматически заносится в регистр PC при его включении;
  • программа останавливается, когда будет выполнена команда STOP с кодом FFFF16.
Читайте также:
Какая программа открывает книги на компьютере

Работа с памятью

Для того, чтобы обрабатывать данные из оперативной памяти, процессор должен загрузить их в регистры. Поскольку программа и данные расположены в одной области памяти, размещать данные можно сразу после команды STOP:

Метка D нужна для того, чтобы удобно было загружать адрес блока данных в регистр, например, так:

Можно считать, что D – это переменная программы. После этого легко загрузить в регистр данные из памяти:

MOV (R0),R1 ; загрузить в R1 данные, адрес которых записан в R0

Аналогичной командой можно изменить содержимое ячейки памяти:

MOV R2,(R0) ; записать данные из R2 в ячейку, адрес которой

; записан в R0

Заметим, что с помощью этого метода можно сразу обратиться к любой ячейке памяти, поэтому такой вид памяти называется память с произвольным доступом (англ. RAM = random access memory).

Обработка отдельных байтов

Как вы знаете, минимальная ячейка памяти, имеющая собственный адрес, называется байтом. В современных компьютерах 1 байт составляют 8 бит. Поэтому компьютер должен иметь возможность работать не только с 16-битными словами, но и с отдельными байтами.

Во-первых, в команде DATA можно задавать не только шестнадцатеричные числа, но и символьные строки, взятые в кавычки.

DATA «ABCDEFG»

В этом случае символы заданной строки записываются в память последовательно, начиная с первого. Теперь запишем адрес строки в регистр в какой-нибудь регистр, например, в R0:

Чтобы работать с отдельными байтами, используют байтовые версии команд, которые заканчиваются на букву B. Например, байтовый вариант команды MOV называется MOVB. Команда

загружает один байт из памяти (расположенный по адресу, который записан в R0) в регистр R2. Теперь рассмотрим такую задачу – преобразовать все заглавные латинские буквы в строчные. Для этого нужно посмотреть, чем отличаются коды заглавных и строчных букв:

A: 01000001

Затем нужно записать результат обратно в память, по адресу, находящемуся в R0:

Для перехода к следующему символу просто увеличиваем R0 на единицу

и выполняем те же самые команды. Отметим, что две команды

MOVB R2,(R0) ; записать байт в память

ADD 1,R0 ; к следующему байту

можно заменить на одну, которая делает то же самое:

MOVB R2,(R0)+ ; записать байт в память и перейти

; к следующему байту

Чтобы обработать 6 символов, можно организовать цикл со счётчиком в регистре R1:

MOV 6,R1 ; счётчик шагов цикла (сделать 6 раз)

MOVB (R0),R2 ; прочитать байт из памяти

OR 20,R2 ; заглавную – в строчную

MOVB R2,(R0)+ ; записать байт в память и перейти к следующему

SUB 1,R1 ; уменьшить счетчик

JNZ M ; если не все сделали – переход на метку M

DATA «ABCDEFG»

  1. Запустите тренажёр «ЛамПанель». Введите программу

Используя дизассемблер программы «ЛамПанель», запишите эту программу на языке ассемблера:

Запишите код команды STOP:

  1. Как вы думаете, какой код будет иметь команда MOVR1,R3? Проверьте свой ответ с помощью программы.

Напишите программу, которая складывает переменные A и B и записывает результат в переменную SUM:

  1. Напишите программу, которая преобразует строчные буквы в заглавные, используя байтовые операции. Блок данных может выглядеть так:

DATA «abcdefgh»

  1. Усовершенствуйте программу так, чтобы цикл останавливался не после заданного количества букв, а тогда, когда очередной прочитанный байт равен 0. Возможно, вам понадобятся другие команды условного или безусловного перехода – изучите их по справочной системе (клавиша F1).
  1. Поскольку в компьютере с архитектурой фон Неймана программа и данные расположены в одной области памяти, программа может менять свой собственный код. Напишите какую-нибудь программу, которая изменяет сама себя во время работы.
Читайте также:
Все тайное рано или поздно становится явным программа

Процессор и устройства вывода

Наконец, мы подошли к самой интересной возможности программы «ЛамПанель» — управлению ламповой панелью. Ламповая панель (цифра 1 на рисунке) – это устройство вывода.

Обмен данными процессора и внешнего устройства происходит через порты – регистры контроллера внешнего устройства. У ламповой панели 8 портов, которые называются P0, P1, P2, P3, P4, P5, P6 и P7. Каждый порт «отвечает» за одну строку лампочек, например, для того, чтобы «зажечь» всю верхнюю строку нужно записать в порт P0 код FFFF16 (все 16 бит – единичные). Для этого можно использовать, например, команды

MOV FFFF, R0

OUT R0, P0

К сожалению, записать число сразу в порт нельзя – сначала нужно записать его в регистр (в данном примере – в R0), а потом – из регистра в порт.

Для того, чтобы изменить второй сверху ряд лампочек, нужно записать новое значение в P1 и т.д.; последний ряд управляется портом P7. Например, для того, чтобы все ряды лампочек горели одинаково, можно записать нужный код сначала в регистр:

MOV AAAA, R0

а затем из этого регистра – во все порты:

OUT R0, P7

Здесь многоточие обозначает аналогичные команды записи содержимого регистра R0 в порты P2…P6. Однако вместо последней серии из 8 команд можно использовать всего одну:

SYSTEM 2

Эта команда вызывает системную процедуру с номером 2, находящуюся в ПЗУ компьютера. Для того, чтобы увидеть все процедуры, которые записаны в ПЗУ, нужно щелкнуть по кнопке или выбрать пункт верхнего меню Программа – Просмотр ПЗУ. После этого появляется окно, в левой части которого перечислены все системные процедуры (с их номерами), а в правой части показывается код выбранной процедуры:

В этом списке есть много полезных процедур, в том числе

0 – очистка экрана (погасить все лампочки);

1 – зажечь все лампочки на панели;

3-4 – прокрутка изображения вниз и вверх;

6-9 – логические операции;

1216 – вывод числа, записанного в регистр R0, в десятичной системе счисления;.

1316 – вывод числа, записанного в регистр R0, в шестнадцатеричной системе счисления.

Обратите внимание, что номер системной процедуры задается в шестнадцатеричной системе счисления.

Рассмотрим еще одну задачу: вывести на экран рисунок, закодированный в виде шестнадцатеричных чисел (бит, равный единице, обозначает горящую лампочку). Для этого нужно сначала записать коды рисунка в память. Поскольку наш компьютер основан на архитектуре фон Неймана, в нем программа и данные находятся в одной области памяти. Поэтому данные можно записать с помощью специальной команды DATA после команды STOP:

. ; здесь будет программа

M: ; метка – начало блока данных

DATA AAAA ; код первой строчки

DATA 5555 ; код последней строчки

Для того, чтобы вывести этот рисунок на экран, нужно записать его адрес в регистр R0 и вызвать системную процедуру с номером 5:

SYSTEM 5 ; вывести на экран рисунок, адрес которого в R0

DATA AAAA ; код первой строчки

  1. Как вы думаете, что выведет приведенная выше (в теоретической части) программа, которая вызывает системную процедуру с номером 5? Проверьте ваш ответ с помощью тренажёра.
  1. Закодируйте изображение домика и выведите его на экран.
  1. Добавьте в предыдущую программу команды, которые сначала шифруют изображение, используя операцию «исключающее ИЛИ» с маской BCA716, а затем – восстанавливают исходное изображение. При изменении маски программа не должна изменяться. Изучите текст системной процедуры, которую вы используете.
  1. Напишите программу, которая делает «бегущую строку» из рисунка-домика.
  1. Напишите программу, которая организует «обратный отсчет» от 100 до 0, а затем выводит рисунок с домиком и останавливается.

Источник: topuch.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru