Как создать программу на C ++ для запуска на рабочем столе и использовать растровые изображения во время выполнения из папки, указанной программистом? - PullRequest
1 голос
/ 23 марта 2012

Я новичок на этом сайте и программирую, поэтому, пожалуйста, прости меня, если я нарушу какие-либо правила или покажу глупость.Теперь я сказал, что

Недавно мы должны были создать программу в моем классе cs1 (введение в c ++), имитирующую игру в блэкджек, используя растровые изображения для отображения карт в графическом окне.Теперь я хочу запустить программу как исполняемый файл на моем рабочем столе.Однако, когда я помещаю исполняемый файл на рабочий стол из папки проекта отладки и запускаю его, программа вылетает, потому что не может найти растровые изображения.Любое предложение о том, как это сделать, но есть папка растровых изображений в другом месте?Программа прекрасно работает в компиляторе, который я использую, Microsoft Visual C ++ 2008 Express Edition.Заранее благодарю за любую помощь!

Редактировать: Я загрузил исходный код в вопросе.Я бы загрузил всю программу, но программа близка к 500 строкам ...

Она прекрасно работает в компиляторе, но как только я перемещаю exe из папки проекта, программа не может найти bmps.Мы должны использовать функцию displayCard () для отображения карты.Это вызывает проблему, так как я не знаю, как это работает (кроме реализации функции в коде), поскольку это происходит из файлов GLUT, которые мы должны были добавить в Visual Studio.

//Display graphics of the cards according to the x/y coordinates and the assigned  card values from the deal function.
void displayCard(int card, int x, int y)
{
switch (card)
{
    case 2 : displayBMP("h2.bmp", x, y);
             break;
    case 3 : displayBMP("h3.bmp", x, y);
             break;
    case 4 : displayBMP("h4.bmp", x, y);
             break;
    case 5 : displayBMP("h5.bmp", x, y);
             break;
    case 6 : displayBMP("h6.bmp", x, y);
             break;
    case 7 : displayBMP("h7.bmp", x, y);
             break;
    case 8 : displayBMP("h8.bmp", x, y);
             break;
    case 9 : displayBMP("h9.bmp", x, y);
             break;
    case 10 : displayBMP("h10.bmp", x, y);
              break;
    case 11 : displayBMP("hj.bmp", x, y);
              break;
    case 12 : displayBMP("hq.bmp", x, y);
              break;
    case 13 : displayBMP("hk.bmp", x, y);
              break;
    case 14 : displayBMP("ha.bmp", x, y);
              break;
}
} 

Ответы [ 2 ]

1 голос
/ 23 марта 2012

Вам необходимо правильно указать путь к растровым изображениям в вашей программе. Если это относительный путь, такой как .. \ bitmaps, вы должны поместить растровые изображения в папку, где находится ваш exe-файл.

Я бы предложил иметь файл конфигурации и указать там путь к растровым изображениям.

Другая альтернатива - загрузить растровые изображения в файл ресурсов и прочитать их оттуда.

0 голосов
/ 23 марта 2012

В вашей программе должна быть строка кода, которая загружает растровые изображения из указанной папки (пути) в память. Относительный путь - это путь относительно рабочего каталога пользователя или приложения, поэтому полный абсолютный путь указывать не нужно. 1) Если используется его относительный путь, поместите все, т.е. exe, файлы ресурсов и т. Д. В одну и ту же папку.

2) Если это жестко закодированный путь, вы должны поместить вспомогательные файлы, такие как растровые изображения, в этот путь.

3) А поскольку вы используете Visual Studio, вы можете фактически размещать растровые изображения в качестве файлов ресурсов. для этого вы идете, чтобы добавить ресурс. Вы можете прочитать об этом в MSDN .

4) Лучше всего использовать файлы конфигурации. их проще изменить и использовать.

EDIT: Вместо: displayBMP("name_of_image", x, y);
Использование: displayBMP("path_of_image", x, y); например, путь: c:\abc\xyj.bmp

...