Нарисовать прямоугольник, стороны которого состоят из разноцветных квадратиков - QBasic

Узнай цену своей работы

Формулировка задачи:

Требуется нарисовать прямоугольник размером во весь экран, стороны которого состоят из квадратиков разного цвета. Квадратиков должно быть от 10 до 15 (как получится). Используется цикл.

Решение задачи: «Нарисовать прямоугольник, стороны которого состоят из разноцветных квадратиков»

textual
Листинг программы
  1.   DEFINT A-Z
  2. PRINT "Select screen mode"
  3. PRINT
  4. PRINT "    1    :  320 x 200 x 4 bit  [ EGA / VGA ]"
  5. PRINT "    2    :  640 x 200 x 4 bit  [ EGA / VGA ]"
  6. PRINT "    3    :  640 x 350 x 4 bit  [ EGA / VGA ]"
  7. PRINT "    4    :  640 x 480 x 4 bit  [ VGA ]"
  8. PRINT "    5    :  320 x 200 x 8 bit  [ VGA ]"
  9. PRINT " Another :  Exit"
  10. PRINT
  11.   INPUT "Your choise [1-5] : ", Scrn
  12.   cvt = 1
  13.   SELECT CASE Scrn
  14.     CASE 1: SCREEN 7: xr = 320: yr = 200: cv = 16
  15.     CASE 2: SCREEN 8: xr = 640: yr = 200: cv = 16
  16.     CASE 3: SCREEN 9: xr = 640: yr = 350: cv = 16
  17.     CASE 4: SCREEN 12: xr = 640: yr = 480: cv = 16
  18.     CASE 5: SCREEN 13: xr = 320: yr = 200: cv = 256: cvt = 32
  19.     CASE ELSE: END
  20.   END SELECT
  21.   LOCATE 3, 5: PRINT "Resolution  X:"; STR$(xr); "  Y:"; STR$(yr)
  22.   Kv = 10       ' Отношение разрешения к стороне квадрата
  23.   kx = xr \ Kv  ' Кол-во квадратов по X
  24.   ky = yr \ Kv  ' Кол-во квадратов по Y
  25.   xs = xr \ kx  ' Сторона квадрата по X
  26.   ys = yr \ ky  ' Сторона квадрата по Y
  27.  
  28.   FOR ix = 0 TO kx - 1
  29.      cvt = cvt + 1
  30.      LINE (ix * xs, 0)-(ix * xs + xs - 1, ys - 1), cvt MOD cv, BF
  31.      LINE ((kx - ix - 1) * xs, yr)-((kx - ix - 1) * xs + xs - 1, yr - ys), (cvt + ky + kx - 2) MOD cv, BF
  32.   NEXT
  33.  
  34.   FOR iy = 1 TO ky - 2
  35.      cvt = cvt + 1
  36.      LINE (0, (ky - iy - 1) * ys)-(xs - 1, (ky - iy - 1) * ys + ys - 1), (cvt + kx + ky - 2) MOD cv, BF
  37.      LINE (xr - xs, iy * ys)-(xr, iy * ys + ys - 1), cvt MOD cv, BF
  38.   NEXT
  39.  
  40. WHILE INKEY$ = "": WEND

Объяснение кода листинга программы

  1. Начало программы
  2. Вывод списка доступных разрешений экрана
  3. Ввод выбранного разрешения экрана
  4. Определение выбранного разрешения экрана
  5. Вывод выбранного разрешения экрана
  6. Определение отношения разрешения к стороне квадрата
  7. Определение количества квадратов по X и Y
  8. Определение стороны квадрата по X и Y
  9. Цикл по всем квадратам по X
  10. Рисование горизонтальной линии для текущего квадрата по X
  11. Цикл по всем квадратам по Y
  12. Рисование вертикальной линии для текущего квадрата по Y
  13. Цикл по всем квадратам от 1 до ky-2 (для ky>2)
  14. Рисование диагонали для текущего квадрата по Y (для ky>2)
  15. Цикл по всем квадратам от 1 до kx-2 (для kx>2)
  16. Рисование диагонали для текущего квадрата по X (для kx>2)
  17. Конец основного цикла программы
  18. Ожидание нажатия клавиши для выхода из программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.833 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы