Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.60
JerryJackson
50 / 6 / 1
Регистрация: 15.07.2010
Сообщений: 112
#1

Нарисовать шестиугольник - C++

05.11.2012, 21:48. Просмотров 2730. Ответов 10
Метки нет (Все метки)

Здравствуйте!
Помогите пожалуйста не работает программа, необходимо нарисовать шестиугольник с использование прерывания.(10h) Не пойму как с помощью прерывания нарисовать шестиугольник использую функции Line и тд но это неправильно.
Выдает ошибку, что не распознана функция (Undefined linedraw and set320x240)

C#
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
#include <stdio.h>
#include <conio.h>
#include <dos.h>
 
#define graphics_mode 0x13
#define bios_video_int 0x10
extern "C"
{
extern void Set320x240Mode();
}
extern void LineDraw(int XStart, int YStart, int XEnd, int YEnd, int Color);
void main()
{
int i,j;
union REGS regset;
regset.x.ax=graphics_mode;
int86(bios_video_int,&regset,&regset);
Set320x240Mode();
for(i=0;i<65;i++)
{
LineDraw(65-i,i,65+i,i,i);
}
for(i=0;i<64;i++)
{
LineDraw(1+i,64+i,127-i,64+i,63-i);
}
getch();
regset.x.ax=0x0003;
int86(0x10, &regset, &regset);
}
Добавлено через 2 минуты
Номер режима HEX 12

Добавлено через 47 секунд
HEX 12 640x480 16 цветный (VGA)

Добавлено через 30 минут
C#
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
#include <stdio.h>
#include <conio.h>
#include <dos.h>
 
int main()
{
clrscr();
 
char smode;
 
asm {
mov ah,0xf;
int 0x10;
mov smode,al
 
mov ah,0x0
mov al,0x12
int 0x10
 
mov ah,0xc
mov al,15
mov bh,0
mov cx,600
mov dx,430
int 0x10
}
printf("%c\n",smode);
 
asm {
 
mov ah,0x0
mov al,smode
int 0x10
 
}
 
getch();
 
return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2012, 21:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Нарисовать шестиугольник (C++):

Нарисовать на экране шестиугольник C++ - C++
собственно дело вот в чём. есть задача, нарисовать жёлтый шестиугольник с надписью внутри &quot;привет!&quot; никаких представлений как её...

Нарисовать правильный шестиугольник, вписанный в окружность, и заставить его крутиться по этой окружности - C++
Здравствуйте форумчане! Помощь нужна, с помощью библиотеки &quot;graphics.h&quot; в Dev C++ мне нужно: 1) Нарисовать правильный шестиугольник...

Графика: Разноцветный шестиугольник - C++
Написать программу, генерирующую на экране разноцветный шестиугольник, цвета секторов которого меняются циклически. После трех циклов смены...

Построить по 3 точкам выпуклый шестиугольник минимального размера - C++
Доброго времени суток. Большая просьба помочь с кодом. Задача: Даны координаты 3 точек в двумерной плоскости. Необходимо найти...

Нарисовать шестиугольник - C (СИ)
Здравствуйте! Помогите пожалуйста не работает программа, необходимо нарисовать шестиугольник с использование прерывания.(10h) Выдает...

Нарисовать шестиугольник - Turbo Pascal
Написать программу, которая вычерчивает на экране шестиугольник. Используйте заливку и перемещение фигуры по экрану с задержкой в 500 мс

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
05.11.2012, 21:55 #2
Это ты сам писал?
Похоже ты писал, писал и забыл создать функцию LineDraw.
Так не бывает. Нельзя просто так писать программу и не заметить, что одна из ключевых функций не реализована.
1
JerryJackson
50 / 6 / 1
Регистрация: 15.07.2010
Сообщений: 112
05.11.2012, 22:29  [ТС] #3
LineDraw не надо использовать необходимо нарисовать с помощью прерывания,
LineDraw не нужен надо все в main сделать

Добавлено через 1 минуту
LineDraw я думал типа стд функц использовать
ниже переписал код , но дальше не знаю, что делать максимум выводиться 1 белый пиксель в точке 600 430 если так рисовать шестиугольник то программа будет очень медленно работать
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
05.11.2012, 22:34 #4
Цитата Сообщение от JerryJackson Посмотреть сообщение
(Undefined linedraw and set320x240)
это тебе сообщение или не тебе? Если не используешь LineDraw? его б не было. Не хочешь использовать LineDraw? Удали её вызовы из всех файлов проекта!
1
JerryJackson
50 / 6 / 1
Регистрация: 15.07.2010
Сообщений: 112
05.11.2012, 22:43  [ТС] #5
я понимаю что функции я не использую я их убрал но как мне дальше с помощью прерывания рисовать
шестиугольник
0
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
05.11.2012, 22:49 #6
JerryJackson, рисуйте по пикселям.
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
05.11.2012, 22:54 #7
Цитата Сообщение от JerryJackson Посмотреть сообщение
я понимаю что функции я не использую я их убрал но как мне дальше с помощью прерывания рисовать
шестиугольник
Напиши функцию вывода одной точки (пикселя) с помощью прерывания . Реализуй вывод линии по алгоритму Брезенхема. Выведи 6 линий.
Тебе точно нужна эта морока?
1
JerryJackson
50 / 6 / 1
Регистрация: 15.07.2010
Сообщений: 112
06.11.2012, 01:48  [ТС] #8
а если пикселями программа не медленно будет работать ?

Добавлено через 42 секунды
спасибо всем сейчас попробую реализовать
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
06.11.2012, 01:49 #9
Цитата Сообщение от JerryJackson Посмотреть сообщение
а если пикселями программа не медленно будет работать ?
Кто ж тебя знает, как те надо и зачем вообще сдались тебе эти досовские прерывания?
1
JerryJackson
50 / 6 / 1
Регистрация: 15.07.2010
Сообщений: 112
06.11.2012, 02:40  [ТС] #10
По заданию надо написать с ассм вставками

Добавлено через 27 секунд
Так бы уже давно нарисовал что необходимо
0
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
06.11.2012, 10:30 #11
Цитата Сообщение от JerryJackson Посмотреть сообщение
а если пикселями программа не медленно будет работать ?
Нет конечно. Делал когда-то нечто подобное на чистом асм, все сносно работало. Вот так линию рисовал параллельную оси Х
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
OutLine proc
    mov ah,0Ch
    mov bh,0
paint:
    mov cx,x1
    mov dx,y1
    
    inc x1
    int 10h
    cmp cx,x2
    jle paint
        ret
 
OutLine endp
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.11.2012, 10:30
Привет! Вот еще темы с ответами:

Модуль GRAPH: нарисовать шестиугольник - Turbo Pascal
Написать программу, которая вычерчивает на экране шестиугольник. Используйте заливку и перемещение фигуры по экрану с задержкой в 500 мс.

Как нарисовать правильный шестиугольник посредством Canvas? - C++ Builder
Друзья выручайте, не могу понять как рисовать в С++, нужно по двум кликам нарисовать прямую, а третьим в ту сторону в какую он будет...

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

Нарисовать правильный шестиугольник и поворачивать его вокруг заданной точки - Pascal
Нарисовать правильный шестиугольник, если известна координата одной из его вершин. Шестиугольник поворачивается вокруг заданной точки на...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
06.11.2012, 10:30
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru