С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.53/55: Рейтинг темы: голосов - 55, средняя оценка - 4.53
 Аватар для Luntegg
8 / 8 / 1
Регистрация: 06.02.2010
Сообщений: 87

Разработка "игры" для зачета

08.02.2010, 17:14. Показов 11998. Ответов 77
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Идея такова: есть автобус, он ездит и собирает людей по остановкам, по дороге самособой. Кругом ездят другие машины. Когда автобус доезжает до края экрана появляется новая локация и т.д. Пока все что успел: более менее настроить управление. Вот полный код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
//---------------------------------------------------------------------------
 
#include <vcl.h>
#include "myclasses.cpp"
#pragma hdrstop
 
#include "mmsystem.h"
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
//DWORD fdwSound = SND_ASYNC | SND_FILENAME;
//HWND cur;
TForm1 *Form1;
 
Graphics::TBitmap*back;//Задний буффер
Graphics::TBitmap*bus;//Задний буффер
float X,Y,start=0,angle,speed=0,RotSpeed=2;
const float M_RAD_CONV=M_PI/180.0;//Для преобразований градусов и радианов
bool flag[4];
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
//PlaySound("con_attack3.wav",NULL, fdwSound);
 
/*cur=LoadImage(0,"arrow.cur",IMAGE_CURSOR,0,0,LR_LOADFROMFILE);
if (cur==0)
    ShowMessage("Ошибка загрузки курсора!");
else
{
  Screen->Cursors[1]=cur;
  Form1->Cursor=1;
} */
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
back=new Graphics::TBitmap();
back->Width=Form1->Width;
back->Height=Form1->Height;
bus=new Graphics::TBitmap();
bus->LoadFromFile("bus.bmp");
X=100;
Y=100;
angle=10;
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
back->Canvas->FillRect(Rect(0,0,back->Width,back->Height));//Очищаем задний буффер
RotateDC(back->Canvas->Handle,angle);
SetViewportOrgEx(back->Canvas->Handle,X,Y,NULL);//Смещаем нашу точку
back->Canvas->Draw(-33,-31,bus);
 
SetViewportOrgEx(back->Canvas->Handle,0,0,NULL);//Смещаем нашу точку назад
RotateDC(back->Canvas->Handle,0);
Form1->Canvas->Draw(0,0,back);//И рисуем все на экран - "обновление экрана"
 
X+=cos(M_RAD_CONV*angle)*speed;
Y+=sin(M_RAD_CONV*angle)*speed;
if(X<-50)X=Form1->Width+50;
if(Y<-50)Y=Form1->Height+50;
if(X>Form1->Width+50)X=-50;
if(Y>Form1->Height+50)Y=-50;
 
if (flag[1]==1 && start<10){
    start=start+0.1;
}
if (flag[1]==0 && start>0){
    start=start-0.05;
    if (start<0){
    start=0;
    }
}
if (flag[3]==0 && start<0){
    start=start+0.05;
    if (start>0){
    start=0;
    }
}
if (flag[3]==1 && start>-3){
    start=start-0.1;
}
if (flag[1]==1 || flag[1]==0){
    speed=start;
}
if (flag[3]==1 && flag[0]==0 && flag[2]==0){
    speed=start;
}
if (flag[0]==1 && flag[3]==0 && flag[2]==0 && start!=0){
    angle-=RotSpeed;
}
if (flag[2]==1 && flag[0]==0 && flag[3]==0 && start!=0){
    angle+=RotSpeed;
}
if (flag[3]==1 && flag[0]==1){
    speed=start;
    angle+=RotSpeed;
}
if (flag[3]==1 && flag[2]==1){
    speed=start;
    angle-=RotSpeed;
}
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
if (Key==37){
    flag[0]=1;
}
if (Key==38){
    flag[1]=1;
}
if (Key==39){
    flag[2]=1;
}
if (Key==40){
    flag[3]=1;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormKeyUp(TObject *Sender, WORD &Key, TShiftState Shift)
{
if (Key==37){
    flag[0]=0;
}
if (Key==38){
    flag[1]=0;
}
if (Key==39){
    flag[2]=0;
}
if (Key==40){
    flag[3]=0;
}
}
//---------------------------------------------------------------------------
Все постепенно будет делаться. Вот только возник вопрос: как создать машины другие (канвасом или имейджем), которые будут ездить по своему заданному маршруту, и как их ПЕРЕМЕЩАТЬ. Желательно пример. Если есть другие полезные готовые функции, подходящие сюда, буду рад
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.02.2010, 17:14
Ответы с готовыми решениями:

задачка для зачета
Движение закрашенного круга по синусоиде из левого нижнего угла экрана в правый верхний угол.

Решите для зачета,очень срочно.!!!!!!
Дано целое число,больше 999.Используя одну операцию деления нацело и одну операцию взятия остатка от деления,найти цифру,соответствующую...

Строки, надо для зачета срочно
Помогите написать код срочно надо для зачета. Часто встречающаяся ошибка начинающих наборщиков – дважды записанное слово. Обнаружить и...

77
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
08.02.2010, 17:26
Другие машины лучше создавать при помощи Canvas. TImage тоже можно, но это будет слишком накладно. Если 3-5 машин, то еще можно использовать, а если 50+ машин , то вообщем понятно.

Добавлено через 1 минуту
А еще советую почитать "Создание 2-d игры" здесь же на форуме. Там все хорошо описыватеся и примеров достаточно.
Создание игры(2d)
2
 Аватар для Luntegg
8 / 8 / 1
Регистрация: 06.02.2010
Сообщений: 87
08.02.2010, 17:26  [ТС]
Тоже так считаю, но на паре сидел, думал... Не понял в общем как это сделать... Знаю как рисовать, а вот как картинку перемещать, по координатам... Можно простой пример?

Читал, вроде ничего не подходит... Покопаюсь получше.
0
говнокодер
 Аватар для sh4d°_°ff
1273 / 297 / 35
Регистрация: 31.10.2009
Сообщений: 1,432
08.02.2010, 17:32
Другие машины лучше создавать при помощи Canvas. TImage тоже можно, но это будет слишком накладно. Если 3-5 машин, то еще можно использовать, а если 50+ машин , то вообщем понятно.
мб ошибаюсь, но имхо гон... на канве ведь мы тоже битмап рисуем.. если зафлудить окно... кружками (у меня было 1000+ (прога у меня на сайте на старом.. Reflex)) то ничерта не будет...
короче вот пример - движение самолетика по канве... ф помощь (из учебника Культина).. и не забудь про transparent colors
Вложения
Тип файла: 7z Poliet v oblakah 2 2.7z (75.9 Кб, 182 просмотров)
1
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
08.02.2010, 17:42
sh4d°_°ff, это само собой (Я про битмап на канве). Просто как я понял он хочет для каждой отдельной машины создавать TImage.

Добавлено через 1 минуту
Кстати, помню я этот учебник "Культина" - ничему хорошему по нему не научился. Может глуп и не терпелив был, а может учебник сам... не очень хороший.
0
 Аватар для Luntegg
8 / 8 / 1
Регистрация: 06.02.2010
Сообщений: 87
08.02.2010, 17:43  [ТС]
Угу, так и думал
Нужно же все варианты рассмотреть. Надо найти еще разных машин... Выдрать из GTA London...
0
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
08.02.2010, 17:45
И Luntegg, в "Создании 2D игры" как раз все подробно описано: и движение обьектов. И перемещение, в общем почитай не ленись. Даже если ничего для себя полезного не найдешь, то в голове хоть что-нибудь останется. А знания, как говорится, лишними не бывают.
0
 Аватар для Luntegg
8 / 8 / 1
Регистрация: 06.02.2010
Сообщений: 87
08.02.2010, 17:47  [ТС]
Хорошо, спасибо, буду пробовать!
0
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
08.02.2010, 17:48
Уууу, парень ты загнул. Машины выдрать из GTA London. Ты лучше больше времени потрать на сам код, а о графике в последнюю очередь думай. Машины можно просто и разноцветными прямоугольниками заменить, а код...
0
 Аватар для Luntegg
8 / 8 / 1
Регистрация: 06.02.2010
Сообщений: 87
08.02.2010, 17:50  [ТС]
Не вижу ничего сложного в том, чтобы например заскринить игру, и вырезать тачки в фотошопе. К тому же игру делаем вдвоем, и к маю успеем точно
0
говнокодер
 Аватар для sh4d°_°ff
1273 / 297 / 35
Регистрация: 31.10.2009
Сообщений: 1,432
08.02.2010, 17:51
Цитата Сообщение от p_cM Посмотреть сообщение
sh4d°_°ff, это само собой (Я про битмап на канве). Просто как я понял он хочет для каждой отдельной машины создавать TImage
мм... кстати вот об этом.. их рекомендую грузить из ресурса... просто создать рес файл с дофигищей картинок и потом подгружать через битмап и перерисовывать на канву)

Не по теме:

насчет Культина...не могу сказать что либо однозначное... по нему классно начинать билдер изучать + куски кода есть интересные... но именно начинать... имхо



з.ы.: лол нафига так усложнять? скринить, фотожопить))) гугл + пейнт=имба
0
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
08.02.2010, 17:55
А вот с этим могу поспорить. Для меня лучше загружать все из картинок. Во-первых: Картинки всегда можно легко и быстро изменить, поменять цвет, размер и бла-бла-бла. Во-вторых доступ к res-файлу, как бы сказать, не самый удобный.

Добавлено через 52 секунды
"з.ы.: лол нафига так усложнять? скринить, фотожопить))) гугл + пейнт=имба"
Полностью согласен.
0
 Аватар для Luntegg
8 / 8 / 1
Регистрация: 06.02.2010
Сообщений: 87
08.02.2010, 17:59  [ТС]
Цитата Сообщение от sh4d°_°ff Посмотреть сообщение
з.ы.: лол нафига так усложнять? скринить, фотожопить))) гугл + пейнт=имба
в гугле ничего нет, как ток не искал... вида сверху машинок разных штук 15 не найти)

отдельно картинками действительно легче...
0
говнокодер
 Аватар для sh4d°_°ff
1273 / 297 / 35
Регистрация: 31.10.2009
Сообщений: 1,432
08.02.2010, 17:59
Цитата Сообщение от p_cM Посмотреть сообщение
А вот с этим могу поспорить. Для меня лучше загружать все из картинок. Во-первых: Картинки всегда можно легко и быстро изменить, поменять цвет, размер и бла-бла-бла. Во-вторых доступ к res-файлу, как бы сказать, не самый удобный.
нууу.. ресторатор надо иметь)))) так-то я тоже res'ами не пользуюсь, но такое бы писал именно так, кроме того, прикинь, вот он хочет "побольше" тачил замутить.. этож скока будет файлов в папке? а так все картинки в одном, компактненько... конечно дело вкуса... мона и в папку засунуть
0
81 / 39 / 3
Регистрация: 29.01.2010
Сообщений: 386
08.02.2010, 18:02
Хм. заинтересовала эта тема. Интересует - как сделать автобусам искусственный интеллект, чтобы они самостоятельно выбирали направление движения.
0
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
08.02.2010, 18:06
Цитата Сообщение от sh4d°_°ff Посмотреть сообщение
нууу.. ресторатор надо иметь)))) так-то я тоже res'ами не пользуюсь, но такое бы писал именно так, кроме того, прикинь, вот он хочет "побольше" тачил замутить.. этож скока будет файлов в папке? а так все картинки в одном, компактненько... конечно дело вкуса... мона и в папку засунуть
Если на то пошло sh4d°_°ff. То можно и в архив все данные запихнуть, кроме .exe файла, и оттуда их достовать и работать. Для меня главное чтобы было удобно, а не компактно.

Добавлено через 1 минуту
Цитата Сообщение от Luntegg Посмотреть сообщение
в гугле ничего нет, как ток не искал... вида сверху машинок разных штук 15 не найти)
А зачем отдельно 15 разных машинок? Бери 2-3 и просто перекрашивай их цвет.
0
говнокодер
 Аватар для sh4d°_°ff
1273 / 297 / 35
Регистрация: 31.10.2009
Сообщений: 1,432
08.02.2010, 18:08
Цитата Сообщение от @KOT@ Посмотреть сообщение
Хм. заинтересовала эта тема. Интересует - как сделать автобусам искусственный интеллект, чтобы они самостоятельно выбирали направление движения.
нууу.. автобусы обычно ездят по маршруту... ну простейшее что тут можно навскидку прикинуть... допустим у автобуса есть какой-то радиус "видимости" ("зрения") нууу.. и автобус едет в нужную сторону если в той стороне в поле его видимости попадает пассажир (или например останавливается если на "остановке" есть пассажир)...делается элементарно через if/else
Цитата Сообщение от p_cM Посмотреть сообщение
Если на то пошло sh4d°_°ff. То можно и в архив все данные запихнуть, кроме .exe файла, и оттуда их достовать и работать. Для меня главное чтобы было удобно, а не компактно.
я же сказал дело вкуса, да и от ситуации зависит))) а насчет ехе не понял... просто ресурсы обрабатывать удобно ресторатором и создавать.. а грузит то прога... как ей вытащишь картинки из ехе (если не ресторатор пишешь xDD)?
0
 Аватар для Luntegg
8 / 8 / 1
Регистрация: 06.02.2010
Сообщений: 87
08.02.2010, 18:09  [ТС]
А переход по локациям? Или где 2d игра это есть тоже?
0
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
08.02.2010, 18:11
Цитата Сообщение от Luntegg Посмотреть сообщение
А переход по локациям? Или где 2d игра это есть тоже?
Здесь можно по разному. К примеру создать одну большую локацию и просто премещать экран по ней. Второй вариант сделать много локаций и каждый раз загружать новую.
0
 Аватар для Luntegg
8 / 8 / 1
Регистрация: 06.02.2010
Сообщений: 87
08.02.2010, 18:11  [ТС]
там же просто все
if (остановка){
open door;
close door;}
if (нужный поворот){
руль вправо;}

светофоры и т.д.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.02.2010, 18:11
Помогаю со студенческими работами здесь

С++ Создать понятную программу с объяснениями ( для зачета)
На зачете по Основам объектно-ориентированного программирования получил незачет. Препод требует написать СОЛИДНУЮ,а также СЕРЬЕЗНУЮ...

Последние задание для зачета люди спасите ч.1
А15.1 Элемент ai арифметической прогрессии вычисляется по формуле: ai+1 = ai + d , i = 0,1,2, … Поле first – вещес- твенное число,...

Разработка 2д игры
Я знаю с++ и си.Хотела бы создать свою игру но не в виде консольного приложение.можете подсказать хорошие платформы для разработки 2д игры...

Разработка игры для Android
Всем доброго времени суток! Недавно (придумал) 2D игру , но реализовать её не могу т.к нооб :). Нужен какой-нибуть бесплатный движок для...

Разработка игры для Дипломной Работы
Здравствуйте, форумчане. Учусь на математическом факультете в КемГУ, на прикладной математике (3 курс). Пару месяцев назад загорелся...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru