Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.59/46: Рейтинг темы: голосов - 46, средняя оценка - 4.59
43 / 37 / 17
Регистрация: 11.11.2009
Сообщений: 246

Будущая игра.

13.07.2010, 14:39. Показов 9357. Ответов 71
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Знаю, название темы дурацкое, но у меня несколько вопросов и я не знал как назвать тему, поэтому прошу прошения. Знаний на многое не хватает 1 курс, который плохо отучился.

1)Фоновый рисунок. Какой способ лучше использовать? TImage или TBitmap? И почему? Еще планируется изменение размера. Как тут лучше поступить? Под каждое разрешение создавать картинку или создать одно большое, но что бы его программа растягивала на экран? Кстати как сделать растягивание?
2)Кнопки. Как сделать их не стандартными, а такими как я хочу? С помощью изображения? Если да, то как можно при отсутствии таланта(да я даже кнопку нормально не могу нарисовать) ее сделать? Есть ли приложение? И как оформить код? С кнопкой понятно, а вот если изображение...
3)Ну, и при нажатии этой клавиши должно... Даже не знаю как это описать. Ну, вы сами знаете. При нажатии новая игра...
4) Как реализовать сохранения и загрузку?
5) У меня есть картинка 640x480. я в борланде выбираю размер экрана 640x480. А картинка не помещается. пришлось делать 640x513. Как исправить?

Заранее благодарен.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.07.2010, 14:39
Ответы с готовыми решениями:

Как сделать так, чтобы при нажатии на кнопку "Новая игра" игра начиналась заново?
Как сделать так, чтобы при нажатии на кнопку "Новая игра" игра начиналась заново? unit1.cpp void __fastcall TForm1::N1Click(TObject...

Будущая программа "Редактирование текста по ГОСТ"
Через 1.5 года сдача проекта на диплом, ещё не скоро, но пришла в голову идея. Всегда по долгу возился с редактированием курсовых работ по...

Игра слов, игра Scrabble
Задание: Создать программу для решения задачи построения слова из некоторого множества букв (игра Scrabble) используя алгоритмы поиска в...

71
43 / 37 / 17
Регистрация: 11.11.2009
Сообщений: 246
06.08.2010, 16:07  [ТС]
Студворк — интернет-сервис помощи студентам
Ура подействовало. Но не будет ли на других компах один раз воспроизводится? Просто, пока искал как воспроизвести музыку, наткнулся на тему, что у человека играет музыка повторяясь, а на других компьютерах нет. Ссылку потерял, поэтому повторить все не могу. Может, я что-то не понял. И использовала она именно PlaySound.

Пожалуй, все же ini. Во многих играх видел, что храниться в cfg. Почему они в cfg сохраняют? Просто стало интересно. И почему не в txt? Ведь все три формата, можно открыть блокнотом и в них все исправить.

exe-файл просто нужно переименовать..
нда. Не ожидал такого. Привык, что если что-то нужно сделать, то нужно где-то обязательно лазить, что-то исправлять, что даже о простом переименовании не подумал.
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
06.08.2010, 16:18
Цитата Сообщение от Vergil Посмотреть сообщение
Но не будет ли на других компах один раз воспроизводится?
Не должна.
Во всяком случае, описание в MSDN таких ограничений не рассматривает.

Цитата Сообщение от Vergil Посмотреть сообщение
Пожалуй, все же ini. Во многих играх видел, что храниться в cfg. Почему они в cfg сохраняют? Просто стало интересно. И почему не в txt? Ведь все три формата, можно открыть блокнотом и в них все исправить.
Блокнот по умолчанию не ассоциирован с cfg-файлами. Поэтому, предполагается, что обычный пользователь не полезет внутрь.
Тем более, вы в праве самостоятельно указать имя и расширение.
То есть, при создании файла пропишите .cfg (или любое другое интересующее расширение).

Цитата Сообщение от Vergil Посмотреть сообщение
Привык, что если что-то нужно сделать, то нужно где-то обязательно лазить, что-то исправлять
Исполняемые файлы не могут быть изменены "кодом изнутри", т.к. при их открытии возникает эксклюзивная блокировка файла, которая не даст его изменить/удалить.
1
43 / 37 / 17
Регистрация: 11.11.2009
Сообщений: 246
06.08.2010, 18:13  [ТС]
А как сделать полноэкранный режим.
Поискал по разным сайтам. Существует мнение, что полноэкранный режим чем-то отличается от растягивания формы на весь экран и уберания рамки.
Вот есть так.
C++
1
2
3
4
5
BorderStyle =bsNone;
  Left =0;
  Top =0;
  Width =Screen->Width;
  Height =Screen->Height;
И есть так.
C++
1
2
3
4
5
6
7
8
9
10
        DEVMODE dmScreenSettings; // Режим устройства
        memset( &dmScreenSettings, 0, sizeof( dmScreenSettings ) ); // Очистка для хранения установок
        dmScreenSettings.dmSize = sizeof( dmScreenSettings ); // Размер структуры Devmode
        dmScreenSettings.dmPelsWidth = width; // Ширина экрана
        dmScreenSettings.dmPelsHeight = height; // Высота экрана
        dmScreenSettings.dmBitsPerPel = bits; // Глубина цвета
        dmScreenSettings.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT; // Режим Пикселя
        
        // Пытаемся установить выбранный режим и получить результат.  Примечание: CDS_FULLSCREEN убирает панель управления.
        if( ChangeDisplaySettings( &dmScreenSettings, CDS_FULLSCREEN ) != DISP_CHANGE_SUCCESSFUL )
что лучше. В чем-то разница есть?
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
06.08.2010, 18:26
Vergil, первый вариант выполняет банальное растяжение формы, ничего не меняя в текущем графическом режиме (кстати, приведенный вами код неоптимален, т.к. заставит форму перерисоваться после каждой установки значения ... используйте SetBounds)

А функция ChangeDisplaySettings изменяет параметры настройки заданного по умолчанию устройства отображения в указанном графическом режиме.
То есть, вы можете задать ширину, высоту, глубину, а также частоту обновления экрана...
1
43 / 37 / 17
Регистрация: 11.11.2009
Сообщений: 246
09.08.2010, 15:40  [ТС]
Есть ли возможность без WinApi определить видеокарту?
0
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
09.08.2010, 16:05
Vergil, а чем вам WinApi не понравился?
1
43 / 37 / 17
Регистрация: 11.11.2009
Сообщений: 246
10.08.2010, 12:18  [ТС]
А я его не знаю. Да и сложный он больно для меня... пока сложный. Вряд ли я сейчас пойму, что делается с помощью него. А смысл, то в этом и заключается. Написать и понять.

Добавлено через 20 часов 7 минут
Как сделать понял. А как заполнить Tcombobox? Целый час потратил на это, но ничего толкового не нашел. Все автозаполнение, заполнение битмапами и т.д
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
10.08.2010, 12:32
Цитата Сообщение от Vergil Посмотреть сообщение
А как заполнить Tcombobox?
Добавление строки:
C++
1
ComboBox1->Items->Add("Test");
Вставка строки в указанную позицию:
C++
1
ComboBox1->Items->Insert(0,"Test");
1
43 / 37 / 17
Регистрация: 11.11.2009
Сообщений: 246
10.08.2010, 12:50  [ТС]
А как сделать, что бы при создании Вместо пустого бокса была надпись. Только программно. И есть ли какой-нибудь хороший справочник, в котором набрал название компонента и он все о нем выдал?
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
10.08.2010, 13:09
Цитата Сообщение от Vergil Посмотреть сообщение
Вместо пустого бокса была надпись. Только программно.
Судя по всему вы спрашивали об этом:
C++
1
2
ComboBox1->Items->Add("Test");
ComboBox1->Text = ComboBox1->Items->Strings[0];
Цитата Сообщение от Vergil Посмотреть сообщение
И есть ли какой-нибудь хороший справочник, в котором набрал название компонента и он все о нем выдал?
Или Help или Архангельский.
1
43 / 37 / 17
Регистрация: 11.11.2009
Сообщений: 246
10.08.2010, 13:25  [ТС]
А вот в этом проблема. У меня стиль стоит csDropDownList. Он не дает изменить текст. Только сейчас дошло. Просто я не хочу, что бы можно было изменить ручками то, что в боксе написано. Как-нибудь можно изменить? Или это нужно сделать стиль csDropDown, поставить текст, а потом изменить на csDropDownList?

Добавлено через 40 секунд
Архангельского уже качаю.
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
10.08.2010, 13:49
Vergil, есть свойство ItemIndex. Его можно использовать так:
C++
1
2
ComboBox1->Items->Add("Test");
ComboBox1->ItemIndex = 0;
Или если нужен индекс добавленной строки, тогда так:
C++
1
ComboBox1->ItemIndex = ComboBox1->Items->IndexOf("Test");
0
43 / 37 / 17
Регистрация: 11.11.2009
Сообщений: 246
10.08.2010, 13:59  [ТС]
Не это я понял. Или не понял как индекс поможет.
У меня есть бокс и я не хочу, что бы в него кто-то что-то написал. Для этого я выставил в его настройках Style csDropDownList. Если выставить csDropDown и использовать ваш код,
C++
1
2
ComboBox1->Items->Add("Test");
ComboBox1->Text = ComboBox1->Items->Strings[0];
то после создания формы в боксе стоит Test. Но при таком стиле можно изменить текст с помощью обычного ввода. Что бы этого избежать я выставляю Style csDropDownList. И вот он не дает правильно использовать код. То есть прога запускается, но бокс все равно пустой.
Вот я и думаю. Вначале установить стиль csDropDown, потом ваш код, а после него программно менять стиль на csDropDownList.
Иногда я не ясно выражаюсь. прошу за это прошения.

Добавлено через 1 минуту
Я хочу, что бы при появлении формы там стояло уже первая строка, а не пустота.
0
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
10.08.2010, 14:04
Vergil, хм... може быть так:
C++
1
2
3
4
5
6
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    ComboBox1->Items->Add("Test");
         ComboBox1->ItemIndex=0;
}
//---------------------------------------------------------------------------
1
43 / 37 / 17
Регистрация: 11.11.2009
Сообщений: 246
12.08.2010, 11:35  [ТС]
Вот оно как... Да, подействовало. То, что и нужно было. Еще раз спасибо.

Добавлено через 23 часа 54 минуты
Есть код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
LPDIRECT3D8 p_d3dt = Direct3DCreate8 (D3D_SDK_VERSION);
D3DDISPLAYMODE d3ddm2;
int allVideoModes = p_d3dt->GetAdapterModeCount (D3DADAPTER_DEFAULT);
for (int i=0; i<allVideoModes; i++)
{
    p_d3dt->EnumAdapterModes (D3DADAPTER_DEFAULT, i, &d3ddm2);
    char str[30];
    int bpp=0;
    if(d3ddm2.Format == D3DFMT_X1R5G5B5) bpp=16;
    if(d3ddm2.Format == D3DFMT_R5G6B5) bpp=16;
    if(d3ddm2.Format == D3DFMT_A1R5G5B5) bpp=16;
    if(d3ddm2.Format == D3DFMT_A4R4G4B4) bpp=16;
    if(d3ddm2.Format == D3DFMT_X4R4G4B4) bpp=16;
    if(d3ddm2.Format == D3DFMT_R8G8B8) bpp=24;
    if(d3ddm2.Format == D3DFMT_X8R8G8B8) bpp=32;
    if(d3ddm2.Format == D3DFMT_A8R8G8B8) bpp=32;
    sprintf(str, "%dx%dx%d _ %dhz", d3ddm2.Width, d3ddm2.Height, bpp, d3ddm2.RefreshRate);
    screenresolution_AddString (hFSMlist, str);
};
_RELEASE_ (p_d3dt);
, но судя по всему нужно что-то подключить, пробовал d3d8.lib подключить не робит. говорит, что не знает что такое LPDIRECT3D8 и дальше по списку.

Добавлено через 20 часов 38 минут
Нашел кое-где, что нужно для работы этого кода подключить это.
C++
1
2
#include <d3d8.h>
#pragma comment (lib, "d3d8.lib")
Но у меня нет ни библиотеки, ни заголовочного файла.

Как-нибудь по-другому можно считать возможные видеорежимы?

Добавлено через 37 минут
И еще один вопрос. попытался в функции запихнуть такой код
C++
1
SelectedItemText = Videocard->Items->Strings[Videocard->ItemIndex];
Причем если засунуть на нажатие кнопки все отлично работает, а в функции нет. Жалуется, что не знает что такое Videocard. А это название Tcobobox'a. Что можно сделать?

Добавлено через 14 минут
Все с функцией разобрался.
C++
1
2
3
4
5
6
7
8
9
void Save(TComboBox* Videocard){FILE *F;
if ((F = fopen("Config.ini", "wt")) == NULL)
{ShowMessage("Не удалось создать файл ""Config.ini"" !");
return;}
SelectedItemText = Videocard->Items->Strings[Videocard->ItemIndex];
char *videocard = SelectedItemText.c_str();
fprintf(F,"[Информация о видеокарте]\n");
fprintf(F, videocard);
fprintf(F,"\n"); }
сделал так. Но как теперь ее вызвать?
0
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
12.08.2010, 12:01
Vergil, вот так:
C++
1
Save(ComboBox1);
Хотя, мне ваша функция не очень нравится. Программа с таким "чудом" компилируется нормально?
1
43 / 37 / 17
Регистрация: 11.11.2009
Сообщений: 246
12.08.2010, 12:16  [ТС]
Если функцию не использовать, то норм. А что в ней не так? Что-то в теле функции? Просто у меня с функциями плохо.
А код не помогает
[C++ Error] Menu.cpp(89): E2451 Undefined symbol 'ComboBox1'
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
12.08.2010, 12:21
Vergil, вместо ComboBox1 подставьте тот, компонент класса TComboBox, который вы используете.

Второй вариант: объявить эту функцию в области public в классе формы. Тогда ваш код будет работать без явного указания Form1->Videocard
1
43 / 37 / 17
Регистрация: 11.11.2009
Сообщений: 246
12.08.2010, 12:31  [ТС]
Может я не правильно делаю? Смысл взять из Videocard выбранную строчку и сохранить ее в файл.

Добавлено через 3 минуты
А как второй вариант сделать?

Добавлено через 6 минут
MikeSoft, заменил Videocard на Form1->Videocard, как ты сказал и все заработало. а еще void Save(TComboBox* Videocard) на void Save(void).
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
12.08.2010, 12:34
Цитата Сообщение от Vergil Посмотреть сообщение
Смысл взять из Videocard выбранную строчку
Обратитесь сначала к форме, а затем к компоненту.

Цитата Сообщение от Vergil Посмотреть сообщение
А как второй вариант сделать?
Я же написал:
Цитата Сообщение от MikeSoft Посмотреть сообщение
Второй вариант: объявить эту функцию в области public в классе формы.
Если вы не поняли, где это нужно писать - в заголовочном файле (*.h)
Сама функция тогда будет иметь вид:
C++
1
2
3
4
void TForm1::Save(TComboBox *Videocard)
{
  // действия
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.08.2010, 12:34

Игра Кости, игра с компьютером
Всем привет! Делаю консольную игру Кости. Условия такие: 1) Перед игрой все игроки бросают кость, первым начинает тот, у кого выпало...

До 25К с монитором, Unity и одна будущая игра
Доброго времени суток! Решил собрать компьютер за небольшие деньги с возможностью дальнейшего его &quot;допиливания&quot;. Задачи: ...

Бюджет 4500 гр. Конфигурация работа в Office, AutoCAD, игра Assassin, онлайн игра World of Tanks
Собираю компьютер для сестры. Основные требования: работа в Microsoft Office, AutoCAD, игра Assassin, онлайн игра World of Tanks ...

Игра в загадки. Загадать загадку. Если ответ верен – поздравить пользователя. Затем сообщить, что игра окончена.
Всем привет! Меня зовут VitoScaletta, совсем недавно начал обучаться JS, но очень тяжело в голову заходит информация, но я не сдаюсь! В...

Игра в «Одиннадцать предметов», игра Баше.
прошу помощи в создании программы! Разработать программную модель следующей игры двух игроков(пользователь-компьютер),реализовав...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Сезонность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения: - добавлена многоязычность - добавлено снятие скриншотов - добавлено поддержание бафов хождения по воде (для жреца, дк и шамана) - и так, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru