Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
8 / 8 / 1
Регистрация: 23.09.2009
Сообщений: 134

Написание в билдере игры ЧИСЛО

27.04.2011, 22:21. Показов 2285. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собрался писать игру. Начинаю с нуля. Игры не писал. Только приложения мелкие. Что использовать, как лучше реализовать?
Жду от вас всё что мне поможет.

Вот создал тему конкретно в разделе для игр. Там дано описание игры.
https://www.cyberforum.ru/grap... ost1594185

Жду вашей помощи. Заранее спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.04.2011, 22:21
Ответы с готовыми решениями:

Написание в билдере игры МАНКАЛА
День добрый. Очень нужна помощь. С Билдером знаком, но игры не писал никогда. Пишу игру. Попытался поискать исходники для неё -...

Написание программы игры "Угадай число"
Написать программу игры "Угадай число". Правила игры следующие: Играют двое, один задумывает число, второй-угадывает. На каждом шаге...

Написание игры "Угадай число"
Случайным образом генерируется целое число, его поначалу не видно. Затем пользователь называет различные числа, программа определяет больше...

18
Тутошний я
 Аватар для Grey
2147 / 1202 / 225
Регистрация: 03.11.2009
Сообщений: 4,424
Записей в блоге: 2
27.04.2011, 23:40
Цитата Сообщение от Sven_0007 Посмотреть сообщение
Что использовать, как лучше реализовать?
Мне проще всё это в image отрисовать, а движок самому собрать.
А правила поподробней можно узнать? Кто, когда и на сколько раскладывают?
И что те цифры обозначают?
0
59 / 59 / 19
Регистрация: 13.07.2009
Сообщений: 184
29.04.2011, 09:17
Лучше конечно в эдит, красивее будет. Но можно даже в StringGrid чтоб попроще было.
0
Тутошний я
 Аватар для Grey
2147 / 1202 / 225
Регистрация: 03.11.2009
Сообщений: 4,424
Записей в блоге: 2
01.05.2011, 12:55
Только перетаскивание и отрисовка поля.
C++
1
2
3
4
5
Unit1.h
//-----------
public:     // User declarations
        __fastcall TForm1(TComponent* Owner);
        void  FormZagruzka();
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
Unit1.cpp
//-----------
TForm1 *Form1;
int pole[7][5]={{20,0,-1,10,10}, //20-синии, 10-красные
                {20,0,-1,10,10}, //0-пустые, -1-запрещённые
                {20,20,-1,10,10},
                {20,20,-1,10,10},
                {20,20,-1,10,10},
                {20,20,-1,0,10},
                {20,20,-1,0,10}};
int x,y,igrok=0;//кординаты и значение переносимого камня
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Form1->DoubleBuffered=true;
Image1->Canvas->MoveTo(50,0);//Image 350*450
Image1->Canvas->LineTo(50,350);
Image1->Canvas->MoveTo(400,0);
Image1->Canvas->LineTo(400,350);
FormZagruzka();
}
//перерисовка поля----------------------------------------------------------
void TForm1::FormZagruzka()//void  FormZagruzka();
{
for (int i=0;i<7;i++)
{
  for (int j=0;j<5;j++)
  {
    switch(pole[i][j])
    {
      case -20: Image1->Canvas->Brush->Color=(TColor)RGB(150,150,255);
                Image1->Canvas->Ellipse(i*50+51,j*50+1,i*50+50+48,j*50+48); break;
      case -10: Image1->Canvas->Brush->Color=(TColor)RGB(255,150,150);
                Image1->Canvas->Ellipse(i*50+51,j*50+1,i*50+50+48,j*50+48); break;
      case 0: Image1->Canvas->Brush->Color=(TColor)RGB(255,255,255);
              Image1->Canvas->FillRect(Rect(i*50+51,j*50+1,i*50+50+48,j*50+48)); break;
      case 10: Image1->Canvas->Brush->Color=(TColor)RGB(255,00,00);
               Image1->Canvas->Ellipse(i*50+51,j*50+1,i*50+50+48,j*50+48); break;
      case 20: Image1->Canvas->Brush->Color=(TColor)RGB(00,00,255);
               Image1->Canvas->Ellipse(i*50+51,j*50+1,i*50+50+48,j*50+48); break;
    }
  }
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
x=(X-50)/50;
y=Y/50;
if (pole[x][y]>5)
{
  igrok=pole[x][y];//запоминаем значение
  pole[x][y]=-pole[x][y];//и меняем ...
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
 
if (Shift.Contains(ssLeft))
{
Image1->Canvas->Brush->Color=(TColor)RGB(255,255,255);//
Image1->Canvas->FillRect(Rect(51,0,398,350));//очищаем поле
FormZagruzka();// перерисовываем
  switch(igrok)//рисуем переносимый камень
  {
    case 10: Image1->Canvas->Brush->Color=(TColor)RGB(255,00,00); Image1->Canvas->Ellipse(X-24,Y-24,X+24,Y+24); break;
    case 20: Image1->Canvas->Brush->Color=(TColor)RGB(00,00,255); Image1->Canvas->Ellipse(X-24,Y-24,X+24,Y+24); break;
  }
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
x=(X-50)/50;
y=Y/50;
if (pole[x][y]==0)//если ячейка пустая
{
  pole[x][y]=igrok;//заполняем
  for (int i=0;i<5;i++)
  {
   for (int j=0;j<7;j++)
   {
     if (pole[j][i]<-5) pole[j][i]=0;//и очищаем где стояла
   }
  }
}
else        //иначе
{
  for (int i=0;i<5;i++)
  {
   for (int j=0;j<7;j++)
   {
     if (pole[j][i]<-5) pole[j][i]=igrok;//ставим назад
   }
  }
}
Image1->Canvas->Brush->Color=(TColor)RGB(255,255,255);
Image1->Canvas->FillRect(Rect(51,0,398,350));
FormZagruzka();
igrok=0;
}
0
8 / 8 / 1
Регистрация: 23.09.2009
Сообщений: 134
04.05.2011, 10:15  [ТС]
Спасибо вам большое. Я и не ожидал что сразу так помогут =)
Я поговорил о задании и вот что получается:
Начальная расстановка как на картинке.
Берутся камни из любой своей. и раскладываются по часовой относительно играющего. а в зависимости от того где последний камень то там по пунктам что выше идут последствия.

Добавлено через 24 минуты
Вот таки ошибки =(
[BCC32 Error] Unit1.cpp(28): E2451 Undefined symbol 'Image1'
[BCC32 Error] Unit1.cpp(43): E2451 Undefined symbol 'Image1'
[BCC32 Error] Unit1.cpp(60): E2316 '_fastcall TForm1::Image1MouseDown(TObject *,TMouseButton,TShiftState,int,int)' is not a member of 'TForm1'
[BCC32 Error] Unit1.cpp(72): E2316 '_fastcall TForm1::Image1MouseMove(TObject *,TShiftState,int,int)' is not a member of 'TForm1'
[BCC32 Error] Unit1.cpp(89): E2316 '_fastcall TForm1::Image1MouseUp(TObject *,TMouseButton,TShiftState,int,int)' is not a member of 'TForm1'
0
Now I Matrix
137 / 134 / 28
Регистрация: 01.03.2010
Сообщений: 223
04.05.2011, 16:12
А Image на форму кинуть кто не позволяет?
Потом в инспекторе объектов во вкладке Events создать события onMouseDown, onMouseMove, onMouseUp
1
8 / 8 / 1
Регистрация: 23.09.2009
Сообщений: 134
04.05.2011, 19:23  [ТС]
Ясненько =)
А можно картинки которые использовались ? или размеры которыми их надо рисовать.
0
Тутошний я
 Аватар для Grey
2147 / 1202 / 225
Регистрация: 03.11.2009
Сообщений: 4,424
Записей в блоге: 2
05.05.2011, 01:57
Круги, 50*50 пикселей, сама программа рисует. Больше ни какие картинки не вставлял.
1
8 / 8 / 1
Регистрация: 23.09.2009
Сообщений: 134
11.05.2011, 21:23  [ТС]
Получило продолжение =)
Я не понял этот код немного. Так круги программа сама рисует или надо что то ей дать или подключить какие то модули?

И как я понял суть в том что надо где то находить исходник этой игры. Потому что нужен алгоритм выигрыша. Конечно можно сделать так что программа выбирает любую клетку откуда брать камни и раскладывает их и так далее, но новое условие появилось надо что был уровень сложности в игре. Получается программа должна выбирать лучший вариант для хода и в зависимости от уровня сложности что то будет изменяться в выборе.
0
Тутошний я
 Аватар для Grey
2147 / 1202 / 225
Регистрация: 03.11.2009
Сообщений: 4,424
Записей в блоге: 2
11.05.2011, 23:35
Я не понял этот код немного. Так круги программа сама рисует или надо что то ей дать или подключить какие то модули?
Программа сама рисует круги
C++
1
2
3
case 10: Image1->Canvas->Brush->Color=(TColor)RGB(255,00,00);//цвет круга//синий 
          Image1->Canvas->Ellipse(X-24,Y-24,X+24,Y+24);//рисование круга
          break;
И как я понял суть в том что надо где то находить исходник этой игры. Потому что нужен алгоритм выигрыша.
Это весь код. Только перетаскивание и отрисовка кругов.
Я не делал алгоритм выигрыша. Я правила не понимаю как в неё играть.
Получается программа должна выбирать лучший вариант для хода и в зависимости от уровня сложности что то будет изменяться в выборе.
Это нужно бота делать. Идеи есть?
0
8 / 8 / 1
Регистрация: 23.09.2009
Сообщений: 134
12.05.2011, 00:06  [ТС]
Цитата Сообщение от Grey Посмотреть сообщение
Программа сама рисует круги
C++
1
2
3
case 10: Image1->Canvas->Brush->Color=(TColor)RGB(255,00,00);//цвет круга//синий 
          Image1->Canvas->Ellipse(X-24,Y-24,X+24,Y+24);//рисование круга
          break;
Это весь код. Только перетаскивание и отрисовка кругов.
Я не делал алгоритм выигрыша. Я правила не понимаю как в неё играть.

Это нужно бота делать. Идеи есть?
Понять то я понял что нет алгоритма. А программа не запускается все ровно. . .Если тебе не сложно кинь архивчик с файлами что написал если не удалил.

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

Мне надо что то типа того. Но непонятно как придумать. Надо сваять настаящюю такую игру и заставить когонить поиграть. и посмотреть выигрышную тактику
0
Тутошний я
 Аватар для Grey
2147 / 1202 / 225
Регистрация: 03.11.2009
Сообщений: 4,424
Записей в блоге: 2
12.05.2011, 01:34
Держи
Вложения
Тип файла: zip Игра число.zip (239.8 Кб, 22 просмотров)
1
8 / 8 / 1
Регистрация: 23.09.2009
Сообщений: 134
12.05.2011, 14:36  [ТС]
Интересно получилось =)
Я вот тоже немного накатал. Только проблема получается. Мне нужны глобальные переменные, но они что то не так работают они. . .
Пошаговая инструкция создания глобальной переменной.

А вот файлы что сделал.
Вложения
Тип файла: rar cislo.rar (3.95 Мб, 13 просмотров)
0
8 / 8 / 1
Регистрация: 23.09.2009
Сообщений: 134
12.05.2011, 15:05  [ТС]
Ещё интересно как убрать в stringgrid выделения самого первого элемента. Я для игрока_ПК сделал поле которое не может трогать игрок. Но там выделяется первый элемент синим цветом. Как это убрать?

Добавлено через 4 минуты
Нашёл. DeafaulDrawing
0
8 / 8 / 1
Регистрация: 23.09.2009
Сообщений: 134
12.05.2011, 22:45  [ТС]
DeafaulDrawing работает по другому. Не как не могу убрать этот назойливый синий квадрат у игрока_компа.
Вот что теперь у меня. Многое переделал.
Вложения
Тип файла: rar cislo2.rar (6.3 Кб, 10 просмотров)
0
8 / 8 / 1
Регистрация: 23.09.2009
Сообщений: 134
13.05.2011, 00:08  [ТС]
В итоге идёт прогресс небольшой. Сделал откат хода. Небольшие изменения.
Но не как не избавился от глупого синего квадрата фокуса в поле игрока компа. . .
В общем вот:
Вложения
Тип файла: rar cislo3.rar (6.8 Кб, 12 просмотров)
0
8 / 8 / 1
Регистрация: 23.09.2009
Сообщений: 134
13.05.2011, 21:09  [ТС]
В поисках алгоритма мне помогли и наткнулись вот на эти игры. Bantumi или Манкала что скажите? похожи =)

Добавлено через 6 минут

Не по теме:

Что то в последнее время я стал больше сам с собой разговаривать. . . Пугает. . .

0
8 / 8 / 1
Регистрация: 23.09.2009
Сообщений: 134
13.05.2011, 22:49  [ТС]
Продолжаю делать эту игру =) Сделал разложения пользователем. Теперь надо по правилам прописать отъём камней у противника =)
Вложения
Тип файла: rar cislo4.rar (7.4 Кб, 17 просмотров)
0
8 / 8 / 1
Регистрация: 23.09.2009
Сообщений: 134
14.05.2011, 18:52  [ТС]
Опа Опа. . . Проблема. Появления в ячейках поля происходит после выполнения всей функции? то есть если я изменил 5 ячеек то они изменятся на мониторе только как функция закончит работу?

И тогда получается задержка перед изменением не поможет в функции. . .
Значит получается надо делать отдельную функцию типа передвижение на одну клетку? или что?
Просто хочу сделать задержку появления камня в ячейке. Чтоб как бы раскладывалось, а не появлялось сразу всё. . .

Добавлено через 19 часов 40 минут

Не по теме:

1998 (206 пользователей, 1773 гостей и 19 поисковых ботов)
Пользователи: 160,574

И все молчат не кто не отвечает. . . Только Grey Помогал и заинтересовался этой темой.



Все вопросы вроде решены, новых нет. Остался только про интеллект противника.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.05.2011, 18:52
Помогаю со студенческими работами здесь

Написание игры "виселица" или любой другой не сложной игры
нужна помощь в написании игры &quot;виселица&quot; или любой другой не сложной игры на с# по сети

Написание игры
Здравствуйте хочу заказать написание игры на Haskell. Игра Охота на лис (логическая игра)

Написание игры
Как можно реализовать игру. Выложил в приложении фрагментик.

Написание игры.
Здраствуйте! Нужна помощь в написании игры на ТурбоПаскале. В игруху нужно вписать пушку, которая будет двигатся по окружности, но у меня...

Написание 2d игры
Здравствуйте, мне нужно написать свою 2d игру Марио на Qt. OpenGL не хочу использовать. Какие библиотеки подойдут для более-менее...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru