При помощи простейшей графики нарисовать счеты, отображающие числа - QBasic

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

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

Заданное число (не обязательно целое) отложить на бухгалтерских счетах, изображенных на экране

Решение задачи: «При помощи простейшей графики нарисовать счеты, отображающие числа»

textual
Листинг программы
DEFINT A-Z
DECLARE SUB DrawBone (x, y, tip)
  CLS
St: INPUT "Vvedite chislo: ", n#
IntPart$ = LTRIM$(STR$(INT(n#)))
Drb$ = LTRIM$(STR$(n# - INT(n#)))
DrobPart$ = LTRIM$(STR$(INT((n# - INT(n#)) * 1000)))
IF LEN(IntPart$) > 7 THEN
  COLOR 12: PRINT "Slishkom bolshoe chislo... Povtorite vvod!"
  COLOR 7: GOTO St
END IF
SCREEN 12
 FOR u = 1 TO 5: OUT &H3C8, u: OUT &H3C9, 0: OUT &H3C9, 0: OUT &H3C9, 0: NEXT
 
LINE (0, 0)-(639, 479), 1, BF
FOR u = 1 TO 250
   x = RND * 639: y = RND * 479
   r = RND * 40 + 10: j = 4 + RND * 10
   CIRCLE (x, y), r, 5, 0, 6.28, j
   PAINT (x, y), 2, 5
   CIRCLE (x, y), r, 2, 0, 6.28, j
   r = r / 2
   CIRCLE (x, y), r, 5, 0, 6.28, j
   PAINT (x, y), 3, 5
   CIRCLE (x, y), r, 3, 0, 6.28, j
NEXT
  LINE (140, 0)-(490, 479), 5, B
  PAINT (0, 0), 5
  LINE (160, 20)-(470, 459), 5, BF
  PAINT (639, 0), 5
FOR y = 0 TO 10
  FOR i = 0 TO 155
    PSET (160 + i, y * 37 + 54), i \ 17 + 5 + RND
    PSET (160 + i, y * 37 + 55), i \ 17 + 5 + RND
    PSET (470 - i, y * 37 + 54), i \ 17 + 5 + RND
    PSET (470 - i, y * 37 + 55), i \ 17 + 5 + RND
  NEXT
NEXT
  OUT &H3C8, 1: OUT &H3C9, 156 \ 4: OUT &H3C9, 128 \ 4: OUT &H3C9, 68 \ 4
  OUT &H3C8, 2: OUT &H3C9, 148 \ 4: OUT &H3C9, 123 \ 4: OUT &H3C9, 82 \ 4
  OUT &H3C8, 3: OUT &H3C9, 128 \ 4: OUT &H3C9, 80 \ 4: OUT &H3C9, 30 \ 4
  OUT &H3C8, 4: OUT &H3C9, 110 \ 4: OUT &H3C9, 56 \ 4: OUT &H3C9, 3 \ 4
  FOR i = 0 TO 10
    OUT &H3C8, i + 5: OUT &H3C9, i * 6: OUT &H3C9, i * 6: OUT &H3C9, i * 6
  NEXT
IF LEN(Drb$) > 3 THEN
  PRINT "Drobnaya chast"
  PRINT "urezana do"
  PRINT "tysachnyh!!!"
END IF
y2 = 460
FOR y = 0 TO 10
    IF y < 7 THEN
    c = VAL(MID$(IntPart$, 7 - y, 1))
      FOR k = 1 TO c
        LINE (500 + k * 3, y * 37 + 50)-(500 + k * 3, y * 37 + 58), 15
      NEXT
    ELSEIF y > 7 THEN
     d = VAL(MID$(DrobPart$, y - 7, 1))
      FOR k = 1 TO d
        LINE (500 + k * 3, y * 37 + 50)-(500 + k * 3, y * 37 + 58), 15
      NEXT
    END IF
  FOR i = 0 TO 9
     IF y < 7 THEN
       IF i = 4 OR i = 5 THEN Ty = 1 ELSE Ty = 0
       DrawBone y2, y * 37 + 54, Ty
       IF i = 9 - c THEN y2 = y2 - 185
     ELSEIF y > 7 THEN
       IF i = 4 OR i = 5 THEN Ty = 1 ELSE Ty = 0
       DrawBone y2, y * 37 + 54, Ty
       IF i = 9 - d THEN y2 = y2 - 185
     ELSE
       IF i = 1 OR i = 2 THEN Ty = 1 ELSE Ty = 0
       IF i < 4 THEN DrawBone y2, y * 37 + 54, Ty
     END IF
     y2 = y2 - 12
  NEXT
  y2 = 460
NEXT
WHILE INKEY$ = "": WEND
 
SUB DrawBone (x, y, tip)
r = 15
 IF tip = 0 THEN
   CIRCLE (x, y), r, 15, 0, 6.28, 3
   PAINT (x, y), 4, 15
   CIRCLE (x, y), r, 4, 0, 6.28, 3
   r = r / 4
   CIRCLE (x, y), r, 15, 0, 6.28, 3
   PAINT (x, y), 3, 15
   CIRCLE (x, y), r, 3, 0, 6.28, 3
   r = r / 2
   CIRCLE (x, y), r, 15, 0, 6.28, 3
   PAINT (x, y), 1, 15
   CIRCLE (x, y), r, 1, 0, 6.28, 3
   PSET (x, y), 13
 ELSE
   CIRCLE (x, y), r, 15, 0, 6.28, 3
   PAINT (x, y), 6, 15
   CIRCLE (x, y), r, 6, 0, 6.28, 3
   r = r / 4
   CIRCLE (x, y), r, 15, 0, 6.28, 3
   PAINT (x, y), 7, 15
   CIRCLE (x, y), r, 7, 0, 6.28, 3
   r = r / 2
   CIRCLE (x, y), r, 15, 0, 6.28, 3
   PAINT (x, y), 10, 15
   CIRCLE (x, y), r, 10, 0, 6.28, 3
   PSET (x, y), 14
 
 END IF
END SUB

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


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

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

15   голосов , оценка 3.667 из 5
Похожие ответы