Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.07.2009, 00:33   #1
Lazio
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 113
По умолчанию Игровое поле в C++ Builder.

Вот тут начал смотреть игрострой билдеровский относительно простые игры типа Филлер, Шашки, если сам игровой процесс мне понятен (по коду), то некоторые технические моменты напрягают:

1) Например у меня есть фаил с изображением шашечной доски, как мне сделать разметку(координаты) поля таким образом чтобы нажимаешь на опр. квадрат и тут какое то действие пошло.

2) как создать игровое поле (точнее нарисовать) ну например 10 на 10 квадратиками с рандомным заполнением цветов)

Кароч если кто понял мои проблемы или отпишите если что дельное знаете или дайте книгу только не сильно мутную и ещё про канву че нить дельное подкинет мож кто

Заранее благодарен)) Думаю в период каникул особо придираться никто не будет к темам

PS: мож у кого есть какая нибудь 2d игра с хорошим и понятным комментарием кода?
Lazio вне форума Ответить с цитированием
Старый 15.07.2009, 08:09   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,085
По умолчанию

Цитата:
Сообщение от Lazio Посмотреть сообщение
1) Например у меня есть фаил с изображением шашечной доски, как мне сделать разметку(координаты) поля таким образом чтобы нажимаешь на опр. квадрат и тут какое то действие пошло.
Тупо грузите в TImage файл и в OnMouseDown:
Код:
int col = x / size_x;
int row = y / size_y;
col, row - в какой квадрат ткнули.
x, y - параметрами передаются и означают координаты, в которую ткнули мышой
size_x, size_y - размер ячейки. Для квадрата соответственно Одинаковы их значения будут
Цитата:
Сообщение от Lazio Посмотреть сообщение
2) как создать игровое поле (точнее нарисовать) ну например 10 на 10 квадратиками с рандомным заполнением цветов)
Я в свое время для шашек использовал TDrawGrid. С ячейками уже заморачиваться не надо, механизмы клика по определенной ячейке и всё необходимое уже есть в этом контроле. Нужно только прорисовку нарисовать (если не изменяет память, то событие OnDrawCell должно быть для этого), а там хоть случайным цветом заливайте, хоть картинку рисуйте.
pu4koff вне форума Ответить с цитированием
Старый 15.07.2009, 18:31   #3
mazak
Пользователь
 
Аватар для mazak
 
Регистрация: 10.07.2009
Сообщений: 29
По умолчанию

в главном формуляре нужно добавить
#include <algorithm.h>
он нужен для рандомной функции

randomize();//такого вида

которая запускает генератор случайных чисел с каким-нибудь значением системного времени.
у вас есть массив наверно Pole[100];
тоесть вспомогательная переменная для покрытия поля

random_shuffle(Pole,Pole+100);

функция ожидающая как параметр верхнее и нежнее значение массива

Pole,Pole+100 почему именно так я точно не знаю

затем смешанные значения поля распределить по самому полю
через цикл

for (int i=0; i<10; i++)
for (int j=0; j<10; j++)

InitArray[i][j]=Pole[j*10+i];// передаем значения в массив где сохранены //все картинки и передвигаемся по полю каждый раз на одну клетку //дальше.
}

примерно так я думаю...
Благими намерениями вымощена дорога в ад

Последний раз редактировалось mazak; 15.07.2009 в 22:12.
mazak вне форума Ответить с цитированием
Старый 15.07.2009, 22:13   #4
Lazio
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 113
По умолчанию

спасибо за ответы) а StringGrid я так понял тоже для этих целей?
Lazio вне форума Ответить с цитированием
Старый 15.07.2009, 22:31   #5
mazak
Пользователь
 
Аватар для mazak
 
Регистрация: 10.07.2009
Сообщений: 29
По умолчанию

я взял для своих целей DrawGrid
кстати для меня стоило труда разобраться в передвижении по сетке:

по формуле j*10+i
0*10+0 =0 первая клетка
0*10+1 =1 вторая клетка
0*10+2 =2 третья клетка

и т.д.
Благими намерениями вымощена дорога в ад
mazak вне форума Ответить с цитированием
Старый 15.07.2009, 22:57   #6
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,085
По умолчанию

Цитата:
Сообщение от Lazio Посмотреть сообщение
спасибо за ответы) а StringGrid я так понял тоже для этих целей?
StringGrid - это DrawGrid + заточка под отображение строк в ячейках. Тут строки отображать не нужно, а потому ДравГрид лучше подходит. СтрингГрид больше для отображения каких-то табличных данных подходит.
pu4koff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
уменьшить на 1 в по поле gred Microsoft Office Access 0 19.06.2009 22:37
После ввода в поле по Enter нужно перейти на другое поле! •ScReam•™ Помощь студентам 2 16.06.2009 08:47
Вычисляемое поле goodwinrock БД в Delphi 5 30.01.2009 15:27
Игровое поле с шестиугольной "клеткой" Кронос Gamedev - cоздание игр: Unity, OpenGL, DirectX 1 21.11.2007 18:14
Поле Luciferium БД в Delphi 3 26.07.2007 14:23