2 / 2 / 0
Регистрация: 24.03.2011
Сообщений: 83

Как лучше всего реализовать игру пятнашки?

18.11.2011, 18:56. Показов 8096. Ответов 57
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне хотелось бы услышать советы по реализации такой игры. Интересует вопросы, как лучше сделать графическую часть? У меня есть идея по поводу создания на форме 16 кнопок, с возможностью загрузки в них картинок. Или есть более рациональные вариант? (Какой компонент использовать?).И по самой проге. Создвать двумерный массив 4х4 и все поля заполнить цифрами от 1 до 15 , а пустое поле оставить равным нулю, и после тапа на кнопку проверять, есть ли пустое поле рядом и менять их местами?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.11.2011, 18:56
Ответы с готовыми решениями:

Как лучше реализовать игру морсокой бой?
Как лучше реализовать игру морсокой бой? Как нарисовать поле 10 на 10 клеток

Как лучше всего реализовать настройки в программе?
Хочу грамотно сделать настройки для своей программы. Сейчас примерно так: программа создаёт объект класса Settings, там пользователь...

Что лучше всего читать/смотреть где лучше всего практиковаться и как в принципе лучше всего учиться программированию
Здравствуйте,извините за вопрос не по теме но: уже около пол года изучаю С языки и начал понимать что я упустил некоторые моменты,не...

57
2 / 2 / 0
Регистрация: 24.03.2011
Сообщений: 83
19.11.2011, 21:37  [ТС]
Студворк — интернет-сервис помощи студентам
Окей, я понял) Сейчас попробую) Спасибо)

Добавлено через 20 минут
И еще простенький вопрос, как очистить некую часть формы , если я все рисовал канвой?
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
19.11.2011, 22:03
Цитата Сообщение от Saub Посмотреть сообщение
И еще простенький вопрос, как очистить некую часть формы , если я все рисовал канвой?
Об использовании Canvas можешь почитать тут: Класс TCanvas.
ИМХО лучше всего очищать через WinApi:
C++
1
2
PatBlt(Canvas->Handle,X0,Y0,X1,Y1,WHITENESS);
// закрасит на форме квадрат белым цветом по координатам.
1
2 / 2 / 0
Регистрация: 24.03.2011
Сообщений: 83
20.11.2011, 10:00  [ТС]
я про класс TCanvas как раз и прочитал сегодня, без него бы не нарисовал я ничего.Спасибо.

Добавлено через 31 минуту
эм, а цвет обязательно белый или можно использовать стандартные цвета?

а все нашел)

Добавлено через 11 часов 9 минут
А как-нибудб можно очистить форму так, чтобы там остался стандартный фон, который был под картинкой?
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
20.11.2011, 10:03
Цитата Сообщение от Saub Посмотреть сообщение
А как-нибудб можно очистить форму так, чтобы там остался стандартный фон, который был под картинкой?
Прорисовывать повторно перед остальным, либо прорисовку "пятнашек" производить на Bitmap'е какого-нить TImage, либо использовать TPaintBox.
0
2 / 2 / 0
Регистрация: 24.03.2011
Сообщений: 83
20.11.2011, 11:34  [ТС]
эм, если я в качестве фона загружу в Image какое-нибудь изображение, то как мне потом очистить, чтобы остался фон в Image?
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
20.11.2011, 11:39
Перед прорисовкой элементов, вызвать Repaint() у Image.
0
2 / 2 / 0
Регистрация: 24.03.2011
Сообщений: 83
20.11.2011, 11:51  [ТС]
Хорошо, спасибо, я посмотрю.
P.S. Игру я написал, она вроде работает, осталось дизайн попроавить)

Добавлено через 9 минут
хм, я загрузил фон, но когда перерисовывваю поле, у меня ничего не происходит...
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
20.11.2011, 11:58
Так стоп... все-таки 2 суток на ногах дают о себе знать. Image нельзя использовать как фон, если вы на канве формы рисовкой занимаетесь (кроме использования WinApi, ему побоку он и на асфальте будет рисовать, если пропишите его хендл), Image просто все потрет своим величием. А вот наоборот милости просим. Но я бы рекомендовал просто на канве вначале фон рисовать (Canvas->Draw(0,0,Изображение). ), а потом прорисовывать ваши элементы.
0
2 / 2 / 0
Регистрация: 24.03.2011
Сообщений: 83
20.11.2011, 12:10  [ТС]
Сейчас посмотрю.

Добавлено через 8 минут
Сделал как в ссылке, которую Вы давали, но в итоге пишет, что не удается найти указанный файл либо просто не загружает изображение.
Code
1
2
3
Graphics::TBitmap* bit=new Graphics::TBitmap;    
bit->LoadFromFile("F:\\bitmap.bmp");      
Canvas->Draw(0,0,bit);
Добавлено через 1 минуту
В итоге просто не рисует..
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
20.11.2011, 12:11
Draw не прорисовыет BMP, используйте JPEG.
Так, все я кончился
Путь у вас не правильный был. А не прорисовывает видимо из-за того, что перекрываете его чем-то.
0
2 / 2 / 0
Регистрация: 24.03.2011
Сообщений: 83
20.11.2011, 12:24  [ТС]
эм, так, спасибо)

Добавлено через 7 минут
омг, почему путь не верный???
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
20.11.2011, 12:27
Цитата Сообщение от Saub Посмотреть сообщение
омг, почему путь не верный???
А почему птицы летают? Либо нужно проверить существует ли ваш битмап, либо параметр загрузки изображения не AnsiString и тогда нужно добавить символ окончания строки "\0";
0
2 / 2 / 0
Регистрация: 24.03.2011
Сообщений: 83
20.11.2011, 12:31  [ТС]
аа, путь верный и /0 не помог(
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
20.11.2011, 12:32
Эх. Ошибку в студию.
0
2 / 2 / 0
Регистрация: 24.03.2011
Сообщений: 83
20.11.2011, 12:38  [ТС]
Code
1
2
3
Graphics::TBitmap* bit=new Graphics::TBitmap;
bit->LoadFromFile("F:\\1.jpeg");
Canvas->StretchDraw(Rect(0,0,500,500),bit);
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
20.11.2011, 12:45
Цитата Сообщение от Saub Посмотреть сообщение
Code
1
2
3
Graphics::TBitmap* bit=new Graphics::TBitmap;
bit->LoadFromFile("F:\\1.jpeg");
Canvas->StretchDraw(Rect(0,0,500,500),bit);
Офигительная проверка зрения У меня все находит, только ругается на то, что я пытаюсь в Битмап JPEG засунуть. А в вашем случае зуб даю, что файл называется "1.jpg".
0
2 / 2 / 0
Регистрация: 24.03.2011
Сообщений: 83
20.11.2011, 12:59  [ТС]
да) 1.jpg, а должен быть 1.jpeg?

Добавлено через 38 секунд
1.jpg не открывает

Добавлено через 34 секунды
Bitmap image is not valid
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
20.11.2011, 12:59
Цитата Сообщение от Saub Посмотреть сообщение
да) 1.jpg, а должен быть 1.jpeg?
Если используете TBitmap, то должен быть BMP
0
2 / 2 / 0
Регистрация: 24.03.2011
Сообщений: 83
20.11.2011, 13:04  [ТС]
а в bmp банально не рисует

Добавлено через 1 минуту
А какой нужен класс для загрузки jpeg?
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
20.11.2011, 13:05
Цитата Сообщение от Saub Посмотреть сообщение
а в bmp банально не рисует
Опять переходим к коду. Маленький фрагмент прорисовка BMP + что-нибудь из ваших элементов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.11.2011, 13:05

Реализовать игру в пятнашки с консольным текстовым интерфейсом
Ребята. добрый день Нужна помощь. Реализовать игру в пятнашки с консольным текстовым интерфейсом на С#

Как лучше реализовать игру стандартными средствам SDK?
Пример игры на флеш во вложениях скинул

Как лучше всего реализовать данный слайдер
Всем доброго времени суток. Возник такой вопрос: как лучше всего реализовать данный слайдер??? Большим черным кругом обведен фон он...

Как лучше всего реализовать подключение к БД MySQL?
Я бы хотел спросить, как лучше всего реализовать подключение к БД? Сейчас я работают чисто возможностями интерфейса "средства -...

Как лучше всего реализовать такую задачу?
Есть 20 чекбоксов, и нужно сделать так что бы возможность клика по каждому чекбоксу зависила от того выбран ли предыдущий, то есть хочу...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Опции темы

Новые блоги и статьи
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru