0 / 0 / 0
Регистрация: 12.05.2016
Сообщений: 41
1

Работа с изображениями , как

26.08.2016, 18:13. Показов 421. Ответов 0
Метки нет (Все метки)

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
#include <Windows.h>
#include <GL\glew.h>
#include <GL\freeglut.h>
#include <GL/glut.h>
#include <glut.h>
//Создаём поле для игры.
 
int N = 30, M = 20;//30 на 20 квадратиков.
int Scale = 25;//Масштаб, сколько пикселей занимает 1 квадратик
 
int w = Scale*N;
int h = Scale*M;
//Далее делаем фукнцию, которая рисует эти квадратики
// Это уже когда сделали..
int dir, num = 4;//Дир - направление,от 0 до 3..верх,вниз,лево,право. Нам это..Текущее количество квадратиков в нашей змейке.
 
struct
{
    int x;//Координаты нашей змейки.
    int y;}s[100]; //Это количество максимально квадратиков в змейке.
//Далее делаем функцию которая будет делать один шаг нашей змейки...перед дисплееем...
 
    class Fructs
    {
    public:
        int x, y;//Координаты фруктов
        
        void New()
        {//Если мы наеедем на яблоко,тогда оно появляется в новом месте.
            x = rand() % N;
            y = rand() % M; 
        }//и создаем функцию Рисовка фрукта.
        void DrawApple()
        {
            glColor3f(0.0, 1.0, 0.0);//Цвет 
            glRectf(x*Scale, y*Scale, (x + 1)*Scale, (y + 1)*Scale);// И выводим квадратик..и создаём объект этого фрукта.
        }
 
    }m[10];//Масив из 10 фруктов....Копируем дров апл в в дислпей + цикл фор.. в дислпей...
 
void DrawSnake()
{
    glColor3f(0.0, 0.0, 1.0);//Цвет змейки.
    for (int i = 0;i < num;i++)//Цикл от нуля до количества элементов змейки..рисуем квадратики.
    {
        glRectf(s[i].x*Scale, s[i].y*Scale, (s[i].x + 1)*Scale, (s[i].y + 1)*Scale);
            //В координатах Х и У ...Х+1 и У+1 и нужно умножать каждый элемент на Масштаб квадратика.
            //Таким образом прорисовуется квадратики в нужном месте.
            //после написанния этого когда..В дисплей устанавливаем функцию Дров снейк..
    }
 
}
 
void MyKeyboard(int key, int a, int b)//Здесь управление 
{//Здесь будем принимать ключ, любая клавиша имеет своё числовое значение.//И регистрируем в главной функцие glutSpecialFunc(MyKeyboard)
    switch (key)
    {
    case 101:   dir = 0;break;
    case 102:   dir = 2;break;
    case 100:   dir = 1;break;
    case 103:   dir = 3;break;
    }
}//После того как написал этот код создаём фрукты,чрез какие наша змейка будет увеличиваться...class Fruct...
 
void DrawField()
{
    glColor3f(0.0, 1.0, 0.0);//Зеленый цвет
    glBegin(GL_LINES);//Начинаем рисовать линии.
 
    //Солько это будет длится..
    for (int i = 0;i < w;i += Scale)//от 0 до 30..раз будет..и добавлять по 25 пикселей.
        {
            glVertex2f(i, 0);/* do */ glVertex2f(i, h);//Ставим вертикальные линии...слева на право..считаются.
        }
    for (int j = 0;j < h;j += Scale)//От 0 до 20..раз будет,.  добавлять по 25 пикселей.
        {
            glVertex2f(0, j);/* do */ glVertex2f(w, j);// Горизонтальные линии..с верху в низ..считаются.
        }
    glEnd();//Заканчиваем.
    //И кидаем эту функцию в дисплей. и удаляем строки  до flush... в дисплее. но не клеар.
 
 
}
 
void Tick()//Функция делающая шаги.
{
    //Это хвост.
    for (int i = num;i > 0;--i)//поведение не голов..Этот цыкл есть циклом перемещения элемента на позицыю следующего элемента.
    {
        s[i].x = s[i - 1].x;//С это макс количество элементов в змейке.
        s[i].y = s[i - 1].y;
        //После завершения написания этого кода, копируй эту функци.ю(ТИК)
        //и вставляй в функцию Таймер.
    }
    /*Легкая подмога.*/
    //Если ДИР(направление) вверх, тогда добавляем к игрику единицу.. и так аналогично к другим направлениям.
    //Это голова...
    if (dir == 0)s[0].y += 1;//Вверх
    if (dir == 1)s[0].x -= 1;//Лево
    if (dir == 2)s[0].x += 1;//Право
    if (dir == 3)s[0].y -= 1;//Вниз
    //Когда закончили, создам поведение для не головы...выше в этой функцие.
 
    //Здесь пишем взаимодействие меж яблоками и змейкою
    for (int i = 0;i < 10;i++)
        if ((s[0].x == m[i].x) && (s[0].y == m[i].y))//Если элемент нашей змеи равен элементу яблока.тогда...
        {
            num++;  m[i].New();//Тогда элементы змейки увеличиваются. и яблоко появляется.
        }//После делаем..столкновение.
 
    if (s[0].x > N)dir = 1; //Если выезжаем за гриницы..тогда нас возвращает.
    if (s[0].x < 0)dir = 2;
    if (s[0].y > M)dir = 3;
    if (s[0].y < 0)dir = 0;
    //И проверка..если мы на себя наткнулись
    for (int i = 1;i < num;i++)
        if (s[0].x == s[i].x && s[0].y == s[i].y)//Если голова наткнулась на тело, тогда её элементы устанавливаются на значение i;
            num = i;
}
 
void display()
{
    glClear(GL_COLOR_BUFFER_BIT);//Очищаем экран
    
    for (int i = 0;i < 10;i++)//Выводим фрукты.
    {
        m[i].DrawApple();//Выводим наши фрукты...и идем в главную функцию создаём начальные яблоки...меин..
    }
    DrawField(); //И сразу же в главном меню ставим вместо (640 на 480) наши новые данные (w нa h) 
    DrawSnake();//Вот сюда...После создаем управление..функция kEYBOARD..НЕМНОГО выше..
 
    glFlush();//КОманда вывода на экран
 
}
 
void timer(int = 0)
{
    display();// Здесь происходит..Отображение экрана(что там происходит) Добавим переменную И++,а потом убираем.
    Tick();//Вот сюда. и далее создаём начальную позицыю змейки..иди в главную функцию...
    glutTimerFunc(100, timer, 0);// Пока будет действовать эта функция , ---Это заходим снова в таймер.
                                //тогда будет анимация. и объявляем её в Главной функцие
}
int main(int argc, char* argv[]) //Передаём параметры функции main 
{
 
    for (int i = 0;i < 10;i++)
    {
        m[i].New(); //И дальше делаем взаимодействие меж яблоком и змейкою..идем в Тикет..
    }
    s[0].x = 10;//Начальное местонахождения змейки.
    s[0].y = 0;//После написанния местонахожденния. Нужно нарисовать змейку..создаём функцию ДРов снейп..
 
    glutInit(&argc, argv);//Передаём параметры функции main 
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize(w, h);/*Устанавливаем размер окна(640 на 480 пикселей)*/ 
    // После того как ты заменил с 640... тогда делаем Функцию анимацыи......ввода некоторые переменные int dir,num;
    glutCreateWindow("Test");/*Команда для создания окна;Название окна*/ 
    glMatrixMode(GL_PROJECTION); /*Настроим 2-х мерный вид*/ 
    glLoadIdentity();
    gluOrtho2D(0, w, 0, h);/*Задаём в каких пределах изменяеются координаты x,y,z*/ 
 
    glutDisplayFunc (display);/*Объявляем функции рисования, которую мы создадим позже*/ 
    glutTimerFunc(100, timer, 0);//Объявили её тут...50 это задержка милисекунд.
    glutSpecialFunc(MyKeyboard);//Вот здесь оно.Управление кейбоардом. и возвращаемся обратно в майкейбоард
 
    glutMainLoop(); /*Буквально это - функция, завершающая описание окна,переводящая нас в основной цикл*/
    
}
Вот есть код. Как мне заменить зеленые квадратики на к примеру Клубника. Подскажите как загрузить изображение и синтаксис. в общем все об этом.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.08.2016, 18:13
Ответы с готовыми решениями:

Работа с изображениями
Решила написать приложение на си++ для работы с изображениями. Прочитала много всего на так толком...

Работа с графикой и изображениями
я не профессионал в C++ Но кое что могу. можете мне написать код С++ в котором будет изображение а...

Работа с изображениями OpenGL
Здравствуйте! Интересуют способы вывода картинок в окно OpenGL(например индикатор здоровья, или...

Работа с изображениями на дле 9.5. Как сделать тчобы отображался размер изображения?
Подскажите пожалуйста, как я могу сделать, чтобы на сайте отображался размер изображения в...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.08.2016, 18:13

Работа с изображениями
Чтобы программа увидела изображение, достаточно положить рисунок в директорию пакета класса?

Работа с изображениями
Есть ли такой скрипт или как реализовать такую щешь: получаем переменную $test, содержимое...

Работа с изображениями
Недавно пришла в голову сногсшибательная идея. Для ее реализации потребуется создать изображение...

Работа с изображениями
Здравствуйте. Подскажите пожалуйста, как можно решить мою задачу: У меня есть 100 PictureBox,...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru