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

Создание Игры "Тир"

09.12.2013, 19:44. Показов 4342. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь создать игру "Тир".
И такой вопрос вот есть у меня мишень, и возможно ли как то сделать что бы при попадании в мишень очки добавлялись в label. (Тоисть попал в 9, 9 занеслась в label, попал в 5, в label к 9 дадется 5 и сумируется =14).
Миниатюры
Создание Игры "Тир"  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.12.2013, 19:44
Ответы с готовыми решениями:

Реализация игры "Тир"
Смысл игры, если коротко: на форму выводятся картинки разного размера и при нажатии на рисунок засчитывалась успешность попадания и...

ТИР!
Народ,приму в дар любой исходник сей игры.Win32 может у кого-нибудь завалялся?

тир
Здание сделать что-то вроде тира. У меня на форме есть пока что 2 изображения (одно как фон, оно есть постоянно, а другое должно...

11
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33398 / 21508 / 8236
Регистрация: 22.10.2011
Сообщений: 36,906
Записей в блоге: 12
09.12.2013, 20:00
C++
1
    Label1->Caption = IntToStr(Label1->Caption.ToInt() + score); // score - количество баллов за последний выстрел
Это надо было?
0
8 / 8 / 13
Регистрация: 31.10.2011
Сообщений: 294
09.12.2013, 20:06  [ТС]
Цитата Сообщение от UI Посмотреть сообщение
C++
1
    Label1->Caption = IntToStr(Label1->Caption.ToInt() + score); // score - количество баллов за последний выстрел
Это надо было?
Ну мишень у меня идет же как картинка.
Нужно на image создать OnClick и область для очков.. не розберусь как можно сделать...
0
192 / 128 / 52
Регистрация: 19.01.2010
Сообщений: 518
09.12.2013, 20:29
Лучше OnMouseDown. А там писать:
C++
1
2
3
4
5
6
void __fastcall TForm1::Image1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
        Edit1->Text = IntToStr(X);
        Edit2->Text = IntToStr(Y);
}
Тут в эдиты выводятся соответствующие координаты. Добавляешь свои условия на обработку этих координат и профит.
0
8 / 8 / 13
Регистрация: 31.10.2011
Сообщений: 294
09.12.2013, 20:46  [ТС]
Цитата Сообщение от Selot Посмотреть сообщение
Лучше OnMouseDown. А там писать:
C++
1
2
3
4
5
6
void __fastcall TForm1::Image1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
        Edit1->Text = IntToStr(X);
        Edit2->Text = IntToStr(Y);
}
Тут в эдиты выводятся соответствующие координаты. Добавляешь свои условия на обработку этих координат и профит.
Хм.. а каким же образом я создам обработку етих координат?
0
192 / 128 / 52
Регистрация: 19.01.2010
Сообщений: 518
09.12.2013, 21:01
Цитата Сообщение от HelloInside Посмотреть сообщение
Хм.. а каким же образом я создам обработку етих координат?
У тебя есть картинка. Тебе надо узнать в каких координатах этого Image располагается мишень. Например, самый центр мишени - это 10 очков, вот ты тыкаешь мышкой в самый центр, у тебя в эдитах появляются координаты этого центра. Дальше можешь отталкиваться от этих координат и посчитать радиус круга, за который дается 10 очков. Допустим, центр у тебя находится по координатам (100; 100), верхняя граница этого кружка находится по координатам (100; 105), получается радиус этого кружка = 5. Значит все "выстрелы", которые попадают в этот радиус будут давать 10 очков. Создаешь некую изначальную базу таких координат и соответствующие им очки, затем при выстрелах просто проверяешь условиями куда именно было попадание и сколько за это дается очков. Такая вот идея...
0
8 / 8 / 13
Регистрация: 31.10.2011
Сообщений: 294
10.12.2013, 01:34  [ТС]
Цитата Сообщение от Selot Посмотреть сообщение
У тебя есть картинка. Тебе надо узнать в каких координатах этого Image располагается мишень. Например, самый центр мишени - это 10 очков, вот ты тыкаешь мышкой в самый центр, у тебя в эдитах появляются координаты этого центра. Дальше можешь отталкиваться от этих координат и посчитать радиус круга, за который дается 10 очков. Допустим, центр у тебя находится по координатам (100; 100), верхняя граница этого кружка находится по координатам (100; 105), получается радиус этого кружка = 5. Значит все "выстрелы", которые попадают в этот радиус будут давать 10 очков. Создаешь некую изначальную базу таких координат и соответствующие им очки, затем при выстрелах просто проверяешь условиями куда именно было попадание и сколько за это дается очков. Такая вот идея...
Да но... вот радиус кола с "10 очками" например 5.
А вот радиус кола с "9 очками" например 10.
И если же я буду сторелять в "10" то радиус предыдущего кола тоисть "9" будет перекрывать радиус "10". Тоисть если оформить все так до еденицы, то в любом случае когда буду стрелять в мишень буду получать 1.
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
10.12.2013, 09:17
Цитата Сообщение от HelloInside Посмотреть сообщение
тоисть "9" будет перекрывать радиус "10"
Используйте вычитание.
0
 Аватар для Kulgar
511 / 196 / 26
Регистрация: 07.08.2013
Сообщений: 814
10.12.2013, 12:42
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Используйте вычитание.


HelloInside, Вы вообще не по-русски сформулировали свой вопрос. Из 1го сообщения получается у Вас сложности с вынесением общего результата стрельбы в Label. На поверку оказывается у Вас не решена задача определения результата стрельбы. Кою я предлагаю вынести в функцию и реализовать последовательностью 10ти вложенных условий, где для каждого условия по ветке else будет стоять return score. Сущность условий, думаю, понятна.
0
☆ Форумчанин(FSC)☆
 Аватар для 2ima
911 / 292 / 27
Регистрация: 28.04.2013
Сообщений: 2,466
Записей в блоге: 10
10.12.2013, 19:47
уже подобное делал в игре
могу кинуть если надо

Добавлено через 21 минуту
C++ Builder 6
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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "t.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "acPNG"
#pragma link "sButton"
#pragma link "sGauge"
#pragma resource "*.dfm"
TForm22 *Form22;
int och=0;
//---------------------------------------------------------------------------
__fastcall TForm22::TForm22(TComponent* Owner)
        : TForm(Owner)
{
MediaPlayer1->Visible=false;
MediaPlayer2->Visible=false;
MediaPlayer3->Visible=false;
}
//---------------------------------------------------------------------------
 
void __fastcall TForm22::Image2MouseUp(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
Image2->Picture->LoadFromFile("snork_prostr.png");
MediaPlayer1->FileName=("dr.wav");
MediaPlayer1->Open();
MediaPlayer1->Play();
sGauge1->Progress=sGauge1->Progress+10;
och=och+10;
Label2->Caption=och;
}
//---------------------------------------------------------------------------
void __fastcall TForm22::sButton1Click(TObject *Sender)
{
Form22->Close();
MediaPlayer2->Stop();
}
//---------------------------------------------------------------------------
void __fastcall TForm22::FormKeyUp(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
int iSpeed=20;
if(Key=='A'){Image3->Left-=iSpeed;}
if(Key=='D'){Image3->Left+=iSpeed;}
}
//---------------------------------------------------------------------------
void __fastcall TForm22::Image3MouseUp(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
Image3->Picture->LoadFromFile("snork_prostr.png");
Image2->Picture->LoadFromFile("snork.png");
Image4->Picture->LoadFromFile("snork.png");
Image5->Picture->LoadFromFile("snork.png");
MediaPlayer1->FileName=("dr.wav");
MediaPlayer1->Open();
MediaPlayer1->Play();
sGauge1->Progress=sGauge1->Progress+10;
och=och+10;
Label2->Caption=och;
}
//---------------------------------------------------------------------------
void __fastcall TForm22::Image5MouseUp(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
Image5->Picture->LoadFromFile("snork_prostr.png");
Image2->Picture->LoadFromFile("snork.png");
Image3->Picture->LoadFromFile("snork.png");
Image4->Picture->LoadFromFile("snork.png");
MediaPlayer1->FileName=("dr.wav");
MediaPlayer1->Open();
MediaPlayer1->Play();
sGauge1->Progress=sGauge1->Progress+10;
och=och+10;
Label2->Caption=och;
}
//---------------------------------------------------------------------------
void __fastcall TForm22::Image4MouseUp(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
Image4->Picture->LoadFromFile("snork_prostr.png");
Image2->Picture->LoadFromFile("snork.png");
Image3->Picture->LoadFromFile("snork.png");
Image5->Picture->LoadFromFile("snork.png");
MediaPlayer1->FileName=("dr.wav");
MediaPlayer1->Open();
MediaPlayer1->Play();
sGauge1->Progress=sGauge1->Progress+10;
och=och+10;
Label2->Caption=och;
if(och=200){MediaPlayer3->FileName=("champ.wav");
MediaPlayer3->Open();
MediaPlayer3->Play();}
}
//Доб. крут. муз.+еще тварей+оруж.(комната)
//---------------------------------------------------------------------------
 
 
 
 
 
void __fastcall TForm22::Image1MouseUp(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
MediaPlayer1->FileName=("dr.wav");
MediaPlayer1->Open();
MediaPlayer1->Play();
sGauge1->Progress=sGauge1->Progress-10;
}
//---------------------------------------------------------------------------
Также в добавок к лабелу gauge

Добавлено через 22 минуты
отсюда Игра Weapon of The Future

Добавлено через 21 минуту
По теме тира меня интересует больше визуальная оружка в руках....
1
0 / 0 / 0
Регистрация: 13.01.2016
Сообщений: 1
13.01.2016, 23:22
HelloInside, можешь скинуть пример игры сам исходник?
0
0 / 0 / 0
Регистрация: 06.11.2016
Сообщений: 1
16.11.2016, 11:29
Привет, тоже парюсь по курсовику тир на с++, можешь ли скинуть исходники?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.11.2016, 11:29
Помогаю со студенческими работами здесь

тир
В тире имеется 5 различных по точности боя винтовок. Вероятность попадания в мишень для данного стрелка соответственно равна 0,5; 0,55;...

Тир
На форму нашёл готовый тир, который так же делал один из модераторов, но как вместо этого смайлика, загрузить картинку, и чтобы клик шёл...

Тир
Здравствуйте, может кто нибудь объяснить как решить данную задачку. Какой же студент не любит сбросить напряжение после сессии!!...

Тир
Илларион шел из школы мимо тира и решил зайти пострелять. Однако в тире кончились мишени и Илларион дал инструктору листок из тетради по...

ТИР
Напишите программу Тир. В ее окне случайным образом должна &quot;прыгать&quot; цель, например веселая рожица (рис. 1.25), на которой пользователь...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru