Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 29.11.2016
Сообщений: 41

Как привязать к объекту координты?

21.02.2017, 21:01. Показов 966. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ну, вот я имею ввиду, что если у меня есть объект (не в контексте ООП, а в прямом смысле), например группа из четырех звездочек ("****"), и я хочу перемещать их по экрану, то я могу как-то задать им координаты х и у, чтобы перемещаться на некоторое количество символов во все стороны? Ну или какая-то альтернатива для того же эффекта.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.02.2017, 21:01
Ответы с готовыми решениями:

Как привязать ссылку к объекту (див, надпись и т.д.) ?
Как привязать ссылку к объекту (див, надпись и т.д.) ? дан див, по нажатию на него нужно перейти на другую страницу, как это сделать...

Как к объекту button можно привязать комбинацию клавиш клавиатуры?
Как к объекту button можно привязать комбинацию клавиш клавиатуры, для быстрого запуска, так же, как shortcut в menu.

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

8
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
21.02.2017, 21:17
Консоль не предназначена для такого, поэтому стандартных средств нет. Можно управлять положением курсора через WinAPI и выводить эти звёздочки.
0
Каждому свое
 Аватар для Bretbas
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
21.02.2017, 21:17
kullichik, в каком случае то? Везде по разному будет перемещение. Где-то по-символьно(к примеру в консоле), где-то по-пиксельно
0
0 / 0 / 0
Регистрация: 29.11.2016
Сообщений: 41
21.02.2017, 21:30  [ТС]
Да? Ну а может как-то просто вырисовывать их по-новому в разных местах?
0
Каждому свое
 Аватар для Bretbas
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
21.02.2017, 21:34
kullichik, ты не сказал где!
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
21.02.2017, 21:39
Цитата Сообщение от kullichik Посмотреть сообщение
у меня есть объект (не в контексте ООП, а в прямом смысле)
В прямом смысле объект - это чашка. Чтобы её программно переместить по столу - ООП может помочь) Хотя ... и на процедурном такое написать можно
0
0 / 0 / 0
Регистрация: 29.11.2016
Сообщений: 41
21.02.2017, 21:43  [ТС]
Ну, консоль, по классике.
0
Каждому свое
 Аватар для Bretbas
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
22.02.2017, 08:51
kullichik, в консоле нельзя напрямую перемещать символы по экрану.
Как делал Я:
1. Брал двумерный массив 25x80 символов, так как консоль является таким размером.
2. Обнулял этот массив.
3. Там где нужно было что-то рисовать, я к примеру записывал в массив единицы.
4. Каждый кадр я прорисовывал каждый кадр по символьно проходив массив, и там где были единицы я рисовал cout, а там где нули - пропускал.

Чтобы избавиться от мерцания, можно посмотреть в сторону двойной буферизации. Почитай

Добавлено через 4 минуты
Хотя вру. Вот мой представления консоли. Я реализовывал тогда класс View, который отвечает за экран консоли.
Хедер
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
#ifndef VIEW_H_
#define VIEW_H_
 
 
#include <iostream>
#include <windows.h>
 
 
/* ## Список перечисления цветов ## */
enum color
{
    cBLACK=0, cDARK_BLUE=1, cDARK_GREEN=2, DARK_CYAN=3, cDARK_RED=4, cDARK_MAGENTA=5, cBROWN=6, cLIGHT_GRAY=7,
    cDARK_GRAY=8, cBLUE=9, cGREEN=10, cCYAN=11, cRED=12, cMAGENTA=13, cYELLOW=14, cWHITE=15
};
 
 
/* ## Представление ## */
class View 
{
private:
    static HANDLE h_console_;                       // Хендл окна
 
protected:
    View();                                         // Конструктор
 
    void set_color(color fg,color bg = cBLACK);     // Установка цвета
    void set_cursor_pos(int x,int y);               // Установка курсора
    void clear_screen();                            // Очистка экран
public:
    virtual ~View();                                // Деструктор         
 
    virtual void update() = 0;                      // Метод для переопределения
};
 
 
#endif VIEW_H_
Сорсец:
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
#include "..\MVC_H_\View.h"
 
 
HANDLE View :: h_console_ = NULL;
 
 
/* ## Конструктор ## */
View :: View()
{
    if(!h_console_)
    {
        COORD console_size = {80,25};
 
        h_console_ = CreateFile( L"CONOUT$",
                                GENERIC_WRITE |
                                GENERIC_READ,
                                FILE_SHARE_READ |
                                FILE_SHARE_WRITE,
                                0L,
                                OPEN_EXISTING,
                                FILE_ATTRIBUTE_NORMAL,
                                0L );
 
        SetConsoleScreenBufferSize(h_console_,console_size);
 
        SetConsoleTextAttribute(h_console_,(WORD)((0<<4) | 15));
 
        clear_screen();
    }
}
 
 
/* ## Деструктор ## */
View :: ~View()
{
}
 
 
/* ## Установка цвета ## */
void View :: set_color(color foreground,color background)
{
    SetConsoleTextAttribute(h_console_,(WORD)((background<<4) | foreground));
}
 
 
/* ## Установка курсора ## */
void View :: set_cursor_pos(int x,int y)
{
    COORD cursor_pos;
    cursor_pos.X = x - 1;
    cursor_pos.Y = y - 1;
 
    SetConsoleCursorPosition(h_console_,cursor_pos);
}
 
 
/* ## Очистка экрана ## */
void View :: clear_screen()
{
    set_cursor_pos(1,25);
 
    for(int j = 0;j < 25;j++)
    { std :: cout << "\n"; }
 
    set_cursor_pos(1,1);
}
Код старый, писал, когда был на слабом уровне в программирование(да и щас вроде не сильный), поэтому может что-то поправишь
0
Падаван С++
 Аватар для obivan
447 / 261 / 89
Регистрация: 11.11.2014
Сообщений: 916
22.02.2017, 08:56
в чем проблемма создать массив 2х4 ну для 4х звездочек и хранить там x и y, ну и чтобы все вместе вправо допустим двигались, то мы у всего массива увеличиваем значение на 1 ну в нашем случае 1 строка массива Хсы 2я Yки,
подозрения что вы пишите что то типа тетриса

Добавлено через 1 минуту
P.S да и не кто не отменял структуры, если ООП не нужно то, работаем со структурами в функциональном стиле
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.02.2017, 08:56
Помогаю со студенческими работами здесь

Привязать Label к объекту
Подскажите как можно сделать чтобы Label появлялся над созданным прямоугольником? (как показано на рисунке.)

Привязать элемент к другому объекту
В groupBox1 «Найденные файлы» может перечисляться до 6 файлов. И когда программа их находит groupBox изменяет высоту и закрывает второй...

Как прикрепить линию к объекту и провести к другому объекту?
Привет. Вот вариант с помощью метода Gizmos.DrawLine. Как видите линия проходит с центра одного объекта в центр другого. Но задумка...

Почему допустимо создавать объект по другому объекту, но нельзя присваивать уже созданный объект, другому созданному объекту?
Это можно : Array a(10); a.set(0,5); Array b(a); А это нельзя : Array a(10); Array b(20); a = b;

Как получить доступ к трансформациям из кода и как их вообще добавить к объекту?
&lt;uiElements:ExtendedAnimatedImage x:Name=&quot;_image&quot; DisplayFirstFrame=&quot;{Binding Path=DisplayFirstFrame,...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru