Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Разработка небольшого приложения на C++/qt и C# - с чего начать?  (Прочитано 10363 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Санчо42

  • Автор темы
  • Активист
  • *
  • Сообщений: 424
    • Просмотр профиля
Пришло время делать курсовую работу. Знание обоих языков находится на уровне Hello World + заполнение массивов циклами. Выбор стоит между разработкой приложения на C++ и соответственно изучением этого языка либо C#. Нужно сделать небольшую игру, типа игры 15 - игровое поле разбито на 16 квадратов, нужно собрать картинку, двигая её элементы в пустой квадрат. Приложение должно быть оконным. Прошу посоветовать, какой язык выбрать для изучения и разработки (Для C# есть monodevelop, для С++ CodeBlocks), и какой-либо учебник "для самых маленьких".
Сейчас всё упирается в то, что под бунтой нет VisualStudio. Там работа организованна примерно так - есть форма, на неё добавляешь необходимые элементы, затем пишешь код. Сейчас я установил CodeBlocks, Выбрал создать проект - gtk2 проект, открывается окно с кодом, но где сама будущая форма и элементы на ней?
« Последнее редактирование: 23 Октября 2013, 15:51:17 от Санчо42 »
Asus K55DR  AMD A-10 (HD7660+HD7470) 6Gb/1Tb

Оффлайн tagezi

  • Активист
  • *
  • Сообщений: 359
    • Просмотр профиля
    • Информатика в экономике и управлении
Пришло время делать курсовую работу. Знание обоих языков находится на уровне Hello World + заполнение массивов циклами. Выбор стоит между разработкой приложения на C++ и соответственно изучением этого языка либо C#. Нужно сделать небольшую игру, типа игры 15 - игровое поле разбито на 16 квадратов, нужно собрать картинку, двигая её элементы в пустой квадрат. Приложение должно быть оконным. Прошу посоветовать, какой язык выбрать для изучения и разработки (Для C# есть monodevelop, для С++ CodeBlocks), и какой-либо учебник "для самых маленьких".
Если вы знаете оба языка на одном уровне, то отталкивайтесь от интереса. Какой язык вам более интересен?
Если вам нужно полегче и побыстее, то можно на qt4 писать, в сети полно примеров таких игр, можно каписастом програмку сваять.
А если хотите начать... то лучше с алгоритма игры. А язык дело десятое.
« Последнее редактирование: 23 Октября 2013, 15:58:49 от tagezi »
ASUS K53E, intel i5, 8 Gb, Integrated Intel® GMA HD
wiki LibreOffice
справка LibreOffice

Оффлайн SergeyIT

  • Зануда.
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5738
  • Все по палатам!
    • Просмотр профиля
Поставь qtcreator и пиши на С++/qt. там есть много примеров. И книжка есть Макс Шлее - программирование на qt.
Извините, я все еще учусь

Оффлайн Санчо42

  • Автор темы
  • Активист
  • *
  • Сообщений: 424
    • Просмотр профиля
огромное вам спасибо. На C# совсем не хочется писать, так как язык целиком находится под юрисдикцией мелкомягких, поэтому решил посмотреть в сторону С++, но поскольку полного аналога VisualStudio в бунте нет, пришлось спросить тут. qtcreator вроде неплохая замена. в голове уже крутится алгоритм игры (в общем то она вовсе не сложная), проблема только в реализации.
Asus K55DR  AMD A-10 (HD7660+HD7470) 6Gb/1Tb

Оффлайн Peter_I

  • Старожил
  • *
  • Сообщений: 3266
    • Просмотр профиля
Среда за вас думать не будет. Я предпочитаю ею не пользоваться и пишу
текст программы в обычном текстовом редакторе. Если программа пищется
впервые, то с нуля в 1-й раз долго, но мне как-то удобнее всё делать вручную.
Пётр.

Оффлайн tagezi

  • Активист
  • *
  • Сообщений: 359
    • Просмотр профиля
    • Информатика в экономике и управлении
Среда за вас думать не будет. Я предпочитаю ею не пользоваться и пишу
текст программы в обычном текстовом редакторе. Если программа пищется
впервые, то с нуля в 1-й раз долго, но мне как-то удобнее всё делать вручную.

Обычно, когда пишешь (код в редакторе) думать уже позно. Думать нужно до. А среда позволяет записывать созданый алкоритм с максимальным удобством (подсветкой, автодополнениями, быстрой отладкой). При этом получаеться меньше опечаток, которые при написании в "блокноте" тратится львиная доля времени.
Хотя некоторые под "обычный текстовый редактор" понимают что-то типа kate - который адекватно подсвечивает немереное количество языков (и их диалектов), имеет автодополнение, сворачивание модуля, и в принципе, с плагинами, можно сделать проверку классов :D
ASUS K53E, intel i5, 8 Gb, Integrated Intel® GMA HD
wiki LibreOffice
справка LibreOffice

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
В интегрированной среде удобно окошки, панельки править...
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн Grigory Smirnov

  • Старожил
  • *
  • Сообщений: 1339
  • Дайте мне исходники, и я переверну Землю.
    • Просмотр профиля
    • Дафтер
Через wine можно запустить VisualStudio, хотя тоже не понимаю, зачем он обязательно нужен.

Glade для Gtk подойдет.

Оффлайн Chibiko

  • Активист
  • *
  • Сообщений: 295
  • человекобяка
    • Просмотр профиля
    • Велопоходики
Пока изучаю С.
Как бду нормально в нём ориентироваться - перейду на С++.
На данный момент пользуюсь kdevelop.
На шарпе вообще не тянет 8)
А, да, QTcreator тоже стоит, но в нём пока не разбирался. Мне и kdevelop за глаза хватает 8)

Оффлайн Санчо42

  • Автор темы
  • Активист
  • *
  • Сообщений: 424
    • Просмотр профиля
Среда за вас думать не будет. Я предпочитаю ею не пользоваться и пишу
текст программы в обычном текстовом редакторе. Если программа пищется
впервые, то с нуля в 1-й раз долго, но мне как-то удобнее всё делать вручную.
Согласен, код небольшого консольного приложения можно написать и в блокноте. Но ведь мне нужно разрабатывать оконное приложение, а значит нужно расставлять управляющие элементы на форме, и уже потом приписывать к ним код. Поэтому тут я и затормозил - в VS можно сразу накидать виджетов на форму и тут же приступить к написанию кода. Я подумал, что также можно сделать и в Code Blocks, но нет, там только код, у вот тут встал главный вопрос - Как сформировать визуальный каркас приложения, работая в Code Blocks?
Тут же я выяснил, что есть qt desinger, он позволяет создать "форму с кнопочками", но что делать дальше? Как подключить эту форму к коду в CB?


Пользователь решил продолжить мысль 24 Октября 2013, 14:17:06:
Через wine можно запустить VisualStudio, хотя тоже не понимаю, зачем он обязательно нужен.

Glade для Gtk подойдет.
Я немножко фанатик, поэтому сразу отказался от VS из-под виртуалки в пользу чего-то более полноценно.
Как я уже сказал выше, glade позволяет наваять форму, но как её подключить в CB?
« Последнее редактирование: 24 Октября 2013, 14:18:10 от Санчо42 »
Asus K55DR  AMD A-10 (HD7660+HD7470) 6Gb/1Tb

Оффлайн peregrine

  • FSM
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 7212
  • Gentoo x64 Ubuntu 16.04.1 x64
    • Просмотр профиля
Санчо42, чтоб научиться надо не с формошлёпства начинать, а ручками, ручками код окошка писать.

Пользователь решил продолжить мысль 24 Октября 2013, 14:18:56:
Grigory Smirnov, студия под линем не работает. WINE не поможет. Если заведёте, то софт через одно место работать будет. Есть свои инструменты, гораздо лучше и удобнее.

Оффлайн Санчо42

  • Автор темы
  • Активист
  • *
  • Сообщений: 424
    • Просмотр профиля
Visualstudio можно под Virtualbox'om запустить, это не проблема.
Подскажите вот что, glade создает xml-файл, описывающий окно, а вот qt creator помимо xml-файла с описанием окошка сразу код подгоняет (я понимаю, что creator это IDE, в то время как Glade просто пишет окошки). Как окошко, написанное в glade подогнать в CodeBlocks?

Много всего приходится изучать, так прошу меня извинить за тупые вопросы. Вгляните на кусочек кода, который создаст небольшое оконное приложение из Code blocks
(Нажмите, чтобы показать/скрыть)

Не нужно быть специалистом, чтобы понять - структура окошка описывается внутри основного кода.

Вглянем на Hello world! из qt creator

(Нажмите, чтобы показать/скрыть)
(Нажмите, чтобы показать/скрыть)

Видно, что окно не описывается снутри си-шного кода, окошко описывается xml-файлом, который подключается как форма. Почему такое различие? Как можно точно также подключить xml-glade форму в CB?

UPD: вроде как тут http://habrahabr.ru/post/136922/ есть ответ на вопрос. Всем спасибо, буду учиться!
« Последнее редактирование: 24 Октября 2013, 15:14:02 от Санчо42 »
Asus K55DR  AMD A-10 (HD7660+HD7470) 6Gb/1Tb

Оффлайн SergeyIT

  • Зануда.
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5738
  • Все по палатам!
    • Просмотр профиля
Санчо42,
В примерах qt есть приложения, написанные без дизайнера (без *.ui). Там все видно, как писать
(Я, кстати, дизайнер не осилил)
Извините, я все еще учусь

Оффлайн peregrine

  • FSM
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 7212
  • Gentoo x64 Ubuntu 16.04.1 x64
    • Просмотр профиля
Санчо42, используйте подсветку кода. Читать невозможно.
Код: (cpp) [Выделить]
#include <gtk/gtk.h>

static void helloWorld (GtkWidget *wid, GtkWidget *win)
{
  GtkWidget *dialog = NULL;

  dialog = gtk_message_dialog_new (GTK_WINDOW (win), GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE, "Hello World!");
  gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER);
  gtk_dialog_run (GTK_DIALOG (dialog));
  gtk_widget_destroy (dialog);
}

int main (int argc, char *argv[])
{
  GtkWidget *button = NULL;
  GtkWidget *win = NULL;
  GtkWidget *vbox = NULL;

  /* Initialize GTK+ */
  g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, (GLogFunc) gtk_false, NULL);
  gtk_init (&argc, &argv);
  g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, g_log_default_handler, NULL);

  /* Create the main window */
  win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_container_set_border_width (GTK_CONTAINER (win), 8);
  gtk_window_set_title (GTK_WINDOW (win), "Hello World");
  gtk_window_set_position (GTK_WINDOW (win), GTK_WIN_POS_CENTER);
  gtk_widget_realize (win);
  g_signal_connect (win, "destroy", gtk_main_quit, NULL);

  /* Create a vertical box with buttons */
  vbox = gtk_vbox_new (TRUE, 6);
  gtk_container_add (GTK_CONTAINER (win), vbox);

  button = gtk_button_new_from_stock (GTK_STOCK_DIALOG_INFO);
  g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (helloWorld), (gpointer) win);
  gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 0);

  button = gtk_button_new_from_stock (GTK_STOCK_CLOSE);
  g_signal_connect (button, "clicked", gtk_main_quit, NULL);
  gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 0);

  /* Enter the main loop */
  gtk_widget_show_all (win);
  gtk_main ();
  return 0;
}

Оффлайн Чистый

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3473
  • nix - вот оно счастье...
    • Просмотр профиля
Санчо42,
с gui все немного не так, в qt. Когда вы добавляете в qtcreator форму то созадется файл ui, это в принципе все тот же xml, но в момент компиляции этот xml парсится и переводится в код C++ cо своими замарочками в лице компановки, сигналов, слотов и т.п. после чего этот код компилируется и линкуется с основным приложением.... в qt формы можно и не рисавать в дизайнере а описать в коде от размеров до компановки элементов и их поведения при изменении размера главной формы, но по опыту могу сказать, что более ли менее сложные формы очень тяжело описывать голым кодом, покрайней мере мне, проще набросать все мышью скомпоновать и забыть....
« Последнее редактирование: 24 Октября 2013, 16:16:40 от Чистый »
Тестовый репозиторий kdeNeur ppa:devcode/kdeneur
各々が死ぬことをどのように決定する

 

Страница сгенерирована за 0.022 секунд. Запросов: 21.