crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
knf
  опции профиля:
сообщение 30.11.2013, 23:04
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 12
Регистрация: 22.11.2013
Пользователь №: 3984

Спасибо сказали: 0 раз(а)




Репутация:   0  


В общем такое дело.. Надо написать небольшую игру. В подробные правила думаю не надо писать, у меня есть несколько вопросов.
Играется на поле 4х4. С обеих сторон по 4 фишки. И вот первый вопрос) Где и как лучше нарисовать это поле?
И как реализовать передвижение фишек по этому полю. С++ знаю, ООП знаю, знаком с Qt и системой сигналов и слотов и не только.
Буду рад помощи
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Trisch
  опции профиля:
сообщение 30.11.2013, 23:30
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 379
Регистрация: 30.1.2012
Из: Запорожье
Пользователь №: 3169

Спасибо сказали: 24 раз(а)




Репутация:   0  


Ну нарисовать можно можно в QGraphicsView (+ QGraphicsScene и QGraphicsItem) или при помощи QML.

Реализация передвижения, при помощи данных средств, тоже хорошо реализуется.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
knf
  опции профиля:
сообщение 30.11.2013, 23:35
Сообщение #3


Студент
*

Группа: Новичок
Сообщений: 12
Регистрация: 22.11.2013
Пользователь №: 3984

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Trisch @ 1.12.2013, 0:30) *
Ну нарисовать можно можно в QGraphicsView (+ QGraphicsScene и QGraphicsItem) или при помощи QML.

Реализация передвижения, при помощи данных средств, тоже хорошо реализуется.

Поле я нарисовал, а вот что делать с фишками не знаю
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Trisch
  опции профиля:
сообщение 30.11.2013, 23:39
Сообщение #4


Активный участник
***

Группа: Участник
Сообщений: 379
Регистрация: 30.1.2012
Из: Запорожье
Пользователь №: 3169

Спасибо сказали: 24 раз(а)




Репутация:   0  


По идее, фишка должна иметь координаты. Поменял координаты фишка переместилась, вроде все.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
knf
  опции профиля:
сообщение 30.11.2013, 23:46
Сообщение #5


Студент
*

Группа: Новичок
Сообщений: 12
Регистрация: 22.11.2013
Пользователь №: 3984

Спасибо сказали: 0 раз(а)




Репутация:   0  


Trisch, Нужны подробности:)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Trisch
  опции профиля:
сообщение 1.12.2013, 0:04
Сообщение #6


Активный участник
***

Группа: Участник
Сообщений: 379
Регистрация: 30.1.2012
Из: Запорожье
Пользователь №: 3169

Спасибо сказали: 24 раз(а)




Репутация:   0  


Я предполагаю у тебя фишки реализованы с помощью QGraphicsItem.
Определяешь новые координаты с помощью функции определения положения мыши или нажатия клавиш или еще как то.
И в итоге задаешь новые координаты фишке с помощью setX() и setY().

А вообще, чтобы не тыкать пальцем в небо, можешь скинуть исходный код того что есть.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
knf
  опции профиля:
сообщение 1.12.2013, 0:29
Сообщение #7


Студент
*

Группа: Новичок
Сообщений: 12
Регистрация: 22.11.2013
Пользователь №: 3984

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Trisch @ 1.12.2013, 1:04) *
Я предполагаю у тебя фишки реализованы с помощью QGraphicsItem.
Определяешь новые координаты с помощью функции определения положения мыши или нажатия клавиш или еще как то.
И в итоге задаешь новые координаты фишке с помощью setX() и setY().

А вообще, чтобы не тыкать пальцем в небо, можешь скинуть исходный код того что есть.

void MainWindow::drawGrid()
{
    QGraphicsScene *scene = new QGraphicsScene(ui->graphicsView);
    QPen pen(Qt::black);
    pen.setWidth(2);

    scene->addLine(0,180,180,180,pen);
    scene->addLine(180,0,180,180,pen);
    scene->addLine(0,0,0,180,pen);
    scene->addLine(180,0,0,0,pen);

    scene->addLine(0,135,180,135,pen);
    scene->addLine(0,90,180,90,pen);
    scene->addLine(0,45,180,45,pen);

    scene->addLine(135,0,135,180,pen);
    scene->addLine(90,0,90,180,pen);
    scene->addLine(45,0,45,180,pen);

    ui->graphicsView->setScene(scene);
}

ну в общем как то так я нарисовал

Цитата(Trisch @ 1.12.2013, 1:04) *
Я предполагаю у тебя фишки реализованы с помощью QGraphicsItem.
Определяешь новые координаты с помощью функции определения положения мыши или нажатия клавиш или еще как то.
И в итоге задаешь новые координаты фишке с помощью setX() и setY().

А вообще, чтобы не тыкать пальцем в небо, можешь скинуть исходный код того что есть.

Поле то не большое)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
knf
  опции профиля:
сообщение 1.12.2013, 16:43
Сообщение #8


Студент
*

Группа: Новичок
Сообщений: 12
Регистрация: 22.11.2013
Пользователь №: 3984

Спасибо сказали: 0 раз(а)




Репутация:   0  


Trisch, Ну так что?)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Trisch
  опции профиля:
сообщение 1.12.2013, 17:58
Сообщение #9


Активный участник
***

Группа: Участник
Сообщений: 379
Регистрация: 30.1.2012
Из: Запорожье
Пользователь №: 3169

Спасибо сказали: 24 раз(а)




Репутация:   0  


ну, я же вроде написал.

устанавливаешь на поле фишку:
QGraphicsEllipseItem *pEllipseItem;
pEllipseItem = pScene->addEllipse(X, Y, R, R, QPen(Qt::red), QBrush(Qt::red));

И потом меняешь координаты:
pEllipseItem->setX(X1);
pEllipseItem->setY(Y1);

Все.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
knf
  опции профиля:
сообщение 2.12.2013, 21:27
Сообщение #10


Студент
*

Группа: Новичок
Сообщений: 12
Регистрация: 22.11.2013
Пользователь №: 3984

Спасибо сказали: 0 раз(а)




Репутация:   0  


Trisch, Нарисовал фишки, установил флаг QGraphicsItem::ItemIsMovable. Как теперь ограничить перемещение фишек?Надо переопределить mousePressEvent?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 7.5.2025, 20:48